ERLEDIGT
JA
JA
ANTWORTEN
21
21
ZUGRIFFE
824
824
EMPFEHLEN
-
Hi@all,
also weis ja nich ob das irgendwie möglich ist was ich vorhabe. Habe in meinem Script mehrere Funktionen die die selbe schleife haben. Und zwar diese hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
$r = $db->select("SELECT * from main WHERE id='$id'"); foreach ($r as $row) { $id = $row[0]; $box_id = $row[1]; $con_id = $row[2]; $article_id = $row[3]; $article_no = $row[4]; $article = $row[5]; $designation = $row[6]; $condition = $row[7]; $worth = $row[8]; $stock = $row[9]; $existence = $row[10]; $origin = $row[11]; $man = $row[12]; $mod = $row[13]; $sn = $row[14]; $img_b = $row[15]; $img_s = $row[16]; $zub = $row[17]; $masse = $row[18]; $status = $row[19]; } ... // verschiedene Ausgabedesigns
Kann man die schleife jetzt irgendwie zentralzusammenfssaen so das jede function darauf zugreifen kann und dann natürlich die ganzen variablen bekommt um sie in die verschiedenen Designs einzubinden?
Hab schonmal versucht die Schleife in eine eigene Funktion zu packen... aber irgendwie klappt das mit dem returnen von mehreren Variablen nicht.
Danke für eure Hilfe
MfG
Fips
-
Du könntest die ganzen Variablen in ein Array packen und dann dieses Array zurückgeben lassen.
Zitat von Fips
greetz
daddzbe inspired...simplify...
-
20.04.05 17:21 #3
- Registriert seit
- Jan 2004
- Ort
- Paderborn
- Beiträge
- 1.210
Lass dir doch einfach $row[] zurückgeben.
-
ähh für was sollte ich dann die Schleife auslagern? Wenn ich ein Array zurückgebe muss ich es ja wieder auslesen... Dann kann ich auch gleich die eigentliche Schleife in der Funktion lassen. Dachte nur ich könnte halt bissl Code sparen indem ich die Schleife zusammenfasse...
Zitat von daddz
MfG
Fips
Edit: ahh sorry jetzt hab ich erst verstanden... bin heut nich so schnell
-
Wenn mit mysql_fetch_assoc() arbeitest, kannst Du $row zurückgeben und erhältst ein assoziatives Array. Wenn Du die Felder in Deinem Select explizit erwähnst, weisst Du auch, welchen Arrayindex sie dann haben, ohne in die DB schauen zu müssen. Gefällt Dir der Name des Feldes nicht oder hältst Du ihn zwar in der DB für toll, im PHP aber für ungeeignet, kannst Du auch einen Aliasnamen mit "Feldname AS Aliasname" im Query angeben.
Edit: wenn Du dieses assoziative Array dann in extract() reinschmeißt erhältst Du mit einer Anweisung die Variablen.
Gruß hpvwGeändert von hpvw (20.04.05 um 17:32 Uhr)
-
Also meine SQL-Klasse arbeitet mit mysql_fetch_array... Versteh die ganze sache immer noch nicht... Steh heute irgendwie aufm Schlauch
MfG
Fips
-
PHP-Code:
$r = $db->select("SELECT id,boxid AS box_id,conid AS con_id,.......,status from main WHERE id='$id'");
//Daten in der DB-Klasse mit fetch_assoc, statt fetch_array auslesen!
foreach ($r as $row) {
extract($row);
echo $id." ".$box_id;
}
-
hab das jetzt mal so gemacht und es scheint zu funktionieren... Kann doch jetzt eigentlich in meiner Klasse die Select Anweisung in mysql_fetch_assoc umändern und dann alle Select Anweisungen so ausführenPHP-Code:
$res = $db->execute("SELECT * from main WHERE id='$id'");
$row = mysql_fetch_assoc($res);
extract($row);
//... Ausgabe der Variablen im Design
Oder?PHP-Code:$res = $db->select("SELECT * from main WHERE id='$id'");
extract($row);
//... Ausgabe der Variablen im Design
MfG und Danke für die Hilfe
Fips
-
Ja kannst Du.
EDIT: Doch nicht, Du hast die Schleife, die alle Zeilen ausliest vergessen. Wenn ich das Ergebnis von DB->select aus Deinem ersten Post richtig interpretiere, gibt dieses ein zweidimensionales Array zurück. Durch die erste Array-Ebene musst Du immer noch von Hand mit foreach ($r as $row) durch. Extract ersetzt alle Zeilen zwischen den geschweiften Klammern, vorausgesetzt natürlich, Du arbeitest mit fetch_assoc. /EDIT
Ich persönlich würde ohnehin immer mit mysql_fetch_assoc arbeiten, da dann die Arrayindizes immer den Feldern bzw. Aliasfeldern entsprechen. Der Zugriff auf die Feldnummern birgt immer die Gefahr, dass man bei einer Änderung im Query evtl. den gesamten Quellcode neuschreiben muss.
Wenn man die Feldnamen nicht kennt, kann man ja auch bei mysql_fetch_assoc mit foreach durch das Zeilenarray wandern (und dabei gleich die Feldnamen erfahren).Geändert von hpvw (20.04.05 um 18:22 Uhr)
-
Ja werd das jetzt mal umstellen... Hatte ne fertige SQL-Klasse genommen aber hab mir da schon einige andere Sachen angepasst. Danke nochmal
Zitat von hpvw
MfG
Fips
Edit: Ähh wie iss das eigentlich wenn ich mehr wie ein datensatz auslese?Geändert von Fips (20.04.05 um 18:24 Uhr)
-
Also so?
Meine Select Anweisung sieht jetzt so aus:PHP-Code:$res = $db->select("SELECT * from main WHERE id='$id'");
foreach ($res as $row)
{
extract($row);
//... Ausgabe im Design
}
PHP-Code:$conn = $this->connection;
if ($this->debug_on) $this->writeDebugLog(0, $sql, "select");
$results = mysql_query($sql,$conn);
if( (!$results) or (empty($results)) ) {
mysql_free_result($results);
return false;
}
$data = myaql_fetch_assoc($result);
mysql_free_result($results);
return $data;
-
Hoppala, das sieht ja doch anders aus, als ich dachte.
Deine Select-Funktion hatte ich eher so erwartet:
Dann kannst Du so auslesen, wie in Deinem ersten Code deines letzten Posts.PHP-Code:class Datenbank {
//...
function select($sql) {
$conn = $this->connection;
if ($this->debug_on) {
//Persönliche Meinung zur Übersicht:
//If immer mit Klammern, auch wenn es
//nur ein Statement gibt.
$this->writeDebugLog(0, $sql, "select");
}
$results = mysql_query($sql,$conn);
if( (!$results) or (empty($results)) ) {
mysql_free_result($results);
return false;
}
$data = array();
while ($data[] = mysql_fetch_assoc($results)) {
//Ich liebe Schleifen ohne Body ;)
}
mysql_free_result($results);
return $data;
}
//...
}
Gruß hpvw
-
ok danke
MfG
Fips
-
Muss leider doch nochmal Posten... hab alles geändert aber jetzt kommt öfters im script folgendes:
Teilweise zeigt er ja richtig an aber teilweise auch doppelt oder garnicht...Warning: extract(): First argument should be an array in /home/fips/public_html/lager/index.php on line xxx
Kann jemand helfen?
MfG
Fips
-
Zeige doch mal Deinen aktuellen Code, wie soll man so denn einen Fehler suchen?
Die Meldung ist ja wohl klar, jetzt solltest Du Dir überlegen, wie es kommt, dass die Variable, die du übergibst kein Array ist und unter welchen Bedingungen sie kein Array ist.
Könnte sein, dass sie false ist, weil das Query keine Ergebnisse bringt. Sowas solltest Du abfangen.
Gruß hpvw
Ähnliche Themen
-
Felder zusammenfassen
Von DrMueller im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 30.04.09, 10:50 -
.NET Assemblies zusammenfassen
Von Passer im Forum .NET CaféAntworten: 2Letzter Beitrag: 24.07.06, 21:35 -
css tags zusammenfassen
Von j©sh im Forum CSSAntworten: 2Letzter Beitrag: 06.03.05, 00:24 -
texturen zusammenfassen
Von IFI ManiA im Forum 3D Studio MaxAntworten: 0Letzter Beitrag: 05.02.04, 15:32 -
Variablen zusammenfassen
Von Bigbutcher im Forum PHPAntworten: 2Letzter Beitrag: 03.06.03, 17:47





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren