1 formulier met 2 types updaten werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stephan

Stephan

01/06/2009 15:09:00
Quote Anchor link
Hallo Allemaal,

Ik heb een formulier waarbij de gegevens uit de database komen dit werkt perfect.
Alleen als ik hem moet gaan updaten dan gaat het fout. Ik heb 2 types op de pagina een normaal tekstveld en een option list alleen er kunnen er meerdere toegevoegd worden.



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form method="post">
<!-- input 1 -->
<input type="hidden" name="id[]" value="1" />
<input type="hidden" name="type[]" value="1" />
<textarea name="content[]" >.$tekstuitdatabase.</textarea>
<!-- input 2 -->
<input type="hidden" name="id[]" value="3" />
<input type="hidden" name="type[]" value="2" />
<select name="afbeelding[]" >
<option value="1">Logo zonder ondertekst</option>
<option value="2">Logo met ondertekst</option>
</select>
<!-- input 3 -->
<input type="hidden" name="id[]" value="6" />
<input type="hidden" name="type[]" value="1" />
<textarea name="content[]" >.$tekstuitdatabase.</textarea>
base.</textarea>
<input type="submit" value="opslaan" />
</form>


php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
for ($i = 0; $i < count($_POST['type']); $i++) {
  if($_POST['type'][$i] == 1){
    $db->query("UPDATE blocks SET content = '".$_POST['content'][$i]."' WHERE block_id = '".$_POST['id'][$i]."' LIMIT 1;");
  }
  if($_POST['type'][$i] == 2){
    $db->query("UPDATE blocks SET afbeelding = '".$_POST['afbeelding'][$i]."' WHERE block_id = '".$_POST['id'][$i]."' LIMIT 1;");
  }
}


Door de count wordt de array alleen verkeerd.
1e = id[1], content[1]
2e = id[2], afbeelding[1]
3e = id[3], content[2]

Hoe kan ik dit oplossen zonder extra input velden oid neer te zetten.
 
PHP hulp

PHP hulp

15/11/2024 10:54:24
 

01/06/2009 15:11:00
Quote Anchor link
Sowieso kun je geen twee elementen hebben met dezelfde name.
Andere names gebruiken dus.
Zie ook dit.
Gewijzigd op 01/01/1970 01:00:00 door
 
Stephan

Stephan

01/06/2009 15:21:00
Quote Anchor link
normaal gesproken niet nee maar als je een uploadformulier maakt voor een aantal afbeeldingen waarbij je meerdere afbeeldingen tegelijkertijd kan uploaden gebruik je ook <input name="file[]" type="file" id="file[]" size="50" /> dus dat is het probleem niet..
 

01/06/2009 15:27:00
Quote Anchor link
Ownee, sorry. My bad.
Ik zie het zo ook niet.
 
Stephan

Stephan

01/06/2009 15:39:00
Quote Anchor link
Het werkt wel met extra hidden fields maar dat is nou juist wat ik niet wil want dan krijg je allemaal nutteloze hidden fields. En dat is alleen maar troep in de broncode.

Zo werkt het wel..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form method="post">
<!-- input 1 -->
<input type="hidden" name="id[]" value="1" />
<input type="hidden" name="type[]" value="1" />
<input type="hidden" name="afbeelding[]" value="NULL" />
<textarea name="content[]" >.$tekstuitdatabase.</textarea>
<!-- input 2 -->
<input type="hidden" name="id[]" value="3" />
<input type="hidden" name="type[]" value="2" />
<input type="hidden" name="content[]" value="NULL" />
<select name="afbeelding[]" >
<option value="1">Logo zonder ondertekst</option>
<option value="2">Logo met ondertekst</option>
</select>
<!-- input 3 -->
<input type="hidden" name="id[]" value="6" />
<input type="hidden" name="type[]" value="1" />
<input type="hidden" name="afbeelding[]" value="NULL" />
<textarea name="content[]" >.$tekstuitdatabase.</textarea>
base.</textarea>
<input type="submit" value="opslaan" />
</form>


Ik hoop toch dat iemand mij kan zeggen hoe ik dit op kan lossen zonder de hidden fields te gebruiken want hoe minder code hoe beter :)
Gewijzigd op 01/01/1970 01:00:00 door Stephan
 
Emmanuel Delay

Emmanuel Delay

01/06/2009 15:46:00
Quote Anchor link
Zou je niet de index expliciet in de html zetten?

...
<input type="hidden" name="type[4]" value="1" />
<textarea name="content[4]" >'.$tekstuitdatabase.'</textarea>
...

Dan heb je die id[] niet meer nodig. Gewoon uit de key halen.
 
Stephan

Stephan

01/06/2009 16:19:00
Quote Anchor link
ja zou kunnen.
Maar de value van het veld id zou ook 300 kunnen zijn en dan samen met een value van het veld id die 10 is, dit gaat dan toch fout met updaten of zie ik dit verkeerd..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.