Probleme mit meinem PHP Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
dank
datenbank
datum
erfassen
ergebnis
fehler
mobil test
null
offset
ort
problem
sensor
server
stand
temperatur
uhrzeit
url
webseite
zeile
-
Hey Leute,
ich habe auf meinem Raspberry Pi eine Webseite für mein System am laufen. Bis heute habe ich die Daten aus der Datenbank geholt und das Datum und Uhrzeit zusätzlich in einer Datei auf dem Raspberry gespeichert. Macht wenig Sinn, von daher habe ich in der Datenbank eine Tabelle erstellt mit lediglich 1em Datensatz, der automatisch alle 10 Minuten Aktuallisiert wird. Das klappt auch ohne Probleme.
Nun habe ich die Webseite angepasst und plötzlich bleibt die Seite nur weiß. Ich Poste mal den Code, welchen ich geändert habe. Vielleicht erkennt jemand den Fehler den ich übersehe. Wenn der Ausschnitt nicht reicht, bitte melden und ich hau den ganzen Code raus. Ich habe den Selben Abschnitt weiter unten im Code noch mal, da klappte es vor der Anpassung wunderbar. Vorallem das größte Problem ist, er gibt noch nicht mal eine Fehlermeldung aus.
Die Datenbank, welche ich nutze liegt bei Lima-City und die Webseite auf meinem Server.
<?php include("datenbank.php"; $sql2 = "SELECT * FROM datum"; $db_erg2 = mysql_query($sql2); while ($zeile2 = mysql_fetch_array($db_erg2, MYSQL_ASSOC)){ echo "<p>Datum: " . $zeile2['Datum'] . "Uhrzeit: " . $zeile2['Zeit']; } ?> </p>
Danke schon mal im Vorraus.
Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
freewareecke schrieb:
wenn du nur so wenig info preisgibst, dann kann man nur vermuten:
... Die Datenbank, welche ich nutze liegt bei Lima-City und die Webseite auf meinem Server.<?php include("datenbank.php"; $sql2 = "SELECT * FROM datum"; $db_erg2 = mysql_query($sql2); while ($zeile2 = mysql_fetch_array($db_erg2, MYSQL_ASSOC)){ echo "<p>Datum: " . $zeile2['Datum'] . "Uhrzeit: " . $zeile2['Zeit']; } ?> </p>
1. das includen funktioniert nicht
2. die query funktioniert nicht
3. oder beides hand in hand.
also! vorschlag: du stellst sicher, dass errror_reporting richtig eingestellt ist (suche bei lima!) und dann kannst (eventuell auch selber) sehen, was nicht geht.
oder zeigst etwas mehr code her. -
Okay hier der ganze Code:
Die Datei, die eingebunden wird:
<?php $db_link = mysql_connect ('Server', 'Benutzer', 'Kennwort''); $db_sel = mysql_select_db('Datenbank') or die ("Auswahl der Datenbank fehlgeschlagen"); ?>
die Indexdatei:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> <script src="jquery/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="jquery/jquery.mobile-1.0.js" type="text/javascript" charset="utf-8"></script> <link rel="Stylesheet" type="text/css" href="mobil.css" /> <link rel="alternate" type="application/rss+xml" title="Temperaturfühler des Raspi2" href="temp.raspido.selfhost.bz/rss.php"> <title>jQuery Mobil Test</title> </head> <body> <div data-role="page"> <div data-role="header" data-position="fixed"> <h1>Temperaturfühler</h1> </div> <div data-role="collapsible-set" data-theme="a" data-content-theme="a"> <div data-role="collapsible"> <h3>Stand vom</h3> <?php include("datenbank.php"); $sql2 = "SELECT * FROM datum"; $db_erg2 = mysql_query($sql2); while ($zeile2 = mysql_fetch_array($db_erg2, MYSQL_ASSOC)){ echo = "<p>Datum: " . $zeile2['Datum']. "Uhrzeit: " . $zeile2['Zeit']; } ?></p> </div> <?php include("datenbank.php"); $sql = "SELECT * FROM temperatur"; $db_erg = mysql_query($sql); while ($zeile = mysql_fetch_array($db_erg, MYSQL_ASSOC)){ ?> <div data-role="collapsible"> <h3><?= $zeile['Ort'] ?></h3> <p><div width="50%"><?= $zeile['Wert'] ?>°C </div></p> </div> <?php } ?> </div> <?php mysql_free_result($db_erg); ?> <div data-role="footer" data-position="fixed"> <h4>Temperaturfühler-App</h4> </div> </div> </body> </html>
Aber die Includedatei sollte okay sein, den bevor ich das mit dem Datum verändert hatte funktionierte alles.
Michael
Beitrag zuletzt geändert: 30.7.2013 13:10:02 von freewareecke -
Eigentlich müsstest du mindesten einen Fehler aufgrund einer vergessenen Klammer erhalten.
Und warum nutzt du nicht direkt mysql_fetch_assoc?
Probiers mal hiermit:
<?php require ("datenbank.php"); $sql2 = "SELECT * FROM datum"; $db_erg2 = mysql_query($sql2); while ($zeile2 = mysql_fetch_assoc($db_erg2)){ echo "<p>Datum: " . $zeile2['Datum'] . "Uhrzeit: " . $zeile2['Zeit']; } ?> </p>
-
Danke für die Rasche Antwort.
Ich habe den Code angepasst, nur Ergebniss leider ist das gleiche. Wenn ich den Code auskommentiere funktioniert alles. Also nur als Info vorweg.
Michael -
freewareecke schrieb:
sonderbar :)) na wie auch immer!
... Wenn ich den Code auskommentiere funktioniert alles ...
mein vorschlag ist dass du 'datenbank.php' in diesem sinne ausbesserst:<?php $db_link = mysql_connect ('Server', 'Benutzer', 'Kennwort'); $db_sel = mysql_select_db('Datenbank') or die ("Auswahl der Datenbank fehlgeschlagen");
merkst du den unterschied?!! (in mysql_connect!!)
dann modifiziere deine 'index.php' wie folgt (günstiger weise copy-paste [und klar, das ganze überschreiben]):<?php // das sorgt für meldungen (fehler, notiz &c.) ini_set('display_errors', 1); error_reporting(E_ALL | E_STRICT); // db-script nur einmal einbinden! require_once 'datenbank.php'; // datum erfassen: $datum = null; $db_erg = mysql_query('SELECT * FROM datum'); while ($zeile = mysql_fetch_assoc($db_erg)) { $datum .= "<p>Datum: {$zeile['Datum']} Uhrzeit: {$zeile['Zeit']}\n"; } $datum .= "</p>\n"; mysql_free_result($db_erg); // ort und temperatur erfassen: $temperatur = null; #include("datenbank.php"); $db_erg = mysql_query('SELECT * FROM temperatur'); while ($zeile = mysql_fetch_array($db_erg, MYSQL_ASSOC)) { $temperatur .= " <div data-role=\"collapsible\"> <h3>{$zeile['Ort']}</h3> <p><div width=\"50%\">{$zeile['Wert']} °C</div></p> </div>\n"; } mysql_free_result($db_erg); // den ganzen schmus mal ausgeben: exit(<<< EOT <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery Mobil Test</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> <script src="jquery/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="jquery/jquery.mobile-1.0.js" type="text/javascript" charset="utf-8"></script> <link rel="Stylesheet" type="text/css" href="mobil.css" /> <link rel="alternate" type="application/rss+xml" title="Temperaturfühler des Raspi2" href="temp.raspido.selfhost.bz/rss.php"> </head> <body> <div data-role="page"> <div data-role="header" data-position="fixed"> <h1>Temperaturfühler</h1> </div> <div data-role="collapsible-set" data-theme="a" data-content-theme="a"> <div data-role="collapsible"> <h3>Stand vom</h3> $datum </div> $temperatur </div> <div data-role="footer" data-position="fixed"> <h4>Temperaturfühler-App</h4> </div> </div> </body> </html> EOT );
und dann geht es, oder erfahren wie woran es scheitert ;) [bitte fehlermeldungen hier posten! andere wollen auch durch erfahrung dazulernen!!!]
ra1n schrieb:
aha!? und welchen klammer schlägst du vor? ich konnte keine entdecken (ligt womöglich daran, dass sie fehlt ;))
Eigentlich müsstest du mindesten einen Fehler aufgrund einer vergessenen Klammer erhalten. ...
Beitrag zuletzt geändert: 30.7.2013 18:23:22 von czibere -
czibere, bin vom Code im Anfangspost ausgegangen, dort fehlt hinter ("datenbank.php" eine schließende Klammer, im unteren Code allerdings nicht, mysteriös :D
-
ra1n schrieb:
ja das ist ein leidiges problem. oft sieht man
czibere, bin vom Code im Anfangspost ausgegangen, dort fehlt hinter ("datenbank.php" eine schließende Klammer, im unteren Code allerdings nicht, mysteriös :D
oderinclude('...');
und ich muss sagen, das ist nicht ganz reichtig! include, require_..., echo und noch einige sind keine echte funktionen. daher braucht man auch keine runde klammern. und genau aus diesem grund habe ich das wiederum übersehen.require[_once]('...');
also lasst in obigen fällen die klammenr einfach weg. der interpreter dankt dafür ;) [weniger arbeit, schneller fertig!] -
Hey,
ich habe nun den Ansatz von "czibere" etwas Modifiziert, da sich ein Neues Problem aufgetan hat, wenn ich z.B. In einem Bereich mehrere Sensoren habe würde für jeden Sensor ein Eigener "Hauptbereich" z.B. Küche aufgemacht werden, dass ist aber nicht so ganz was ich eigentlich bezwecken möchte. Der Code sieht wie folgt aus und Ergebnis ist wieder eine weiße blanke Seite ohne Fehler. Ich habe nur den Teil nach // ort und temperatur erfassen verändert. Hier mal ein Screenshot der Seite wie sie aussieht, damit ihr das mit den "Hauptbereichen" versteht.
http://freewareecke.de/images/pi/Wetterseite.jpg
Und da ist die Küche 2 mal aufgeführt, ich würde es lieber aber so etwa haben:
Küche
Sensor 1: 32,2°C
Sensor 2: 33,3°C
Sensor 3: 40%
So und hier der Code, mit dem ich dachte zum Ergebnis zu kommen.
<?php // das sorgt für meldungen (fehler, notiz &c.) ini_set('display_errors', 1); error_reporting(E_ALL | E_STRICT); // db-script nur einmal einbinden! require_once 'datenbank.php'; // datum erfassen: $datum = null; $db_erg = mysql_query('SELECT * FROM datum'); while ($zeile = mysql_fetch_assoc($db_erg)) { $datum .= "<p>Datum: {$zeile['Datum']} Uhrzeit: {$zeile['Zeit']}\n"; } $datum .= "</p>\n"; mysql_free_result($db_erg); // ort und temperatur erfassen: $temperatur = null; #include("datenbank.php"); $db_erg = mysql_query('SELECT * FROM temperatur ORDER BY Ort ASC'); while ($zeile = mysql_fetch_array($db_erg, MYSQL_ASSOC)) { $ID[] = $zeile['ID']; $Ort[] = $zeile['Ort']; $Wert[] = $zeile['Wert']; $genauer[]d = $zeile['genauer']; } $Ort_alt = null; for ($i = 1; $i = count($ID); $i++){ if ($Ort[$i] == $Ort_alt) { $temperatur .= " <tr> <td>{$genauer[$i]}:</td> <td>{$Wert[$i]} °C</td> </tr>" } elseif ($Ort[$i] <> $Ort_alt AND $Ort_alt <> null) { $temperatur .= " </table></div></p> </div>\n <div data-role=\"collapsible\"> <h3>{$Ort[$i]}</h3> <p><div width=\"50%\"><table> <tr> <td>{$genauer[$i]}:</td> <td>{$Wert[$i]} °C</td> </tr> "; $Ort_alt = $Ort[$i]; } elseif ($Ort[$i] <> $Ort_alt AND $Ort_alt == null) { $temperatur .= " <div data-role=\"collapsible\"> <h3>{$Ort['$i']}</h3> <p><div width=\"50%\"><table> <tr> <td>{$genauer[$i]}:</td> <td>{$Wert[$i]} °C</td> </tr> "; $Ort_alt = $Ort[$i]; } } } mysql_free_result($db_erg); // den ganzen schmus mal ausgeben: exit(<<< EOT <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery Mobil Test</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> <script src="jquery/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="jquery/jquery.mobile-1.0.js" type="text/javascript" charset="utf-8"></script> <link rel="Stylesheet" type="text/css" href="mobil.css" /> <link rel="alternate" type="application/rss+xml" title="Temperaturfühler des Raspi2" href="temp.raspido.selfhost.bz/rss.php"> </head> <body> <div data-role="page"> <div data-role="header" data-position="fixed"> <h1>Temperaturfühler</h1> </div> <div data-role="collapsible-set" data-theme="a" data-content-theme="a"> <div data-role="collapsible"> <h3>Stand vom</h3> $datum </div> $temperatur </div> <div data-role="footer" data-position="fixed"> <h4>Temperaturfühler-App</h4> </div> </div> </body> </html> EOT );
Ich hoffe mir kann man helfen.
Michael
Beitrag zuletzt geändert: 7.8.2013 22:36:09 von freewareecke -
freewareecke schrieb:... und Ergebnis ist wieder eine weiße blanke Seite ohne Fehler.
sonderbar! no wie auch immer, ich habe folgendes korrigiert:
1.Fatal error: Cannot use [] for reading in /home/webpages/lima-city/czibere/html/_forum/freewareecke/probleme-mit-meinem-php-script_2.php on line 29
tippfehler
also 'd' weg.$genauer[]d = $zeile['genauer'];
2.Parse error: syntax error, unexpected '}' in /home/webpages/lima-city/czibere/html/_forum/freewareecke/probleme-mit-meinem-php-script_2.php on line 39
in zeile 38
fehlt am ende ein semicolon.</tr>"
3.Parse error: syntax error, unexpected '}' in /home/webpages/lima-city/czibere/html/_forum/freewareecke/probleme-mit-meinem-php-script_2.php on line 69
laut einrückungsmuster von dir solltest zeile 68 einfach löschen. zu viele schließende '}'.
nachher bekomme ich warnungen wegen der datenbank, aber das ist ja in ordnung ;) -
Okay nun habe ich zumindest eine ganze Liternei an wiederholenden Fehlermeldungen und hätte ich den Aufruf nicht beendet wäre Liste noch länger geworden.
Hier der angezeigte Fehler:
Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 33 Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 36 Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 37
Und der kommt fortlaufend.
Michael -
freewareecke schrieb:
zeile 32 sollte lauten
...Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 33 Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 36 Notice: Undefined offset: 4 in /var/www/temp/neu/index2.php on line 37
for ($i = 1; $i < count($ID); $i++) {
-
Gut, nun zeigt er was an, aber leider total verunstaltet. Muss da wohl noch mal dran, irgendwo ist da ein gedanken fehler scheinbar dran.
Michael
Problem gelöst, nun läuft alles wie geplant. Sieht für mein empfinden sogar garnich mal so schlecht aus danke
Folgende Probleme haben am Ende noch gestört:
1. Vergleichsoperator falsch gewählt <> statt !=
2. Letztes Elseif muss ich abfragen ob Variable ($Ort_alt) überhaupt gesetzt ist damit es mit dem Teil anfängt.
3. Falsche Arrayabfrage $Ort['$ID'] statt $Ort[$ID]
4. Alle HTML Tags wollten nach der For Schleife noch geschlossen werden müssen :-)
Beitrag zuletzt geändert: 8.8.2013 12:02:58 von freewareecke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage