1 formulier met 2 types updaten werkt niet
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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>
<!-- 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)
1
2
3
4
5
6
7
8
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;");
}
}
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.
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..
Ik zie het zo ook niet.
Zo werkt het wel..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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>
<!-- 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
...
<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.
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..