8797 sujets

Développement web côté serveur, CMS

Bonjour ! ;D
Je bloque sur un problème depuis maintenant 3 jours c'est pourquoi je viens vous demander un petit peu d'aide Smiley smile
Donc pour faire simple, j'essai de monter un script qui me permeterais :
- D'afficher sous forme de tableau les lignes d'une table comportant une valeur particulière d'un champ (ici, ce champ se nomme ID_JB)
- Que dans ce tableau, les valeurs de ces lignes s'affichent sous forme d'INPUT et ce, a l’intérieur d'un formulaire
- Et enfin, apres avoir modifié les valeurs des lignes, envoyer les nouvelle valeurs dans ma base à l'aide d'une requete UPDATE

Bref l'affichage des lignes contenant l'id de l'url fonctionne, mais apres avoir modifié les valeurs, lorsque je clique sur le bouton submit, bah la requête ne s'execute pas correctement, vu qu'il n'arrive pas a me retrouver les valeurs modifié dans les $value['DEVICES'], $value['NAME'] ect.. de la requete.
Donc en gros lorsque je lance la requete avec les valeurs modifiée, il va me remplacer les valeur des champ DEVICES, NAME, LINK, LANG, RATE de l'id $key, par un vide.

Voici mon code :

<?php $cnx = mysql_connect ('xxx', 'xxx', 'xxx');
mysql_select_db ('xxx', $cnx) ;
$id = $_GET['id']; ?>

<html><head><title>Test update de mysql_fetch_array avec foreach</title></head><body>
<form name="edit_existing_tutorials" action="" method="POST"><table>
<?php 		

//
	$req = mysql_query("SELECT * FROM JR_tutorials WHERE id_jb=$id ORDER BY id_tu DESC"); 	//La requete va chercher toute les lignes ayant pour ID_JB la valeur "ID" située dans l'url ($id = $_GET['id'];)	
	while ($data = mysql_fetch_array($req)) { 
		$id_tu=$data['ID_TU']; //On affiche sous forme de tableau, les input text contenant les valeur des lignes
		echo '<tr><td><input type="text" name="ligne['.$id_tu.'][\'DEVICES\']" value="'.$data['DEVICES'].'"></td>';
		echo '<td><input type="text" name="ligne['.$id_tu.'][\'NAME\']" value="'.$data['NAME'].'"></td>';
		echo '<td><input type="text" name="ligne['.$id_tu.'][\'LINK\']" value="'.$data['LINK'].'"></td>';
		echo '<td><input type="text" name="ligne['.$id_tu.'][\'LANG\']" value="'.$data['LANG'].'"></td>';
		echo '<td><input type="text" name="ligne['.$id_tu.'][\'RATE\']" value="'.$data['RATE'].'"></td></tr>';
	}
	mysql_free_result ($req);  
?>
</table><input type="submit" name="b1"value="Save"></form>
<?php
if(isset($_POST['b1'])){  //Si le bouton submit "b1" est cliqué, on lance la requête foreach
$lignes=$_POST['ligne']; //On recupère les valeurs des lignes modifiée précédemment
	foreach($lignes as $key=>$value){ //On definit $lignes en tant que $key (pour l'id) et $value (pour les nouvelle valeurs)
//Puis in update les champs DEVICES,NAME,LINK,LANG,RATE par les nouvelles valeurs
		$sql="UPDATE JR_tutorials SET 
		DEVICES='".mysql_real_escape_string($value['DEVICES'])."',
		NAME='".mysql_real_escape_string($value['NAME'])."',
		LINK='".mysql_real_escape_string($value['LINK'])."',
		LANG='".mysql_real_escape_string($value['LANG'])."',
		RATE='".mysql_real_escape_string($value['RATE'])."' WHERE id_tu=$key";
		$req = mysql_query($sql, $cnx) or die( mysql_error());
	}
if($req) {echo'<br>requete executée';}else{echo'<br>requete non executée';}
}
?>	
</body></html>


Et voici mon problème en ligne : http://heavydub.1allo.com/ressources/testupdate.php?id=11

En vous remerciant par avance Smiley biggol
Bonjour,

je crois que ton problème est simple.
quand en html tu envoies un formulaire par la méthode post contenant un champ comme ceci
<input name="tableau[0]" …>

tableau[0] est interprété comme une chaîne de caractères et non comme la première case d’un tableau.
La variable $_POST['tableau'] n’est pas un tableau, elle n’existe même pas, mais la variable $_POST['tableau[0]'] existe.

Il va falloir que tu te reconstruises à la main ton tableau.