Einzelnen Beitrag anzeigen
  #1  
Alt 23.07.2015, 11:28:44
Tim2theO Tim2theO ist offline
Anfänger
 
Registriert seit: Jul 2015
Alter: 44
Beiträge: 2
Tim2theO befindet sich auf einem aufstrebenden Ast
mysql_fetch_array in while-Schleife bringt falsche Ausgabe

Hallo,
ich habe folgendes Problem. Ich habe ein mySQL DB mit den Feldern:

datum, uhrzeit, ziel, typ, add

Diese frage ich mit folgender query.php ab:

PHP-Code:
<?php
$ergebnis 
mysql_query("SELECT `abfahrten`.`datum`, `abfahrten`.`uhrzeit`, `abfahrten`.`ziel`, `abfahrten`.`typ`, `abfahrten`.`add`\n"
    
"FROM `abfahrten`\n"
    
"WHERE ((`abfahrten`.`datum` = CURDATE()) AND (`abfahrten`.`uhrzeit` >= CURTIME()) AND (`abfahrten`.`ziel` =\"Zielort\"))\n"
    
" ");
?>
Mit der index.php versuche ich dies nun zur Anzeige zu bringen:

PHP-Code:

 <?php include( 'dbconnect.php' ); 
 include ( 
'query.php' );
// Inkludiert unsere Datei die sich um die Datenbankverbindung und die Abfragen kümmert

?>

<html>
<head>

  <meta http-equiv="Content-Type" content="text/html" charset="iso-8859-1">

  <meta name="GENERATOR" content="Kate">

  <meta name="SIW">
  <link href="fia.css" rel="stylesheet" type="text/css">
  <title>FIA</title>


<!--[if lt IE 9]> <script type="text/javascript" src="excanvas.js"></script> <![endif]-->
  <script type="text/javascript" src="station-clock.js"></script>
  <script type="text/javascript"> var clock = new StationClock("clock"); clock.body = StationClock.RoundBody; clock.dial = StationClock.GermanStrokeDial; clock.hourHand = StationClock.PointedHourHand; clock.minuteHand = StationClock.PointedMinuteHand; clock.secondHand = StationClock.HoleShapedSecondHand; clock.boss = StationClock.NoBoss; clock.minuteHandBehavoir = StationClock.BouncingMinuteHand; clock.secondHandBehavoir = StationClock.OverhastySecondHand; window.setInterval(function() { clock.draw() }, 50); </script><!--[if IE]>
<script type="text/javascript" src="excanvas.js"></script> <![endif]-->
</head>


<body style="background-color: rgb(0, 0, 128);">

<table border="0" cellspacing="5">

  <tbody>

    <tr>

      <td><canvas id="clock"

                  width="220" height="220"> Fehlermeldung </canvas></td>

      <td>
      <h6><nobr>Abfahrt Startort</nobr></h6>

      </td>

      <td><img src="logo.gif" id="Image1" alt=""></td>

    </tr>
    <!-- hier beginnt die zweite Tabellenzeile -->
<tr style="background-color: #FFFF00;">
  <td align=center><h9>Abfahrt</h9></td><td align=center><h9>Ziel</h9>
</tr>  
  
<!-- Hier beginnt die dritte Tabellenzeile -->
<?php while ($row mysql_fetch_array($ergebnis))
     {
    
?>
<tr>

      <td  rowspan="3" style="background-color: #FFFFFF;"><h7><?php list($h$m) = explode(':'$uhrzeit); echo $h;echo ":"; echo $m?></h7></td>

    </tr>

    <tr><td><?php if($typ == "s")
          { echo 
'<img src="schiff.jpg">';
            if (
$typ == "b")
            { echo 
'<img src="bus.jpg">';}
            }
             
?>

    
        <h8><?php echo $ziel?></h8></td></tr>

    <tr><td><marquee><h5><nobr><?php echo $add?></nobr></h5></marquee></td></tr>
      
  
    
    <?php    
        $uhrzeit 
$row['uhrzeit'];
        
$datum   $row['datum'];
        
$ziel    $row['ziel'];
        
$typ     $row['typ'];
        
$add     $row['add'];
        
        }
        
mysql_close($db);

     
?>

  </tbody>
</table>

</body>
</html>
Die Probleme dabei:

Bei der HTML Ausgabe innerhalb der While-Schleife entsteht erstmal eine Tabellenzeile in der nur ein Doppelpunkt (mit denen ich die Anzeige von $h und $m trenne) an. Ansonsten ist die Zeile leer.

Ich hatte die Abfrage oder das Array in Verdacht konnte dies aber nicht bestätigen. Die Abfrage liefert in phpMyAdmin alle Ergebnise zum aktuellen Datum mit Uhrzeit,Typ, Zielort und ggf. add (Bemerkung falls vorhanden).
Wenn ich das Array zum Test ausgebe über:
PHP-Code:
<?php while ($row mysql_fetch_array($ergenis))
        echo 
$row=[0].'-'.$row[1].'-'.$row[3]. usw. <br />;
?>
Dann erhalte ich folgende Ausgabe:

Array - 14:20:00 - Zielort - s -
Array - 15:00:00 - Zielort - s -
Array - 17:00:00 - Zielort - s -

Was in Ordnung ist. Am heutige Datum gibt es zu den o.g. Uhrzeiten je eine Abfahrt an den Zielort. das "s" ist der Typ (Schiff) und das Feld add (Bemerkung) ist leer.

Mich wundert nur das statt dem Datum das Wort Array in der Ausgabe auftaucht. Da ich Neuling bin kann ich mir das noch nicht erklären.

Allerdings erstellt mir die While-Schleife mit der HTML Ausgabe nur Tabellenzeilen der ersten beiden Abfahrten und vorher halt eine Zeile ohne Uhrzeit und Ziel sondern nur mit dem Doppelpunkt zwischen Stunde und Minute.
Das letzte Abfrageergebnis wird gar nicht mehr ausgegeben.

Ich habe mittlerweile soviel gesucht, gelesen, Bücher gewälzt und weiter gesucht. Aber ich komme nicht mehr weiter und hoffe auf einen fachkundigen Rat von euch.
Vielleicht erschließt sich jemandem von euch ja das Problem und kann mir bei der Lösung helfen und evtl. sogar eine kurze Erklärung liefern damit ich dazulernen kann :)

Beste Grüße

Timo
Mit Zitat antworten