Hallo,

Ik heb een klein CMS waar ik een tabel heb aangemaakt. Hierin wordt uit een database ID's en tekst uit gehaald:


<?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>


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:


<?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;
   		}
	}
?>


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
Plaats je code aub tussen [code ] / [/code ] -tags (zonder spatie).
Obelix en Idefix op 12/11/2011 10:01:46

Plaats je code aub tussen [ code ] / [ / code ] -tags (zonder spatie).


Gedaan, is idd veel overzichterlijker zo ;-)

Groet,
Ferdi
Ger, bedankt voor je reactie.

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
Dank je voor je tip Ger, ik heb het zo opgelost :)

De input (hier heb ik bij textarea een aanpassing gemaakt):

echo "<input type='checkbox' name='tekst[]' value='" . $a_id. "'>Tekst wijzigen:" . $a_id . "\n";
<textarea name="fototekst[<?php echo $a_id ?>]" cols="70" rows="4"><?php echo $fototekst; ?></textarea><br />


Output:

<?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; 
   		}
	}
?>


Groet,
Ferdi

Reageren