Matti Mäkitalo: JAVASCRIPT & MySQL

Beitrag lesen

Hi,

$link = connect();

if ($link)
{
  $sql = "SELECT *
          FROM banner"; // Sinnvollerweise sollte man hier natürlich nur die Spalten abfragen, die man wirklich braucht!

$result = mysql_query($sql) or die(mysql_error()); // Hier sollte eigentlich eine vernünftige Fehlerbehandlung hin - ein die() ist keine!

if (!$result)
    return(FALSE);

echo "ImageArr = new Array();\n";

while ($row = mysql_fetch_assoc($result))
  {
    echo "ImageArr.push('" . $row['Image'] . "');\n";
  }
}


>   
> Der dabei erzeugte Javascript-Code muss natürlich an der richtigen Stelle ins HTML-Dokument geschrieben werden.  
  
Ich hätte noch einen weitergehenden Vorschlag. Statt die Elemente einzeln ImageArr hinzuzufügen (btw: besser als lokale Variable, d.h. mit "var", initialisieren), würde ich den Array nicht einzeln über die push-Methode füllen, sondern einfach JSON erzeugen. Beispiel:  
  
~~~php
  
$link = connect();  
  
if ($link)  
{  
  $sql = "SELECT *  
          FROM banner"; // Sinnvollerweise sollte man hier natürlich nur die Spalten abfragen, die man wirklich braucht!  
  
  $result = mysql_query($sql) or die(mysql_error()); // Hier sollte eigentlich eine vernünftige Fehlerbehandlung hin - ein die() ist keine!  
  
  if (!$result)  
    return(FALSE);  
  
  echo "var ImageArr = [";  
  $first = 1;  
  while ($row = mysql_fetch_assoc($result))  
  {  
    // output comma for all items after first  
    if ($first-- <= 0)  
      echo ",";  
    echo [link:http://www.php.net/manual/en/function.json-encode.php@title=json_encode]($row);  
  }  
}  
  
  echo ']';  

Abgesehen von meinem ästhetischem Empfinden (das generierte JS ist IMHO schöner und kompakter) hat es den Vorteil, dass man diesen Teil (ab dem generierten [ bis zum ]) auch mal herauslösen und als Webservice anbieten könnte (z.B. über AJAX, um ein einfaches Beispiel zu nennen).

Bis die Tage,
Matti