8768 sujets

Développement web côté serveur, CMS

Salut à tous,
j'ai un souci au niveau d'un update sur un menu 'sortable' cela fait un journée que je cherche mais je vois pas le truc

La bdd "test":
id | nom | position
1 | nom1 | 4
2 | nom2 | 3
3 | nom3 | 2
4 | nom4 | 1

le code :

<?php
require("connect.php");

if(!empty($_POST))
{
$cate=$_POST['category'];

	foreach($cate as $c){
	extract($c);
	print_r($c);
	$sql1="UPDATE test SET nom='$nom', position=$position WHERE id=$id";
	mysql_query($sql1) or die(mysql_error());
	}

}
?>
<!doctype html>
<head>
<meta charset="utf-8">
<title>jQuery UI Sortable - Default functionality</title>
<link rel="stylesheet" href="js/jquery-ui.css">
<script src="js/jquery.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/order.js"></script>
<style>
 #sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
#sortable li span { position: absolute; margin-left: -1.3em; }
ul#sortable li{border:1px solid #ff0000}
ul#sortable li.fantom{border:1px solid #000000}
</style>

</head>
<body>
<form method="post" action="admin.php">

<ul id="sortable">
<?php
			$i=0;
			$sql="SELECT nom,id,position FROM test ORDER BY position ASC";
			$req = mysql_query($sql) or die(mysql_error());
				while($d = mysql_fetch_assoc($req))
				{
				$i++;
				?>
				<li>
				<span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
					<input type="hidden" name="category[<?php echo $i; ?>][$id]"  value="<?php echo $d['id'];?>" />
					<input type="text" name="category[<?php echo $i; ?>][$nom]"  value="<?php echo $d['nom'];?>" />
					<input type="text" class="positioninput" name="category[<?php echo $i; ?>][$position]"  value="<?php echo $d['position'];?>" />
				</li>
					
				<?php
				}
?>
</ul>
<input type="submit" value="Enregistrer"/>
</form>
</body>
</html>


donc quand je valide mon "form", les données sont bien envoyées puisque je les affiches avec le print_r mais la requête ne fonctionne pas cette dernière ne trouve pas les variable a insérer.
si j'echo ma requête cela me donne cela

UPDATE test SET nom='', position='' WHERE id=''
UPDATE test SET nom='', position='' WHERE id=''
UPDATE test SET nom='', position='' WHERE id=''
UPDATE test SET nom='', position='' WHERE id=''

alors que mon print_r($c) m affiche
Array ( [$id] => 4 [$nom] => Titre4 [$position] => 1 ) Array ( [$id] => 3 [$nom] => Titre3 [$position] => 2 ) Array ( [$id] => 2 [$nom] => Titre2 [$position] => 3 ) Array ( [$id] => 1 [$nom] => Titre1 [$position] => 4 )

si qql'un a une idée je suis preneur.
merci d'avance
Modifié par spawns (22 Jul 2014 - 11:37)
Salut,
Il faut que tu concatène tes variables PHP pour qu'elles soient interpretées

$sql1="UPDATE test SET nom='".$nom."', position=$position WHERE id=".$id;
ben non j'avais deja essayé et cela ne fonctionne pas.
même résultat que précédemment.
tu as fait un echo de ta requête avec la concaténation pour voir si c'est mieux qu'avant ?

D'après ce que j'ai vu dans la doc PHP concernant extract(), les index de ton tableau n'ont pas à etre préfixés de $ :
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");

Modifié par SpiStache (22 Jul 2014 - 11:25)
oui j'ai fait un echo et cela me retourne la requête vide comme indiqué précédemment.
les variables $nom $id etc... sont définit dans le form en bas de page.

tu as le code entier de la page si tu veux tester il faut juste que tu récupères les jquery

<input type="hidden" name="category[<?php echo $i; ?>]['id']"  value="<?php echo $d['id'];?>" />
<input type="text" name="category[<?php echo $i; ?>]['nom']"  value="<?php echo $d['nom'];?>" />
<input type="text" class="positioninput" name="category[<?php echo $i; ?>]['position']"  value="<?php echo $d['position'];?>"/> 


En retirant les $ à id,nom et position dans l'attribut name ?
Modifié par SpiStache (22 Jul 2014 - 11:32)
SpiStache a écrit :
tu as fait un echo de ta requête avec la concaténation pour voir si c'est mieux qu'avant ?

D'après ce que j'ai vu dans la doc PHP concernant extract(), les index de ton tableau n'ont pas à etre préfixés de $ :
$var_array = array(&quot;color&quot; =&gt; &quot;blue&quot;,
                   &quot;size&quot;  =&gt; &quot;medium&quot;,
                   &quot;shape&quot; =&gt; &quot;sphere&quot;);



OU AH, c'est ça, je suis deg comment j'ai ramé comme un C... pendant une journée pour cela.
Merci beaucoup SpiStache
a charge de revenge

@+