kostenloser Webspace werbefrei: lima-city


Probleme mit meinem PHP Script

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. freewareecke schrieb:
    ... 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>
    wenn du nur so wenig info preisgibst, dann kann man nur vermuten:
    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.
  4. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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'] ?>&deg;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
  5. r**n

    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>
  6. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  7. freewareecke schrieb:
    ... Wenn ich den Code auskommentiere funktioniert alles ...
    sonderbar :)) na wie auch immer!

    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:
    Eigentlich müsstest du mindesten einen Fehler aufgrund einer vergessenen Klammer erhalten. ...
    aha!? und welchen klammer schlägst du vor? ich konnte keine entdecken (ligt womöglich daran, dass sie fehlt ;))

    Beitrag zuletzt geändert: 30.7.2013 18:23:22 von czibere
  8. r**n

    czibere, bin vom Code im Anfangspost ausgegangen, dort fehlt hinter ("datenbank.php" eine schließende Klammer, im unteren Code allerdings nicht, mysteriös :D
  9. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    Danke, nun funktioniert alles wie es soll.



    Michael
  10. ra1n schrieb:
    czibere, bin vom Code im Anfangspost ausgegangen, dort fehlt hinter ("datenbank.php" eine schließende Klammer, im unteren Code allerdings nicht, mysteriös :D
    ja das ist ein leidiges problem. oft sieht man
    include('...');
    oder
    require[_once]('...');
    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.
    also lasst in obigen fällen die klammenr einfach weg. der interpreter dankt dafür ;) [weniger arbeit, schneller fertig!]
  11. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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]} &deg;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]} &deg;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]} &deg;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&uuml;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&uuml;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
  12. 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
    $genauer[]d 	= $zeile['genauer'];
    also 'd' weg.
    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
    </tr>"
    fehlt am ende ein semicolon.
    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 ;)
  13. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  14. freewareecke schrieb:
    ...
    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
    zeile 32 sollte lauten
    for ($i = 1; $i < count($ID); $i++) {
  15. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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 :thumb: danke :approve:

    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
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!