Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

If Abfrage in php 4 (Einbindung von HTML)

Empfohlene Antworten

Veröffentlicht

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ß


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

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


  • 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ß

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

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!

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

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]

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.