Checkbox aangevinkt? Tekst bij behorende ID plaatsen ...
Ik heb een klein CMS waar ik een tabel heb aangemaakt. Hierin wordt uit een database ID's en tekst uit gehaald:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
while ($rij = mysql_fetch_array($res)) {
$p_id = $rij['p_id'];
$s_id = $rij['s_id'];
$a_id = $rij['a_id'];
$pa_id = $rij['pa_id'];
$ext = $rij['ext'];
$afbeeldingen = $fotodir.$a_id.$ext;
$fototekst = $rij['tekst'];
?>
<tr>
<td>
<input type="hidden" name="pa_id" value="<?php echo $pa_id; ?>" />
<?php
image_resize('100', '100', $afbeeldingen, 'Image');
?>
</td>
<td>
<?php
echo "<input type='checkbox' name='tekst[]' value='" . $a_id. "'>Tekst wijzigen:" . $a_id . "\n";
?>
<textarea name="fototekst[]" cols="70" rows="4"><?php echo $fototekst; ?></textarea><br />
</td>
</tr>
<?php
}
?>
</table>
<input class="input_button_rood" type="submit" name="submit" value="WIJZIG" onCLick="return Confirm(14)" />
</form>
while ($rij = mysql_fetch_array($res)) {
$p_id = $rij['p_id'];
$s_id = $rij['s_id'];
$a_id = $rij['a_id'];
$pa_id = $rij['pa_id'];
$ext = $rij['ext'];
$afbeeldingen = $fotodir.$a_id.$ext;
$fototekst = $rij['tekst'];
?>
<tr>
<td>
<input type="hidden" name="pa_id" value="<?php echo $pa_id; ?>" />
<?php
image_resize('100', '100', $afbeeldingen, 'Image');
?>
</td>
<td>
<?php
echo "<input type='checkbox' name='tekst[]' value='" . $a_id. "'>Tekst wijzigen:" . $a_id . "\n";
?>
<textarea name="fototekst[]" cols="70" rows="4"><?php echo $fototekst; ?></textarea><br />
</td>
</tr>
<?php
}
?>
</table>
<input class="input_button_rood" type="submit" name="submit" value="WIJZIG" onCLick="return Confirm(14)" />
</form>
Op het moment dat op de "submit" knop wordt gedrukt dan wil ik dat alleen bij de aangevinkte tekst (checkbox bij de textarea) de gegevens bij de juiste id wordt geplaatst in de database:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
case "wijzigen_image_sql":
$fotodir = "../images/portfolio/"; // Map waar de foto's zijn opgeslagen
$pa_id = $_POST["pa_id"];
// Arrays checkboxen
if(isset($_POST['tekst'])) {
$te = $_POST['tekst'];
}
if(isset($_POST['fototekst'])) {
$fote = $_POST['fototekst'];
}
if (($_SERVER["REQUEST_METHOD"] == "POST") && (($_POST['submit']) == "WIJZIG")) {
if(isset($tekst)) { // Als er een tekst gewijzigd moet worden
foreach ($te as $keyte) {
$one = "UPDATE portfolio_afbeelding SET ";
foreach ($fote as $keyfo => $text) {
if ($keyte == $keyfo) {
$two = "tekst='" . $text . "' WHERE afbeelding_id='". $keyte . "'</br >";
}
}
echo $one.$two;
}
}
?>
case "wijzigen_image_sql":
$fotodir = "../images/portfolio/"; // Map waar de foto's zijn opgeslagen
$pa_id = $_POST["pa_id"];
// Arrays checkboxen
if(isset($_POST['tekst'])) {
$te = $_POST['tekst'];
}
if(isset($_POST['fototekst'])) {
$fote = $_POST['fototekst'];
}
if (($_SERVER["REQUEST_METHOD"] == "POST") && (($_POST['submit']) == "WIJZIG")) {
if(isset($tekst)) { // Als er een tekst gewijzigd moet worden
foreach ($te as $keyte) {
$one = "UPDATE portfolio_afbeelding SET ";
foreach ($fote as $keyfo => $text) {
if ($keyte == $keyfo) {
$two = "tekst='" . $text . "' WHERE afbeelding_id='". $keyte . "'</br >";
}
}
echo $one.$two;
}
}
?>
Ik krijg dan als output:
UPDATE portfolio_afbeelding SET tekst='test2' WHERE afbeelding_id='1'
UPDATE portfolio_afbeelding SET tekst='test3' WHERE afbeelding_id='2'
UPDATE portfolio_afbeelding SET tekst='' WHERE afbeelding_id='3
Bij ID1 moet "test1" zijn, bij ID2 moet "test2" zijn, enz.. Zoals hierboven is "test1" gewoon overgeslagen.
Op de één of andere manier klopt "if ($keyte == $keyfo)" niet.
Is bovenstaande methode een juiste methode?
Hoe krijg ik het voor elkaar dat de tekst bij de juiste ID wordt geplaatst?
Graag een tip :).
Groet,
Ferdi
Gewijzigd op 12/11/2011 10:33:38 door Ferdi Eenkhoorn
Obelix en Idefix op 12/11/2011 10:01:46:
Gewijzigd op 12/11/2011 10:32:47 door Ferdi Eenkhoorn
arrays beginnen met index nul
Ja dat weet ik en dat maakt in dit geval niet uit. Ik vergelijk van beide array's de index waarde met "if ($keyte == $keyfo)", als die gelijk is dan moet deze de gegevens tonen. Ik maak (denk ik) een denk fout, maar welke??
in je eerste foreach is de $keyte de waarde van het element en niet de key zelf
De input (hier heb ik bij textarea een aanpassing gemaakt):
Code (php)
Output:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if(isset($_POST['tekst'])) {
$te = $_POST['tekst'];
}
if(isset($_POST['fototekst'])) {
$fote = $_POST['fototekst'];
}
if (($_SERVER["REQUEST_METHOD"] == "POST") && (($_POST['submit']) == "WIJZIG")) {
if(isset($tekst)) { // Als er een tekst gewijzigd moet worden
foreach ($te as $keyte) {
$one = "UPDATE portfolio_afbeelding SET ";
foreach ($fote as $keyfo => $text) {
if ($keyte == $keyfo) {
$two = "tekst='" . $text . "' WHERE afbeelding_id='". $keyte . "'</br >";
}
}
echo $one.$two;
}
}
?>
if(isset($_POST['tekst'])) {
$te = $_POST['tekst'];
}
if(isset($_POST['fototekst'])) {
$fote = $_POST['fototekst'];
}
if (($_SERVER["REQUEST_METHOD"] == "POST") && (($_POST['submit']) == "WIJZIG")) {
if(isset($tekst)) { // Als er een tekst gewijzigd moet worden
foreach ($te as $keyte) {
$one = "UPDATE portfolio_afbeelding SET ";
foreach ($fote as $keyfo => $text) {
if ($keyte == $keyfo) {
$two = "tekst='" . $text . "' WHERE afbeelding_id='". $keyte . "'</br >";
}
}
echo $one.$two;
}
}
?>
Groet,
Ferdi
Gewijzigd op 12/11/2011 15:01:24 door Ferdi Eenkhoorn