Chris: mysql_num_rows oder arry?

Hallo,

ich arbeite gerade ein wenig mit mysql_num_rows rum und hätte jetzt dazu eine Frage: mysql_num_rows liefert ja die Anzahl aller Datensätze einer Ergebnismenge, kann ich sowas auch in einen Array schreiben?
Quasi ich will nciht immer so schreiben:
$result2 = mysql_query("SELECT * FROM Sonstiges ORDER BY Sonst_ID")or die(mysql_error());
$auswahl=mysql_num_rows($result2);

for ($i=0; $i<$auswahl; $i++)
  {
    if ($sonstigesname == mysql_result($result2,$i,0))
    {
      ?>
      <option value="<?echo mysql_result ($result2,$i,0)?>" selected><? echo mysql_result ($result2,$i,0)?></option>

usw...

sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>
Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?

sonnige Grüße

Chris

  1. Halihallo Chris

    sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>
    Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?

    Standardmässig:

    mysql_query
    while ( result = mysql_fetch_row ) {
       do something with result
    }

    einfach über die Datensätze iterieren, wenn du sie linear auslesen möchtest (und das ist
    meistens so). Falls du in den Datensätzen irgendwie "herumspringen" musst, tue es so wie
    du vorgeschlagen hast. Aber das ganze RecordSet einlesen ist unfug und nicht zu
    empfehlen.

    Viele Grüsse

    Philipp

  2. Hi!

    sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>

    Wie soll das gehen? Wenn Du im Array mehrer Datensätze als den einen hast brauchst Du auch mehr Dimansionen im Array, also z.B. $auswahl2[1][Nw_IP]

    Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?

    Philipp hat es ja schon erklärt wie es normalerweise gemacht wird, aber es gibt noch einen anderen Ansatz, das PEAR::DB Modul:

    http://pear.php.net/manual/de/core.db.tut_fetch.php

    Die Methode get_all() dürfte interessant sein, sie liefert einfach:

    <?php
    $data = $db->getAll('SELECT id, text, date FROM mytable');
    /*
    Will return:
    array(
       1 => array('4', 'four', '2004'),
       2 => array('5', 'five', '2005'),
       3 => array('6', 'six', '2006')
    )
    */
    ?>

    Natürlich muss hierfür PEAR vorhanden sein und eingebunden werden. Mehr steht unter den Link oben. Leider gibts da nichts mit einem Assoazitiven Array, sonst würde ich das nur verwenden.

    Grüße
    Andreas