Page 1 sur 1

Traietement de case à cocher dans un formulaire

Posté : 27 janv. 2011, 20:38
par stefane321
Bonjour,

J'ai un script maison pour une galerie de photo.

Dans mon admin les photos sont listé par catégorie.

En cas où l'administrateur aurait besoin de changer les photos de catégorie (Ex.: les photos de catégorie chien les envoyer dans la catégorie chat)

En haut du formulaire j'ai une liste déroulante contenant les catégories.

Chaque photo a une case qui peut être cochée pour la changer de catégorie.

Et en fin du formulaire un bouton submit pour envoyer les données vers la page de traitement.

Mon problème est que je n'arrive pas à traiter mes cases a cocher.

Voici mon code:

Formulaire:
echo "<form name='form' method='post' action='photos/update_photos.php' enctype='multipart/form-data'>";
echo "<table width='500' align='center' class='border'>";
echo "<tr>";
echo "<td colspan='8'align='center' class='border'><b>Administration des photos</b>";

echo "<table>";
echo "<tr>";
echo "<td><B>Cat&eacute;gorie:</B></td>";
echo "</tr>";
echo "<tr>";
echo "<td>";


mysql_connect($host,$login,$password) or die("Impossible de connecter la bd");
$base=mysql_select_db($db) or die("erreur de DB");
$sql=mysql_query('select * from photos_categories order by nom_FR') or die("Impossible d'ouvrir la table");
echo "<select name='categorie_id'>";
echo "<option value='".$row["categorie_id"]."' selected>Choisir une cat&eacute;gorie</option>";
while ($category=mysql_fetch_array($sql))
{
echo "<option value=".$category["id"].">".$category["nom_FR"]."</option>";
}
echo "</select>";
echo "</td>";
echo "</tr>";
echo "</table>";


echo "</td>\n";
echo "</tr>";
echo "<tr valign='top'>\n";
echo "<td>".$row["id"]."</td>\n";
echo "<td><input type=\"checkbox\" name=\"change_cat[]\" value=\"".$row["id"]."\"></td>\n";
//echo "<td>".$row["categorie_id"]."</td>\n";
$newwidth=resize_images(200, 150, "$url_racine/photos/img_prod/".$row["image"]."");
echo "<td><div  class=\"img-dec\"><a href=\"photos/img_prod/".$row["image"]."\"  rel=\"lightbox[roadtrip]\" title=\"my caption\"><img src='photos/img_prod/".$row["image"]."' border='0' width='".$newwidth[0]."' height='".$newwidth[1]."' class=\"border\"></a></div></td>\n";
echo "<td><input type=\"file\" name=\"images\" ><BR><input type=\"submit\" name=\"submit\" value=\"Envoyer\"></td>\n";
echo "<td><a href=\"photos/supprime_photos_conf.php?id=".$row["id"]."\">Supprimer</a></td>\n";
echo "</tr>\n";
echo "<tr>";
echo "<td colspan='8'align='center'><input type=\"submit\" name=\"change_cat_bt\" value=\"Changer de cat&eacute;gorie\"></td>";
echo "</tr>\n";
La page de traitement:
if(isset($_POST['change_cat_bt']))
{
	if(isset($_POST["change_cat"]))
	{
	foreach($_POST["change_cat"] as $i)
	{
		$sqlquery="update photos set categorie_id=\"".$_POST["categorie_id"]."\" where id=\"".$_POST["id"]."\"" or die("Mise à jour image impossible");
	$queryresult=mysql_query($sqlquery) or die("Could not execute mysql query44!");
	}
	}
}

Pouvez-vous m'aider svp?

Merci

Re: Traietement de case à cocher dans un formulaire

Posté : 27 janv. 2011, 23:13
par moogli
salut,

$_POST['id'] ? ça existe pas c'est plutot $i

je te propose la solution suivante, évitant plein de requête inutile ;)
f(isset($_POST['change_cat_bt'])){
        if(isset($_POST["change_cat"]) && is_array($_POST['change_cat'])){
        $sqlquery='update photos set categorie_id=\'.$_POST['categorie_id'].'\' where id in ('.implode(',',$_POST['change_cat']);
        mysql_queru($sqlquery);
      }
}
@+

Re: Traietement de case à cocher dans un formulaire

Posté : 28 janv. 2011, 17:10
par stefane321
Merci,

j'ai essayé la méthode que tu me suggère mais sa fonctionne pas. (page blanche bien que j'ai changé ton code un peu car il y avait un ptit problème de syntaxe en rapport u ' et ")
  if(isset($_POST['change_cat_bt'])){
        if(isset($_POST["change_cat"]) && is_array($_POST['change_cat'])){
        $sqlquery="update photos set categorie_id=".$_POST['categorie_id']." where id in (".implode(',',$_POST['change_cat']);
        mysql_queru($sqlquery);
      }
}
Cependant, j'ai changé $_POST["id"] pour $_POST[$i] ... là j'obtiens au moins un message d'erreur me disant

Notice: Undefined index: 204 in /home/village/public_html/v2/photos/update_photos.php on line 14

Notice: Undefined index: 205 in /home/village/public_html/v2/photos/update_photos.php on line 14

Peux-tu m'aider encore svp?

Merci!

Re: Traietement de case à cocher dans un formulaire

Posté : 29 janv. 2011, 00:59
par moogli
Hum, effectivement il manque une ' avant le 1 er post dans la requete, c'est simple a trouver.

Si la clef est numerique vire les \'

Il manque la parenthese fermante du in.

Select truc from table where id in( 1,2,3,4 ,5,6,7,8,9,...);

@+

Re: Traietement de case à cocher dans un formulaire

Posté : 29 janv. 2011, 20:09
par stefane321
Je suis un peu gêné de le dire mais je n'arrive pas a trouver la bonne syntaxe
if(isset($_POST['change_cat_bt'])){
        if(isset($_POST["change_cat"]) && is_array($_POST['change_cat'])){
        $sqlquery='update photos set categorie_id='.$_POST['categorie_id'].' where id in ('.implode(',',$_POST['change_cat']));
        mysql_query($sqlquery);
      }
}
Parse error: syntax error, unexpected ')' in /home/village/public_html/v2/photos/update_photos.php on line 10

Re: Traietement de case à cocher dans un formulaire

Posté : 29 janv. 2011, 21:38
par stefane321
Fausse alerte, j'ai trouvé

merci infiniment!

Bonne Journée!
if(isset($_POST['change_cat_bt'])){
        if(isset($_POST["change_cat"]) && is_array($_POST['change_cat'])){
        $sqlquery=("update photos set categorie_id=".$_POST['categorie_id']." where id in (".implode(",",$_POST['change_cat']).")");
        mysql_query($sqlquery);
      }
}