Felder aus MySQL auslesen und in PHP einzeln ansprechen
Susi
- php
Hallo,
ich habe hier ein Problem wo ich nicht weiterkomme...
Ich lese aus meiner Datenbank die Felder Menü-Name aus, aber wie lese dich die Felder aus dem Array in PHP?
Ich habe das so gemacht aber es funktioniert nicht?
---------
$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle ORDER BY mid ASC";
$result = mysql_query(($query),$dbh);
while ($row = mysql_fetch_array($result)) {
echo $row[0];
}
---------
Alle Date werden im Feld 0 vom Array geschrieben aber ich möchte jeden datensatz in ein eigenes Array Feld schreiben so das ich dann
$row[0] $row[1] $row[2] einzeln auslesen kann
Was mache ich den falsch? Ich versteh das irgendwie nicht mehr...
Gruß Susi
Hallo,
Du musst echo $row[Feld der Tabelle das ausgelesen werden soll] schreiben!
samy,
Du musst echo $row[Feld der Tabelle das ausgelesen werden soll] schreiben!
Hallo,
nein das geht auch nicht.
Ich habe die Spalte menu und in jeder Zeile steht ein Datensatz z.B.:
Wir über und
Philosphie
Leistung
Kontakt
Aber nach meinem Code wird der Komplette Datensatz wieder geben.
Ich möchte gerne folgendes Variablen in mein Variablen stehen haben welches natürlich aus der Datenbank kommen soll ich schreibe es aber nochmals auf um zu verdeutlichen was ich meine $row[0]='Wir über uns' $row[1]='Philosphie' $row[2]='Leistung' etc.
Aber ich habe in $row[0] folgendes stehen: $row[0]='Wir über undPhilosphieLeistungKontakt' Aber so ist das falsch! Ich will die in ein Array haben aber nicht alle im ersten Feld sondern jeden Datenbankzeile in ein eigenes Array Feld aber warum geht das bei mir nicht?
hi
Ich lese aus meiner Datenbank die Felder Menü-Name aus, aber wie lese dich die Felder aus dem Array in PHP?
Ich habe das so gemacht aber es funktioniert nicht?
$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle ORDER BY mid ASC";
$result = mysql_query(($query),$dbh);
$i=0;
while ($row = mysql_fetch_array($result)) {
echo $row[$i];
$i++;
}
so?
gruß
bjb
ne abend Susi,
while ($row = mysql_fetch_array($result))
diese funktion kann sowohl ein numerisches array (mit zahlen als index) als auch ein assoziatives array (strings als index) erzeugen. der standard ist eigentlich beides, kann aber sein, dass es geändert wurde. mit mysql_fetch_array($result, MYSQL_NUM) legst du fest, dass er nur das numerische erzeugen soll. versuch es mal damit als:
while ($row = mysql_fetch_array($result, MYSQL_NUM))
Ilja
while ($row = mysql_fetch_array($result, MYSQL_NUM))
Das geht auch nicht? Warum schreibt der das nicht in ein Arry? So wie es mir aussieht ist das nur 1 String aber laut Manuel sollte es doch gehen?
Verstehe ich nicht?
Hi Ilja,
Zunächst betrachte ich es mal als riesen Vorteil die Felder über Ihren Spaltenanmen anzusprechen.
Sorry was soll dann der Quatsch mit numerischen Array ausserdem löst es das Prob nicht.
TomIRL
Ich habe mir un gedacht ich muß erst das Arry erzeugen aber das funktioniert auch nicht...
Als Ausgabe bekomme ich dann folgendes:
ArrayArrayArrayArrayArrayArrayArray
Ich weiß gar nicht wo der Denkfehler ist oder wo ich was falsch mache?
$row = array();
$i=0;
while ($row[$i] = mysql_fetch_array($result, MYSQL_NUM))
{
echo $row[$i];
$i++;
}
hi
$i=0;
while ($row[$i] = mysql_fetch_array($result, MYSQL_NUM))
^^^^ich glaube das muss da nicht rein
meiner meinung nach einfach:
while ($row = mysql_fetch_array($result))
geht das nicht?
ich habe das auch mal so benutzt und das ging einwandfrei
gruß
bjb
hi nochmal:
while ($row[$i] = mysql_fetch_array($result, MYSQL_NUM))
^^^^ich glaube das muss da nicht rein
meiner meinung nach einfach:
while ($row = mysql_fetch_array($result))
korrektur:
ich habe dann in der while-schleife iene neuen array benutzt:
$newarray[$i] = $row; <-- in den array
gruß
bjb
Hallo,
Ich werde das Problem jetzt mal löeen damit hier nicht so viel rumgerätzelt wird.
Also er schreibt alles in das Array aber nach einander also wenn die while-Schleife das erste mal durchläuft dann hat $row[0] den Wert "Wir uber uns" und dann bei dem zweiten durchlauf der Schleife den Wert "keine Ahnung" also wenn du allse unter ein ander haben wilst dann schreib einfach in die Schleife:
echo $row[0]."<br>";
oder mach das ganze in einer Tabelle.
denn wenn du nur "echo $row[0];" schreibst dann wird einfch alles nach einander ausgegeben.
samy,
Hallo Samuel,
Also er schreibt alles in das Array aber nach einander also wenn die while-Schleife das erste mal durchläuft dann hat $row[0] den Wert "Wir uber uns" und dann bei dem zweiten durchlauf der Schleife den Wert "keine Ahnung" also wenn du allse unter ein ander haben wilst dann schreib einfach in die Schleife:
echo $row[0]."<br>";
Moment bist Du Dir da sicher?
Ich bin mir auch sicher, dass Du gerade echten Mist verzapfst!
row[0] exsitiert nicht!
row[menue] dafür.
Ich glaube mir fallen gleich wieder Haar aus.
:-)
Tom
echo $row[0]."<br>";
oder mach das ganze in einer Tabelle.
denn wenn du nur "echo $row[0];" schreibst dann wird einfch alles nach einander ausgegeben.
»»
»»
»»
»»
»»
»»
Nee da hast du mich falsch verstanden, das wär ja auch zu einfach als Lösung
Ich möchte nicht alles in $row[0] stehen haben sondern der nächste Werte soll in $row[1] und der übernächste Wert in $row[2] geschrieben werden Die Werte lese ich aus der Tabelle auch Zeilenweise aus. Das heisst jede Zeile hat eine ID die ich aber nicht brauche.
Ich möchte nicht alles in $row[0] stehen haben sondern der nächste Werte soll in $row[1] und der übernächste Wert in $row[2] geschrieben werden Die Werte lese ich aus der Tabelle auch Zeilenweise aus. Das heisst jede Zeile hat eine ID die ich aber nicht brauche.
Ich erkenne den Sinn nicht:
Aber trotzdem:
$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle ORDER BY mid ASC";
$result = mysql_query(($query),$dbh);
while ($row = mysql_fetch_array($result)) {
echo $row[menue];
$new_arr[]=$row[menue];
}
print_r ($new_arr);
Ungetestet.
TomIRL
Ich möchte nicht alles in $row[0] stehen haben sondern der nächste Werte soll in $row[1] und der übernächste Wert in $row[2] geschrieben werden Die Werte lese ich aus der Tabelle auch Zeilenweise aus. Das heisst jede Zeile hat eine ID die ich aber nicht brauche.
Ich erkenne den Sinn nicht:
Aber trotzdem:$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle ORDER BY mid ASC";
$result = mysql_query(($query),$dbh);while ($row = mysql_fetch_array($result)) {
echo $row[menue];
$new_arr[]=$row[menue];}
print_r ($new_arr);
Als Ausgabe kommt folgendes:
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => )
Der Sinn ist ich habe ein JavaScript Menü wo die Menü Punkte aus der Datenbank geholt werden, was ja nicht funktioniert :-(
Wenn ich nun ein Menüpunkt ändere brauche ich das nur über mein CMS tun und fertig ist das neue Menü
Und die Variable für jeden Menüpunkt heißt bei mir $row[0]; $row[1]; $row[2]; etc.
So sieht mein Menü aus:
oCMenu.makeMenu('top0','',' <?=$row[0];?>','index.php?m=1000&s=0','',80,20)
oCMenu.makeMenu('top1','',' <?=$row[1];?>','index.php?m=2000&s=0','',110,20)
oCMenu.makeMenu('top2','',' <?=$row[2];?>','index.php?m=3000&s=0','',100,20)
Als Ausgabe kommt folgendes:
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => )
new_arr[]="$row[menue]";
Anführungsstriche fehlten ist ja ein String.
Als Ausgabe kommt folgendes:
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => )new_arr[]="$row[menue]";
Anführungsstriche fehlten ist ja ein String.
So nun funktioniert es! Das es eben nicht lief lag daran das ich "menu" so definiert und Du so "menue" habe.
Aber $row[menu]; ist doch auch ein Array oder?
Was ich nun nicht verstehe warum muß man die Position im array nicht mit i hochzählen? In meinen ersten geh versuchen hat er alle Werte an der ersten Position meines Array geschrieben? Aber warum?
Das ist die Lösung:
$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle WHERE sitemap_deaktiviert!='1' ORDER BY sort ASC";
$result = mysql_query(($query),$dbh);
while ($row = mysql_fetch_array($result)) {
//echo $row[menu];
$new_arr[]=$row[menu];
}
echo $new_arr[0]."<br>";
echo $new_arr[1]."<br>";
echo $new_arr[2]."<br>";
echo $new_arr[3]."<br>";
Aber $row[menu]; ist doch auch ein Array oder?
Was ich nun nicht verstehe warum muß man die Position im array nicht mit i hochzählen? In meinen ersten geh versuchen hat er alle Werte an der ersten Position meines Array geschrieben? Aber warum?
$row ist ein assotiatives Array
Mit dem Spaltennamen als Schlüssel.
Weil mysql_fetch_array () liest die Werte Zeilenweise in ein Array ein.
$new_arr[]=$row[menu]
erzeugst Du ein neues Array.
Also ein numerisches Array.
Und wenn ein Schlüssel schon besetzt ist zählt er immer eins hoch.
Es gibt auch andere möglichkeiten die gehen.
Wie immer.
TomIRL
$row ist ein assotiatives Array
Mit dem Spaltennamen als Schlüssel.Weil mysql_fetch_array () liest die Werte Zeilenweise in ein Array ein.
$new_arr[]=$row[menu]
erzeugst Du ein neues Array.
Also ein numerisches Array.
Und wenn ein Schlüssel schon besetzt ist zählt er immer eins hoch.
Es gibt auch andere möglichkeiten die gehen.
Wie immer.
also sind assotiatives Array immer Spalten? Mir war nie richtig klar was die Bedeutung von assotiatives Array sind
und mit $new_arr[] erzeuge ich ein Zeilenweise Array?
Aber warum muß ich hier nicht mit arry() das Array erzeugen?
gruss susi
also sind assotiatives Array immer Spalten? Mir war nie richtig klar was die Bedeutung von assotiatives Array sind
assoziative meint nur, dass es eben kein nummerisches Array ist.
also der Schlüssel ist ein String.
mysql_fetch_array ()
liest die Zeile in ein Array.
die zeile heist bei die $row.
D.h. $row ist ein array. mit dem key [menue] und dem Wert "Wir über uns"
So nun liest du ja mit while und mysql_fetch_array () jede Zeile in ein Array. Du wolltest aber die Spalte Menu in ein Array haben.
Also erzeugst Du ein Array mit
$new_arr[]=$row[menu]
Wobei der Schlüssel hier automatisch erzeugt wird.
Numerisch beginnend mit 0.
http://www.php.net/manual/de/language.types.array.php
TomIRL
Hallo,
ich habe hier ein Problem wo ich nicht weiterkomme...
Ich lese aus meiner Datenbank die Felder Menü-Name aus, aber wie lese dich die Felder aus dem Array in PHP?
Ich habe das so gemacht aber es funktioniert nicht?
$dbh = getConn();
$db_tabelle = "menu";
$query = "SELECT menu FROM $db_tabelle ORDER BY mid ASC";
$result = mysql_query(($query),$dbh);while ($row = mysql_fetch_array($result)) {
echo $row[0];
Was machst Du?
mit
print_r ($row);
Zeigst Du Dir an was da eigentlich da ist.
Dein Array sieht so aus:
$row[spaltenname1]="spalteninhalt";
Sprich da Du aj nur das Feld Menue ausliest, hast Du folgenden Inhalt:
$row[menue]
Und wo ist das Problem?
TomIRL
hi Susi,
ich war gestern sehr kurz angebunden (bier war schon kalt). hoffentlich hat sich dein problem von gestern gelöst, Tom hat sich ja schon ausführlich dazu geäußert. wenn noch fragen zu der vorgehensweise, insbesondere zum unterschied zwischen numerischen and assoziativen arrays sind, bin ich oder sicherlich auch andere bereit, dir das näher zu bringen. hätte dir ne e-mail geschrieben, konnte aber deine adresse nicht finden. ansonten schönes wochenende.
gruß
Ilja