Zum Inhalt springen

If Abfrage in php 4 (Einbindung von HTML)


Empfohlene Beiträge

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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);
}


Link zu diesem Kommentar
Auf anderen Seiten teilen

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,

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...