Frank Rohmann: Datenbankwerte in ein Array bringen

Hallo,

ich nutze ein Kalenderscript, in dem die Daten (also die Termine) statisch eingetragen werden:

$param_d['highlight']= array(

'20060401'=>'Termin',

);

Das ist natürlich äußerst unpraktisch, vor allem wenn ja eine Datenbank zur Verfügung steht. So hab' ich's jetzt umgebaut:

$result = mysql_query("SELECT * FROM termine") or die(mysql_error());

$param_d['highlight']= array(

for($x=0;$x<mysql_num_rows($result);$x++)

{

$datum = mysql_result($result,$x, "datum");
$termin = mysql_result($result,$x, "termin");

'$datum'=>'$termin',

}

);

Geht aber nicht, weil PHP ein ' erwartet anstatt noch mehr Code.

Und nu?

  1. Hello,

    Chaos :-)

    Ich verstehe nicht ganz, was Du vorhast.

    Wie ist denn das relavente Satzformat der Tabelle?
    Und was soll dann mit den Daten aus den Datensätzen (Zeilen) der Tabelle geschehen?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. Hallo Frank,

    $result = mysql_query("SELECT * FROM termine") or die(mysql_error());

    warum nicht:

      
    $param_d['highlight'] = array();  
    # Weise zuerst Dein SQL-Statement einer Variablen zu,  
    # praktisch für das Debuggen  
    $query  = '[code lang=sql]SELECT datum, termin FROM termine
    ~~~';  
      
    # Lasse die Abfrage ausführen mit Deiner etwas brutalen Fehlerbehandlung.  
    $result = mysql\_query($query) or die(mysql\_error());  
    [/code]  
    Du erwartest ernsthaft, dass der folgende Code funktioniert?  
      
    
    > $param\_d['highlight']= array(  
    > for($x=0;$x<mysql\_num\_rows($result);$x++)  
    > {  
    > $datum = mysql\_result($result,$x, "datum");  
    > $termin = mysql\_result($result,$x, "termin");  
    > '$datum'=>'$termin',  
    > }  
    > );  
    > Geht aber nicht, weil PHP ein ' erwartet anstatt noch mehr Code.  
      
    Ja, steht ja klar und deutlich in der Dokumentation von [array()](http://www.php.net/manual/de/function.array.php). Du könntest wie folgt vorgehen:  
      
    ~~~php
    # Lese die Ergebnismenge datensatzweise aus  
    # Ob Du vorher mit mysql_num_rows() überprüfst,  
    # ob überhaupt Daten vorhanden sind oder hinterher  
    # ob Dein Array leer ist, sollte keine Rolle spielen.  
    while ($row = [link:http://www.php.net/manual/de/function.mysql-fetch-array.php@title=mysql_fetch_array()]) {  
        # Solange Daten vorhanden sind, fülle mit den Daten Dein Array  
        $datum  = $row['termin'];  
        $termin = $row['datum'];  
        $param_d[$datum] = $termin;  
        # Du könntest auf die Zuweisungen zu den Hilfsvariablen verzichten:  
        # $param_d[${row['datum']}] = $row['termin'];  
    }  
      
    # sind Daten vorhanden  
    if (empty($param_d)) {  
        # keine Daten vorhanden,  
        # reagiere entsprechend  
    }  
    else {  
        # verarbeite Deine Daten  
    }  
    
    

    Freundliche Grüße

    Vinzenz

    1. Hey, da geht ja :)

      Mit dem Array war schon klar dass das nicht funzen kann, nur wie's besser geht war mir micht klar...

      Heißen Dank!