Verständnigsfrage -> Objektorientiert

cent

Mitglied
hallo,
also ich habe eine class db_in

und in ihr die funktion:

function select ($sql="")
{
if(empty($sql)) { return false; }
if(!eregi("^select",$sql))
{
echo "Error\n";
return false;
}
if(empty($this->CONN)) { return false; }
$conn = $this->CONN;
$results = mysql_query($sql,$conn);
if( (!$results) or (empty($results)) ) {
@mysql_free_result($results);
return false;
}
$count = 0;
$data = array();
while ( $row = mysql_fetch_array($results))
{
$data[] = $row;
$count++;
}
mysql_free_result($results);
return $data;
}


das ganze ist aus einem beispiel und leider ist es nicht näher erkärt


mit:
$sql = "SELECT * FROM tabelle";
$db->select ($sql);

kann ich ja dann auf die funktion zugreifen -> aber wie kann ich denn die datensätze nun auslesen? diese werden doch in $data gespeichert.

danke
 
-

In deiner Funktion steht return $data. Das bedeutet, dass die Datensätze zurück gegeben werden. Somit hast du nun $db als Array, wo alle Daten gespeichert sind.
 
danke. und wie kann ich auf den array zugreifen? bzw. wo kann ich definieren welche spalte ich auslesen möchte?
 
Timeflash das ist nicht ganz richtig

der Operator -> kennzeichnet den Zugriff auf eine Methode eines Objektes (kommt von C++ / Objekt auf dem heap) und nicht eines Arrays.

Aber wie du schon gesagt hast der Rueckgabewert der Methode ist ein Array.
Sprich der ausdruck
$db->select($sql)
[Object]->[Methode](Parameter)
muss der rechte Operand einer zuweisung sein.

Sprich
$meinDatenArray = $db->select($sql);
 
@ cent:

Die Funkion mysql_fetch_array
gibt dir ein asoziatives(booah wahrscheinlich falsch geschrieben :) ) Array der momentanen DatenReihe zurueck.
im gegensatz zum skalaaren (Wetten auch Rechtschreiblich falsch :) ) Array kannst du
deine werte durch angaben eines Keys (Spaltennamen) nutzen.
In deinem CodeSnipplet passiert folgendes.
du bekommst $row als asoziatives array und speicherst diese
Reihenarrays in einem skalaaren Array $data[]
wobei ich hier ein fehler im Code grad sehe (muesste einer sein, habs nicht getestet sehs nur grad)


PHP:
$count = 0; 
$data = array(); 
while ( $row = mysql_fetch_array($results)) 
{ 
$data[] = $row; 
$count++; 
}

Der fehler liegt bei $data[] = $row
das muesste wohl heissen
$data[$count] = $row;

Dann hast du ein $data Array mit dem ganzen Recordset inhalt.
um z.B. die 1. Reihe auzulesen & ausgeben:
echo($data[1]["[SpaltenNAme]);

oder du durchlauefst mit :
PHP:
foreach($item in $data)
{
echo $item["[SpaltenName];
}

Aber les dich mal genau in die Arrays rein und die funktion mysql_fetch_array
denn dieses Snipplet ist wirklich nicht ein sehr "User " Freundlich und ein bischen abstrakt

@Timeflash :)
 
also die ganz normalen abfragen sind mir schon klar. und bisher habe ich es auch immer nur so gemacht. ich wollte nur es einmal über eine klasse ausprobieren. und deshalb muss ich ja irgendwie auf $data zugreifen können. habe nun einmal den tipp von dir ausprobiert aber klappt auch nicht. -> so langsam frag ich mich ja ob es umständlicher ist objektorientiert versuchen etwas zu machen als es ganz normal zu machen *seufz*
 
Also
-> ist ein Operator um eine Methode eines Objekts anzusprechen.

Und hier ist ein Beispiel wie du dein Resultat ansprichst:
PHP:
$sql = "SELECT * FROM tabelle";
$daten = $db->select ($sql);
for ($i=0;$i<count($daten);$i++) {
  echo $daten[$i][spalte_eins];
  echo $daten[$i][spalte_zwei];
}
// oder
foreach ($daten as $row) {
  echo $row[spalte_eins];
  echo $row[spalte_zwei];
}
Viel Spass!
 

Neue Beiträge

Zurück