Veröffentlicht 9. Juli 200421 j Hallo zusammen, ich habe da mal eine Frage zu der mir unerschlossenen Welt des php (Und der Programmierung im allgemeinen ) Ich möchte gerne einen php echo (nennt man das so?) in zwei verschiedenen Farben ausgeben. Je nach einem Zeiteintrag in einer mySQL DB. Connect usw. steht soweit. Den Zeiteintrag kann ich auch schon ausgeben: <font color="red"> <?php $result1 = mysql_db_query("mysqldb","SELECT max( postdate) FROM tabelname WHERE `id` = '1' "); while($row1 = mysql_fetch_row($result1)) { echo strftime(" %d.%m.%Y %R", $row1[0]) ."Uhr"; } ?> </font> [/PHP] Wie Ihr seht, gebe ich das ganze in rot aus. Das Ergebnis aus der SQL Abfrage ist in diesem Unixzeitformat (z.B. 1089359482 ) Wie kann ich jetzt am besten die Ausgabe so steuern, das Einträge, die älter wie 2 Tage sind schwarz, neuere aber rot erscheinen? Also doch irgendwie unter Vergleich mit [CODE]gettimeofday()[/CODE] Nur die passende if clause fehlt mir. Kann mir jemand helfen? Gruß
9. Juli 200421 j <?php $now = mktime(); $result1 = mysql_db_query("mysqldb","SELECT max( postdate) FROM tabelname WHERE `id` = '1' "); while($row1 = mysql_fetch_row($result1)) { // Sekunden Pro Tag: 86400 // 2 Tage: 172800 $Color = $now - $row1[0] > 172800 ? "black" : "red"; echo "<span style=\"color: $Color;\">"; echo strftime(" %d.%m.%Y %R", $row1[0]) ."Uhr"; echo "</span>"; } ?> [/PHP] es ist ausserdem besser, wenn man am anfang des scripts folgende funktionen aufruft: mysql_connect(...); http://de.php.net/manual/de/function.mysql-connect.php mysql_select_db(..); http://de.php.net/manual/de/function.mysql-select-db.php und dann die query`s nur noch mit "mysql_query();" abschickst, da wenn du mal z.b. den DB namen änderst, müsstest du im ganzen script bei "mysql_db_query()" den eintrag ändern. Mit dem o.g. ansatz braucht man das nur am scriptanfang einmal ändern.
9. Juli 200421 j Der Unix-Timestamp stellt die Sekunden dar, die seit dem 01.01.1970 0:00 vergangen sind. Dass bedeutet, dass du nur ausrechnen brauchst, wieviel Sekunden deine gewünschte Zeitdifferenz hat und ziehst diese zum Vergleich von dem aktuellen Datum ab. Beispiel: <?PHP $diff = 17280; //zwei tage in sekunden 60*60*24*2 $res = mysql_query( "SELECT MAX(postdate) FROM tabelname WHERE id='1'" ); if($res) { while(list($date)=mysql_fetch_row($res)) { $color = (time()-$diff>$date) ? 'red' : 'black'; echo "<font color=\"$color\">"; echo date("d.m.Y H:i",$date)." Uhr"; echo "</font>"; } mysql_free_result($res); } ?> [/PHP] Die andere Variante wäre, MySql das für dich erledigen zu lassen: [PHP] <? $sql = " SELECT DATE_FORMAT ( FROM_UNIXTIME( MAX(postdate) ), "%d.%m.%Y %H:%i" ) AS datum, CASE WHEN UNIX_TIMESTAMP() - 17280 > FROM_UNIXTIME( MAX(postdate) ) THEN 'red' ELSE 'black' END AS color FROM tabelname WHERE id = '1' "; if ($res = mysql_query($sql)) { while(list($datum,$color)=mysql_fetch_row($res)) { echo "<font color=\"$color\">$datum Uhr</font>\n"; } mysql_free_result($res); }
9. Juli 200421 j Autor Hey kills , Danke! Klappt hervorragend! Deinen Rat: [quote=kills es ist ausserdem besser, wenn man am anfang des scripts folgende funktionen aufruft: mysql_connect(...); http://de.php.net/manual/de/function.mysql-connect.php mysql_select_db(..); http://de.php.net/manual/de/function.mysql-select-db.php und dann die query`s nur noch mit "mysql_query();" abschickst,
9. Juli 200421 j Autor Der Unix-Timestamp stellt die Sekunden dar, die seit dem 01.01.1970 0:00 vergangen sind. Hi crustie, danke für den Tipp. ich habe aber jetzt der einfachheit halber den Tipp von kills genommen. Gruß
9. Juli 200421 j ich habe dafür immer ein kleine include conn.inc.php oder wie dus auch immer nenn möchtest. wenn du das auf ner serite über include("inc/conn.inc"); einbindest haste die db connection immer schön da und musst dich um nix mehr kümmern. die datei sieht folgendermassen aus: <? $dbname="meineDatenbank"; $dbhost="meinHost"; //offline meist localhost $dbuser="meinUsername"; $dbpass="meinPasswort"; mysql_connect($dbhost,$dbuser,$dbpass) or die ("Leider ist ein Datenbankfehler aufgetreten. Bitte versuchen Sie es später noch einmal."); mysql_select_db($dbname) or die ("Leider ist ein Datenbankfehler aufgetreten. Bitte versuchen Sie es später noch einmal."); ?> jo, und dann biste verbunden
9. Juli 200421 j Autor jo, und dann biste verbunden Jo, das seh ich auch so. Nur damit ist meine Frage nach der Übergabe der Variablen nicht geklärt.
9. Juli 200421 j huh? sorry, ich glaub die ganze woche lang stand ich nur aufm schlauch...siehs mir nach. leider kann ich immer noch nicht sehen an wen oder was du welche variable übergeben möchtest. aber ich helfe dir gerne!
10. Juli 200421 j Autor aber ich helfe dir gerne! Das ist lieb! also folgendes. Ich setzte ja die Verbindung zur Datenbank in eine Variable ($db_selectrd):$db_selected = mysql_select_db(usr_web495_1, $db); Hier will ich die dann wieder aufrufen: $result1 = mysql_db_query("hier muß doch die Varibale aufgerufen werden, 0der?","SELECT max( news_start ) FROM [/PHP] Klappt aber nicht. Ich habe schon alles probiert. Mit Hochkommata, ohne, mit doppelten Hochkommata..... Irgendwas mach ich falsch.
10. Juli 200421 j also nochmal von vorne: <?php // Der PHP-StartTag gehört hier hin $db_name = "usr_web495_1"; $db_user = "meinDBUser"; $db_password = "meinDBPasswort"; $db_server = "meinDBServer"; $db = mysql_connect($db_server,$db_user,$db_passwort); if (!$db) { die('Die Verbindung zum DBMS ist nicht möglich.<br> mySql Fehler: ' . mysql_error()); } $db_selected = mysql_select_db($db_name); // hier brauchst du nur die DB angeben! if (!$db_selected) { die('Das System kann die Datenbank "'. $db_name .'" nicht benutzen.<br> mySql Fehler : ' . mysql_error()); // hier mit der variable $db_name } // Warum hattest du hier das <?php $now = mktime(); $result1 = mysql_db_query("usr_web495_1","SELECT max( news_start ) FROM usr_web495_1_news WHERE `news_catid` = '1' "); while($row1 = mysql_fetch_row($result1)) { // Sekunden Pro Tag: 86400 // 2 Tage: 172800 $Color = $now - $row1[0] > 86400 ? "black" : "red"; echo "<span style=\"color: $Color;\">"; echo strftime(" %d.%m.%Y %R", $row1[0]) ."Uhr"; echo "</span>"; } ?> [/PHP]
10. Juli 200421 j Da Du ja mysql_select_db nimmst, brauchst Du nicht umbedingt mysql_db_query dort reicht dann ein einfaches mysql_query. Frank
11. Juli 200421 j Autor Da Du ja mysql_select_db nimmst, brauchst Du nicht umbedingt mysql_db_query dort reicht dann ein einfaches mysql_query. Frank Ach so. Daher lautet dann der Sting so ? $result1 = mysql_query("SELECT max( news_start ) FROM usr_web495_1_news WHERE `news_catid` = '1' "); Gruß
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.