PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Feld in mysql DB in ein array speichern



crunchips
16-09-2004, 10:08
erst einmal hi, habe schon das erste problem, mit dem ich nicht klar komme. bin neu auf dem gebiet php, jedoch einige kenntnisse in java und c. möchte gerne aus einer Mysql DB werte aus einem Feld in ein array speichern und mit dem Array weiter arbeiten. Folgendes problem habe ich:
$query = mysql_query("Select kernk from gewichtung");
while ($row = mysql_fetch_array($query))
{
echo $row['kernk'];
}

das Feld "kernk" hat bereits 8 Werte. Mit diesem Code speichert er mir alle 8 Werte an die erste Stelle des Arrays (also 0. Position). Wollte mit dem Array erreichen, das ich alle Werte des Feldes "kernk" einzeln ansprechen kann, nur funktioniert das nicht. Kann mir jemand sagen welchen fehler ich mache? danke im voraus bye crunny.

undefined
16-09-2004, 11:12
Dein ansatz ist richtig du verwendest aber den falschen Zeiger auf das Array.
In deinem Vorhaben würde ich assoc verwenden.


$query = mysql_query("Select kernk from gewichtung");
while ($row = mysql_fetch_assoc($query))
{
print_r( $row['kernk'] );
}

PS: MySQL nimmt ab 4.* das case Sensitive sehr ernst daher eher

SELECT `kernk` FROM `gewichtung` ORDER BY `id`;

crunchips
16-09-2004, 13:18
hi undefined, danke für deine prompte mail. leider hat sich bei mir nichts geändert. auch mit deiner methode speichert er mir alles in die 0. Position, bei 8 Werten in der Tabelle. durch probieren bin ich auf diese art und weise gestossen, die genau das macht was ich wollte. muss ja noch ne for-schleife benutzen.

$result = @mysql_query("Select kernk from gewichtung");

//Ergebnis in ein Array auslesen:

$kernk =array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$kernk[] = $row["kernk"];
}

$anz_kernk = count($kernk);

//legen des Codes zum generieren der input-Felder in eine for-Schleife und hochzählen von namen-Attribute

for ($a =0 ; $a < $anz_kernk; $a++) {

echo '$kernk[$a] . ": <input type=\"text\" name=\"projektname".$a . "\" size=\"20'"><br>\n";

}
?>

kannst du mir bitte bei einer sache noch behilflich sein. in die input felder sollen jetzt integer geschrieben werden. Hätte ich bspw. 2 Input Felder würde ich das so machen:
<tr><td width="150">Projekt Nummer</td>
<td width="150">Projekt Name</td>
</tr>
<tr><td><input type="text" name="projektnr" size="20"></td>
<td><input type="text" name="projektna" size="20"></td>
</tr>
...
//hier das senden der input felder
<? $pnr = $_Post['projektnr'];
$pna=$_Post['projektna'];
...
?>
Mein Hauptproblem ist jetzt, wie mache ich das mit einem Array, da ich ja nur einen namen"projektname" habe. Denke mir schon das die Hochzählvariable da ne wichtige rolle spielt und wieder ne for-schleife, aber wie. Kannst du mir da nen tip geben???

Danke nochmals bye crunny.

undefined
16-09-2004, 14:21
das geht auch etwas Einfacher ;)


if ($result)
{
$string = "";
while ($row = mysql_fetch_assoc($result))
{
$string .= "<input type=\"text\" name=\"projektname[]\" value\"" . (int)$row["kernk"] . "\" /> <br/>";
}
echo $string;
}

crunchips
16-09-2004, 14:40
servus undefined, kannst du mir da kurz mal erklären was du da gemachst hast. jetzt habe ich input felder gleich der anzahl der werte im Feld kernk. hat jetzt jedes input feld eine eindeutige nr? danke bye...

undefined
16-09-2004, 14:54
das erledigt PHP für dich nach einem Post alle Inputs findest du im Array projektname.


print_r( $_POST['projektname'] );

Wenn du expliziet eine Nummer Zuweisen möchstet kannst du das auch so machen.


if ($result)
{
$string = "";
$i = 1;
while ($row = mysql_fetch_assoc($result))
{
$string .= "<input type=\"text\" name=\"projektname[" . $i . "]\" value=\"" . (int)$row["kernk"] . "\" /> <br/>";
$i++;
}
echo $string;
}

crunchips
16-09-2004, 17:23
hi undefined, sorry aber blick das leider nicht. komme mit dem ersten dann nicht so klar. wahrscheinlich bin ich zu lange dran. kannst du mir nicht bitte ne ausführliche nachricht schicken wie du das gemeint hast? danke bis morgen bye crunny.