webForumDet fria alternativet

Spara undan en array från en form

PHP

4 svar · 363 visningar · startad av swede

Medlem sedan feb. 2004230 inlägg
Frågan#1

Jag har en form, där jag försöker lagra undan data i en array,
för att sedan spara ned den i en databas.

Min HTML form:

<form method="POST" action="index.php" >
  Namn : <input type="text" name="name" /><br/>
  Adress : <input type="text" name="addr" /><br/>
  Husdjur :<br/>
  Namn : <input type="text" name="pets[]" /><br/>
  Namn : <input type="text" name="pets[]" /><br/>
  Namn : <input type="text" name="pets[]" /><br/>
  <input type="submit" name="Skicka" />
</form>

PHP scriptet för att spara datat:

$owner = "INSERT INTO owner (name, addr) VALUES ('$name','$addr')";
mysql_query($owner) or die("Could not update owner db");

if (!empty($pets)) {
  $owner_id = mysql_insert_id();

  for ($i = 0; $i=count($pets); $i++) {
    $pets = "INSERT INTO pet (owner_id, name) VALUES ('$owner_id', '$pets[$i]')";
    mysql_query($pets);
  }
}

Det trista är att jag inte får någon vettig data från arrayen,
så jag måste göra något general fel någonstans.

Skulle vara tacksam om någon kunde berätta var jag gjort bort mig.

Medlem sedan aug. 20002 975 inlägg
#2
for ($i = 0; $i < count($pets); $i++) {

Det andra argumentet blir aldrig sant, därför går du aldrig in i for-satsen.

Sedan skulle jag rekommendera att du använde dig av $_POST-arrayen istället.
Det är inte bara en god vana, utan allt fler webbhotell börjar dessutom ha register_globals Off.

Medlem sedan feb. 2004230 inlägg
#3

Förstår inte hur du menar...

Jag hämtar ut post datat lite högre upp i koden:

$name = $_POST['name'];
$addr = $_POST['addr'];
$pets[] = $_POST['pets[]'];

Är inte det rätt?

Dessutom gör min loopå någon form av insert för jag brukar
få lite skräp i min databas tabell:

mysql> select * from pet;
+--------+----------+------+
| id     | owner_id | name |
+--------+----------+------+
| 716883 |       12 |      |
+--------+----------+------+
1 row in set (0.00 sec)

Men jag har angett 3 värden i min array...

Medlem sedan juni 20031 837 inlägg
#4

du ska inte ha med [] på variablen, då lägger du väret på nästa position i arrayn, det blir då en array med längen 1 som i sin tur innehåller en array.
sen bör du nog även skicka med ID för arrayn i din HTML-kod

  Namn : <input type="text" name="pets[0]" /><br/>
  Namn : <input type="text" name="pets[1]" /><br/>
  Namn : <input type="text" name="pets[2]" /><br/>

för att hämta ut värdena

$pets = $_POST['pets'];
Medlem sedan aug. 20002 975 inlägg
#5
$pets = $_POST['pets'];

Men varför ska du överhuvudtaget lägga över värden från en variabel till en annan?

256 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)