- Home
- Categorie
- Coding e Sistemistica
- Coding
- conteggio giorni per compleanno
- 
							
							
							
							
							
conteggio giorni per compleannoSalve, 
 ho questo codice per calcolare i giorni rimanenti per il compleanno, funziona benissimo, il problema e che se lascio vuoto il campo "birthday" mi genera un errore[PHP] 
 <?php
 $birthday = $row['birthday'];// get date of birthday this calendar year // count day remaing for birthday 
 $parts = explode('-', $birthday, 2);
 $birth_date = new DateTime(date('Y') . '-' . $parts[1] .' 00:00:00');
 $today = new DateTime('midnight today');if ($birth_date < $today) { 
 // next birthday is in one year
 $birth_date->modify("+1 Year");
 }// get number of days days remaining 
 $diff = $birth_date->diff($today);if ($diff->days > 0) { 
 echo "There are " . $diff->days . " day remaining until your birthday.";
 } else {
 echo '<font color="blue">' . "Happy birthday!" . '</font>';
 }?> 
 [/PHP]ecco il codice errore Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (2019- 00:00:00) at position 4 (-): Unexpected character' in .... on line 239 line 239 [PHP] 
 $birth_date = new DateTime(date('Y') . '-' . $parts[1] .' 00:00:00');
 [/PHP]come fixare questo codice?:bho: 
 
- 
							
							
							
							
							Ciao Alex, devi fare due cose: - Non dare per scontato che $row["birthday"] sia valorizzato
 Cambia $birthday = $row['birthday']; con $birthday = isset($row['birthday']) ? $row['birthday'] : NULL; (Se lo script gira su PHP 7+ puoi abbreviare con: ) $birthday = $row['birthday'] ?? NULL; Questo ti permette di valorizzare la variabile con il suo valore se ne ha uno, altrimenti la setta a NULL. - Devi eseguire tutto il codice solo se $birthday non è NULL, racchiudi tutto dentro un if, il codice finale sarà:
 [PHP]<?php 
 $birthday = isset($row['birthday']) ? $row['birthday'] : NULL;
 if($birthday !== NULL){
 $parts = explode('-', $birthday, 2);
 $birth_date = new DateTime(date('Y') . '-' . $parts[1] .' 00:00:00');
 $today = new DateTime('midnight today');
 if ($birth_date < $today) {
 $birth_date->modify("+1 Year");
 }
 $diff = $birth_date->diff($today);
 if ($diff->days > 0) {
 echo "There are " . $diff->days . " day remaining until your birthday.";
 } else {
 echo '<font color="blue">' . "Happy birthday!" . '</font>';
 }
 }
 ?> [/PHP]
 
- 
							
							
							
							
							
Funziona perfettamente  
 avrei un'altra richiesta, vorrei visualizzare i compleanni della data corrente (se ci sono) o settimanale (se non presenti) degli attori nel mio database nella pagina iniziale, con queste specifiche:
 visualizzare
 nome
 eta'
 foto
 link alla scheda (id)
 questi i campi
 nome varchar(45) varchar(45)
 foto varchar(100)
 birthday datecome devo strutturare il codice?, non so' da dove cominciare per l'eta' ho questo code gia' postato in un altro thread [PHP] 
 <?php // code calcolo eta' by altraSoluzione by Ultima from forum GT$datanascita = $row['birthday']; $dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));?>[/PHP] Grazie Marco  
 
- 
							
							
							
							
							
con questo riesco ad estrarre i nomi [PHP] 
 <?phprequire_once("connetti.php");// just returns the actor having a birthday 
 function birthday_today() {
 $result = mysql_query("SELECTnomeFROMactorWHERE MONTH(birthday) = MONTH(NOW()) AND DAY(birthday) = DAY(NOW())");
 $actor = array();
 while ($row = mysql_fetch_assoc($result))
 $actor[] = $row['nome'];
 return $actor;
 }// make a unordered-list out of the actor having birthday 
 $ul = "<ul>";
 foreach(birthday_today() as $nome)
 $ul .= "<li>$nome</li>";
 $ul .= "</ul>";echo $ul; 
 ?>[/PHP] dovrei integrare adesso questo + l'eta' [PHP] 
 <td class="text-center"><?php if($row['foto'] != ""): ?>
 <img src="image_upload/actor/uploads/<?php echo $row['foto']; ?>" width="110px" height="130px" style="border:1px solid #333333;">
 <?php else: ?>
 <img src="image_upload/actor/images/nophoto170.png" width="100px" height="130px" style="border:1px solid;">
 <?php endif; ?></td><td class="text-left"><?php echo "<a href="cinema.php?id=" . $row['actor_id'] . "">" . $row['nome'] . "</a>";?></td> [/PHP] qualcuno mi aiuta?:?:bho: 
 
- 
							
							
							
							
							
risolto  
 
- 
							
							
							
							
							
risolto mah...vorrei visualizzare i risultati in ordine orizzontale, come fare? codice parziale [PHP] <div class="col-xs-12 col-sm-9"> 
 <div class="panel panel-default">
 <div class="panel panel-heading"><h3>Birthday from Today or 1 Week</h3></div><div class="padded-panel"><div class="row"><div class="col-sm-12"> <?php require_once("connetti.php");// just returns the actor having a birthday $query = mysql_query("SELECT * FROM actor WHERE(CASE 
 WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
 THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
 ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
 END)
 BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK) ORDER BY birthday asc ");
 while($row=mysql_fetch_array($query)){
 ?><div class="castbox"><p><?php echo '<img src="image_upload/actor/uploads/' . $row['foto'] . '" alt="" height="180" width="150"'?> <?php echo $row ['nome'] ?><br><?php echo "<a href="cinema.php?id=" . $row['actor_id'] . "">" ."<br>". $row['nome'] ."<br>". $row ['birthday'] . "</a>";?></a><br><i> [/PHP] adesso visualizzo cosi 