• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Php - Geburtstag

djfabi

Mitglied
Hallo,

Ich habe einen PHP script gemacht.

Der funktioniert aber nicht..

Also was er soll:

Er soll die Freunde des Users checken, ob sie heute geburtstag haben..

Das geht aber nicht, die Seite lädt lange und bricht dann ab, wegen Zeitüberschreitung von 30 Sekunden.

Hier mal der Code:
PHP:
<?php
$useridre = $_SESSION['userid'];
   $jetzt = time();	$hjahr = date("Y", $jetzt);	$hmonat = date("m", $jetzt);	$htag = date("d", $jetzt);

$gebi = 0;
$gebi_durch = 0;
while($gebi_durch = $gebi_durch + 1){
	$select_friends_gebi = mysql_query("SELECT user2 FROM friendships WHERE user1 = '".mysql_escape_string($useridre)."'");	$select_friends_fetch = mysql_fetch_object($select_friends_gebi);	$select_friends = htmlspecialchars($select_friends_fetch->user2);
	$gebi_check_mysql = mysql_query("SELECT * FROM user WHERE userid = '".mysql_escape_string($select_friends)."'");	$gebi_check_fetch = mysql_fetch_object($gebi_check_mysql);	$gebi_check_gtag = htmlspecialchars($gebi_check_fetch->geb_tag);	$gebi_check_gmon = htmlspecialchars($gebi_check_fetch->geb_mon);	$gebi_check_gjahr = htmlspecialchars($gebi_check_fetch->geb_jahr);
	if($gebi_check_gtag == $htag && $gebi_check_gmon == $hmonat){		$gebi = $gebi + 1;	}
}
$anzahl_gebi = $gebi;


?>



So, also erst werden in einer while() Schleife alle userid des Freundes selektiert, und dann der Geburtstag aus einer anderen Tabelle gezogen.

Dann wird noch geprüft ob das heute ist.

Aber wieso geht das nicht?

Bitte um schnelle Hilfe :)
 
Vermutlich weil Du bei der while-Schleife die Bedingung nie erfüllst. Allerdings ist diese Schleife gar nicht notwendig. Das kannst Du imho auch alles mit einem einzelnen SQL-Statement abfragen. Aus dem was ich in deinem Code sehe rate ich mal, dass dieses Statement so aussehen könnte:

PHP:
$sql = "SELECT * 
 FROM friendships f, users u 
 WHERE f.user1 = '".mysql_escape_string($useridre)."' 
  AND u.userid = f.user1 
  AND DATE_FORMAT(u.gebdat,'%Y%m%d') = DATE_FORMAT(NOW(),'%Y%m%d')";
 
Zurück
Oben