• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Array aus DB

mo

Administrator
Teammitglied
Hi,
aus einer DB hole ich mir folgenden Wert:
$formname=$row[formname];
und die row beinhaltet ["Songname", "Songinterpret", "Lyrics"] (ohne die []).
Warum kann ich aus diesen Werten kein Array bauen, in dieser Art (das Array bleibt leer, die size_of ist immer 1):
$formname = array ($formname);
Eigentlich müsste der Inhalt des Arrays doch
$formname = array ("Songname", "Songinterpret", "Lyrics") sein, oder nicht?
bye,
mo
 
hmm also $row ist ein assoziatives Array mit folgendem Aufbau: Songname => wirklicher Songname, Soninterpret => wirklicher Interpret, usw.
Wenn Du jetzt ein Array haben willst, welches nur die Werte, oder nur die Schlüssel enthält, dann brauchst Du eigentlich nur die PHP Array Funktionen array_keys und array_values anzuwenden:
$keys = array_keys ($row);
liefert also $keys ("Songname", "Songinterpret", usw.), genauso, wie
$values = array_values ($row);
alle Werte in einem Array liefert. Die Reihenfolge sollte in beiden Arrays identisch sein, muß aber nicht mit Deiner genannten Reihenfolge übereinstimmen... (z.B. könnte das alphabetisch sortiert sein, oder in der Reihenfolge ins Array gestellt werden, wie in Deinem Select vorgegeben, oder nach Mondphasen sortiert oder ähnliches ;) )
 
irgendwas will da nicht. hier mal mein code:
Code:
for ($i = 0; $i < $anzahl_eintraege; $i++)
{
  $row = mysql_fetch_array($result);
  $id=$row[id];
  $formname_db=$row[formname];
  $formtyp_db=$row[formtyp];
  $formreq_db=$row[formreq];
}

$formname = array_keys($formname_db);
$formtyp  = array_keys($formtyp_db);
$formreq  = array_keys($formreq_db);
wenn ich sizeof($formname) ausgeben lasse, ist der wert gleich 0.

bye,
mo
 
Ja Zement einmal.... was Du hier brauchst ist folgendes:
PHP:
$formname_db = array ();
$formtyp_db = array ();
$formreq_db = array ();
for ($i = 0; $i < $anzahl_eintraege; $i++)
{
  $row = mysql_fetch_array($result);
  $id=$row[id];
  $formname_db [] =$row[formname];
  $formtyp_db [] =$row[formtyp];
  $formreq_db [] =$row[formreq];
}
Jetzt hast Du drei Arrays mit den einzelnen Werten....
 
irgenwas will nicht, keine ahnung. die arrays sind nicht gefüllt.

$handler=mysql_connect($db_server,$db_username,$db_passwort);
mysql_select_db($db_database,$handler);
$result=mysql_query("SELECT id, formname, formtyp, formreq FROM $db_table WHERE id = '$kal_id' ORDER by id DESC",$handler);
$anzahl_eintraege = mysql_numrows($result);

$formname = array();
$formtyp = array();
$formreq = array();

for ($i = 0; $i < $anzahl_eintraege; $i++)
{
$row = mysql_fetch_array($result);
$id=$row[id];
$formname[] = $row[formname];
$formtyp[] = $row[formtyp];
$formreq[] = $row[formreq];
}
echo sizeof($formname); -> gibt 1 aus, aber das array ist leer.
 
hmm komisch....

id ist der eindeutige Schlüssel Deiner Tabelle? Wieso dann eine Schleife.... es kann doch maximal einen Wert geben?? Wenn dem nicht so ist, dann muß id natürlich auch noch identisch behandelt werden (hab ich oben vergessen)
 
das is richtig, die schleife ist überflüssig. aber ohne gehts auch nicht besser.
alle werte stehen im array $formname[0], nämlich "Songname", "Songinterpret", "Lyrics"

ich hab also den verdacht, dass das array gar nicht existiert.
 
so langsam kommen wir der Sache näher....

Also das Feld formname enthält den String "\"Songname\", \"Songinterpret\", \"Lyrics\"" ???
dann ist die Schleife in der Tat überflüssig.
ein
$arrFormname = explode ("," $row[formname]);
liefert Dir ein Array mit den einzelnen Werten.... (allerdings sind die Gänsefüßchen noch drinne.....

eine andere Möglichkeit wäre
preg_match_all ("/(\"[^\"]*\")/", $row[formname], $arrFormName);
echo sizeof ($arrFormName [1]);
sollte diesen Mißstand auch beheben....
wichtig ist hierbei, daß Dein eigentliches Ergebnis-Array ein Subarray ($arrFormName [1]) vom Ergebnis ist......
 
Zurück
Oben