Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Problem mit foreach (https://www.delphipraxis.net/52415-%5Bphp%5D-problem-mit-foreach.html)

fcg 29. Aug 2005 21:27


[PHP] Problem mit foreach
 
Hi @ all

ich habe folgende Klasse geschrieben:

Code:
class explorer extends db{

 var $type;
 var $content;

 function explorer ( $type ){
  $this->type = $type;
  $this->db();
 }

 function sql($sql) {
  if (!$this->erg = mysql_query($sql, $this->connid)) {
   echo "Fehler beim Senden der Abfrage.";
  }
  return mysql_fetch_assoc($this->erg);
 }

 function getdata() {
  foreach ($this->sql("SELECT name FROM test") as $var) {
   $this->content .= '<tr><td width="18">[img]_backend/_images/explorer_folder.gif[/img]</td>
                      <td width="250">[url="admin.php?_file=explorer&_folder='.$var.'"]'.$var.'[/url]</td>
                      <td width="120">'.$var.'</td>
                      <td>[url="admin.php?_file=explorer&_folder='.$var.'"]'.$var.'[/url]</td><tr>';
  }
 }

 function render() {
  $this->content .= '<table width="100%" border="0" cellspacing="0" cellpadding="7">';
  $this->getdata();
  $this->content .= '</table>';
 }


 function show() {
  $this->render();
  echo $this->content;
 }


}
Nun ist mein Problem, das immer nur der erste Datensatz der DB ausgelesen wird. Hat jemand eine Idee, wie ich an alle Datensatz komme?

Gruß
philippo

alcaeus 29. Aug 2005 22:04

Re: [PHP] Problem mit foreach
 
Moin fcg,

du fuehrst jedes Mal das Query aus. Du darfst das Query aber nur einmal ausfuehren, und anschliessend jedes Mal mit mysql_fetch_assoc() den naechsten Datensatz auslesen, wenn ich das richtig in Erinnerung habe.

Greetz
alcaeus

fcg 29. Aug 2005 22:13

Re: [PHP] Problem mit foreach
 
ich führ as doch nur ein mal aus, oder!?

alcaeus 29. Aug 2005 22:14

Re: [PHP] Problem mit foreach
 
Zitat:

Zitat von fcg
ich führ as doch nur ein mal aus, oder!?

Naja:
Code:
function sql($sql) { 
  if (!$this->erg = mysql_query($sql, $this->connid)) { 
   echo "Fehler beim Senden der Abfrage.";
  } 
  return mysql_fetch_assoc($this->erg);
}
Also das sieht mir ganz nach mehrfachem Ausfuehren des Query aus ;)

Greetz
alcaeus

yankee 29. Aug 2005 22:31

Re: [PHP] Problem mit foreach
 
Also ohne die Klasse würdest du das so machen:
Code:
$result =mysql_query('SELECT ...');
while($row =mysql_fetch_assoc($result))
{
  //do something
}
also ksnnst du dir die sql-Funktion in deiner Klasse eigentlich sparen. Und getData schreibst du dann so um:
Code:
function getdata() { 
  $result =mysql_query("SELECT name FROM test");
  while($row =mysql_fetch_assoc($result))
  {
    foreach ($row as $var) { 
      $this->content .= '<tr><td width="18">[img]_backend/_images/explorer_folder.gif[/img]</td>
                        <td width="250">[url="admin.php?_file=explorer&_folder='.$var.'"]'.$var.'[/url]</td>
                        <td width="120">'.$var.'</td>
                        <td>[url="admin.php?_file=explorer&_folder='.$var.'"]'.$var.'[/url]</td><tr>';
    } 
  }
}
Noch ein Tipp: Wenn du den array nicht assoziativ brauchst, dann nimm doch mysql_fetch_row statt mysql_fetch_assoc. Das ist geringfühgig schneller...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz