Edition validée non valide

Résolu/Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - Modifié par Sinistrus le 26/09/2013 à 12:58
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 2 oct. 2013 à 15:54
Bonjour,

Voilà, j'ai ce bout de code qui me sert à récupérer les éléments d'une autre feuille et mettre à jour ma base de données.
Seulement voilà, il me renvois que l'édition a été exécutée mais n'édite pas :
<?php
if (isset($_POST["action"]) && $_POST["action"] == "send"){

mysql_query('SET NAMES UTF8');

$req = mysql_query("UPDATE tb_produits_fr SET Code='$Code', Designation='$Designation', Famille='$Famille', Marque='$Marque' WHERE NumId='$NumId';");
echo '<div class="Message">L\'enregistrement a été exécuté avec succès.</div><script type="text/javascript">window.setTimeout("location=(\'index.php\');",1000)</script>';
exit();}
?>

Et voici ma page editer.php
<form action="confirmation.php?NumId=<?php echo($NumId); ?>" method="post">
<input type="hidden" name="action" value="send" />...

A voir également:

15 réponses

Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
Modifié par Sinistrus le 2/10/2013 à 15:54
Merci à tous pour votre aide !
J'ai compris et corrigé le problème.

Dans mon select, il y a avait la dans la première
<option selected="selected" disabled="disabled">

Lorsque j'ai supprimé le
disabled="disabled"
tout a fonctionné a la perfection !

Merci encore à tous !
1
cocksipus Messages postés 28 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 26 septembre 2013 22
26 sept. 2013 à 13:17
slt et comment recupère tu ta variable $NumID ?
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
Modifié par Sinistrus le 26/09/2013 à 13:42
Voici mon code auparavant :
<?php
if (mysql_num_rows($r)==0) { header("location: index.php"); exit(); } $login = mysql_result($r,0,"Code");
if (isset($_POST["action"]) && $_POST["action"] == "send"){

if (empty($_GET["NumId"])) {header("location: index.php"); exit();}
$idadmin = $_GET["NumId"];
$r = mysql_query("SELECT * FROM tb_produits_fr WHERE NumId='$NumId';");

$Code = $_POST["Code"];
$Designation = $_POST["Designation"];
$Famille = $_POST["Famille"];
$Marque = $_POST["Marque"];

$r = mysql_query("UPDATE tb_produits_fr SET
Code='$Code',
Designation='$Designation',
Famille='$Famille',
Marque='$Marque'
WHERE NumId='$NumId';");
echo '<div class="Message">L\'enregistrement a été exécuté avec succès.</div><script type="text/javascript">window.setTimeout("location=(\'index.php\');",1000)</script>';
exit();}
?>

Mais j'avais un problème sur
if (empty($_GET["NumId"])) {header("location: index.php"); exit();}
et même si je met une redirection en java, ca ne passe toujours pas.
J'ai dû supprimer des lignes pour voir ce que cela donne et voilà :s
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 sept. 2013 à 16:28
J'ai aussi essayé ceci mais ça ne passe toujours pas. Je ne comprends plus rien !
<?php
if(isset($_POST['Code'])) $Code = $_POST["Code"]; else $Code="";
if(isset($_POST['Designation'])) $Designation = $_POST["Designation"]; else $Designation="";
if(isset($_POST['Famille'])) $Famille = $_POST["Famille"]; else $Famille="";
if(isset($_POST['Marque'])) $Marque = $_POST["Marque"]; else $Marque="";
if(isset($_POST['Description'])) $Description = $_POST["Description"]; else $Description="";
if(isset($_POST['ModeEmploi'])) $ModeEmploi = $_POST["ModeEmploi"]; else $ModeEmploi="";
if(isset($_POST['Principe'])) $Principe = $_POST["Principe"]; else $Principe="";
if(isset($_POST['Contenance'])) $Contenance = $_POST["Contenance"]; else $Contenance="";
if(isset($_POST['Type'])) $Type = $_POST["Type"]; else $Type="";
if(isset($_POST['TypeMode'])) $TypeMode = $_POST["TypeMode"]; else $TypeMode="";
if(isset($_POST['Image'])) $Image = $_POST["Image"]; else $Image="";
if(isset($_POST['Menu'])) $Menu = $_POST["Menu"]; else $Menu="";

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());

mysql_query("SET NAMES 'utf8'");
$sql = mysql_query("SELECT * FROM tb_produits_fr WHERE NumId='$NumId';");

$sql = "UPDATE tb_produits_fr SET Code='$Code', Designation='$Designation', Famille='$Famille', Marque='$Marque', Description='$Description', Mode_Emploi='$ModeEmploi', Principe_actif='$Principe', Contenance='$Contenance', Type_Mode='$TypeMode', Image='$Image', Miniature='$Image.\"_mini\"', Menu='$Menu' WHERE NumId='$NumId'";

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

echo "<div class='Message'>Enregistré !</div>";
mysql_close(); ?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 11:58
Personne pour m'aider ?
0
Utilisateur anonyme
1 oct. 2013 à 13:43
Bonjour

1 - ta ligne
$sql = mysql_query("SELECT * FROM tb_produits_fr WHERE NumId='$NumId';");
ne sert strictement à rien, tu ne tiens aucun compte du résultat.

2 - As-tu essayé d'afficher ta requête avent de l'exécuter ? Il semble que ta variable $NimId ne soit pas initialisée comme te l'a fait remarquer cocksipus. Tu as écrit
$idadmin = $_GET["NumId"];
mais cela initialise $idadmin, pas $NumId
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 14:05
Merci le père. Je "pense" que c'est réglé...
Mais je rencontre un problème :
if(isset($_POST['Famille'])) $Famille = $_POST["Famille"]; else $Famille="";
Est une liste déroulante.
Il ne s'enregistre pas dans la table...
0
Quel est le code du formulaire, en ce qui concerne "Famille" (code du <SELECT><OPTION>) ? Ce n'est pas parce que c'est une liste déroulante que sa valeur ne doit pas d'enregistrer
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 14:19
Page editer.php
<?php $sqlFam = 'SELECT * FROM tb_produits_fr GROUP BY Famille'; $reqFam = mysql_query($sqlFam) or die('Erreur SQL !<br>'.$sqlFam.'<br>'.mysql_error()); ?>
<select name="Famille" id="Famille" style="width:100%">
<option selected="selected" disabled="disabled"><?php echo utf8_encode($datafr['Famille']); ?></option><option disabled="disabled">----------</option>
<?php while($dataFam = mysql_fetch_assoc($reqFam)){ echo "<option>".utf8_encode($dataFam['Famille'])."</option>"; } ?>
</select>

page confirmer.php
<?php
mysql_query("SET NAMES 'utf8'");
if(isset($_POST['Code'])) $Code = $_POST["Code"]; else $Code="";

if(isset($_POST['Famille'])) $Famille = $_POST["Famille"]; else $Famille="";

mysql_query("SET NAMES 'utf8'");
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());


$NumId = $_GET["NumId"];

mysql_query("SET NAMES 'utf8'");
$sql = 'UPDATE tb_produits_fr SET Code="$Code", Designation="$Designation", Famille="$Famille", Marque="$Marque", Description="$Description", Mode_Emploi="$ModeEmploi", Principe_Actif="$Principe", Contenance="$Contenance", Type_Mode="$TypeMode", Image="$Image", Miniature="$Image\"_mini\"", Menu="$Menu" WHERE NumId="$NumId"';

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

echo "<div class='Message'>Enregistré !</div><script type='text/javascript'>window.setTimeout('location=(\'index.php\');',100)</script>";
mysql_close(); ?>
0
Utilisateur anonyme
1 oct. 2013 à 16:26
Ton SELECT à l'air correct, mais on ne sait pas avec ce que tu montres s'il est bien à l'intérieur du Form
Pour être sûr, ajoute
print_r ($_POST);
au début de confirmer.php
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 17:20
il me renvois effectivement toutes les données.
Famille = A42 (par exemple)

Mais il n'enregistre pas dans ma base...
0
Utilisateur anonyme
1 oct. 2013 à 17:26
Avec cette requête là :
$sql = 'UPDATE tb_produits_fr SET Code="$Code", Designation="$Designation", Famille="$Famille", Marque="$Marque", Description="$Description", Mode_Emploi="$ModeEmploi", Principe_Actif="$Principe", Contenance="$Contenance", Type_Mode="$TypeMode", Image="$Image", Miniature="$Image\"_mini\"", Menu="$Menu" WHERE NumId="$NumId"';
Il ne doit rien t'enregistrer du tout, ni la famille ni le reste, tu as inversé les ' et les " (connais-tu leur différence en PHP ?)
Ta version du message #3 était meilleure.
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 18:12
Oula ! non sérieusement je n'arrives plus a comprendre ce qui se passe.
La
Marque
,
Famille
,
Type
,
Type2
,
TypeMode
,
TypeMode2
et
Menu
sont des <select>

Avec ce code :
<?php
$NumId = $_GET["NumId"];
mysql_query("SET NAMES 'utf8'");

if(isset($_POST['Code'])) $Code = strtoupper($_POST["Code"]); else $Code="";
if(isset($_POST['Designation'])) $Designation = mysql_real_escape_string(htmlspecialchars($_POST["Designation"])); else $Designation="";
if(isset($_POST['Designation2'])) $Designation2 = mysql_real_escape_string(htmlspecialchars($_POST["Designation2"])); else $Designation2="";
if(isset($_POST['Famille'])) $Famille = $_POST["Famille"];else $Famille="";
if(isset($_POST['Marque'])) $Marque = $_POST["Marque"];else $Marque="";
if(isset($_POST['Description']))$Description = mysql_real_escape_string(htmlspecialchars($_POST["Description"])); else $Description="";
if(isset($_POST['Description2']))$Description2 = mysql_real_escape_string(htmlspecialchars($_POST["Description2"])); else $Description2="";
if(isset($_POST['ModeEmploi'])) $ModeEmploi = mysql_real_escape_string(htmlspecialchars($_POST["ModeEmploi"])); else $ModeEmploi="";
if(isset($_POST['ModeEmploi2'])) $ModeEmploi2 = mysql_real_escape_string(htmlspecialchars($_POST["ModeEmploi2"])); else $ModeEmploi2="";
if(isset($_POST['Principe'])) $Principe = mysql_real_escape_string(htmlspecialchars($_POST["Principe"])); else $Principe="";
if(isset($_POST['Principe2'])) $Principe2 = mysql_real_escape_string(htmlspecialchars($_POST["Principe2"])); else $Principe2="";
if(isset($_POST['Type'])) $Type = $_POST["Type"]; else $Type="";
if(isset($_POST['Type2'])) $Type2 = $_POST["Type2"]; else $Type2="";
if(isset($_POST['TypeMode'])) $TypeMode = htmlspecialchars($_POST["TypeMode"]);else $TypeMode="";
if(isset($_POST['TypeMode2'])) $TypeMode2 = htmlspecialchars($_POST["TypeMode2"]);else $TypeMode2="";
if(isset($_POST['Contenance'])) $Contenance = strtoupper(htmlspecialchars($_POST["Contenance"])); else $Contenance="";
if(isset($_POST['Image'])) $Image = strtoupper(htmlspecialchars($_POST["Image"])); else $Image="";
if(isset($_POST['Image'])) $Miniature = strtoupper(htmlspecialchars($_POST["Image"]))."_mini"; else $Miniature="";
if(isset($_POST['Menu'])) $Menu = $_POST["Menu"];else $Menu="";

mysql_query("SET NAMES 'utf8'");
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());


mysql_query("SET NAMES 'utf8'");

$sql = "UPDATE tb_produits_fr SET Code='$Code', Designation='$Designation', Famille='$Famille', Marque='$Marque', Description='$Description', Mode_Emploi='$ModeEmploi', Principe_actif='$Principe', Contenance='$Contenance', Type_Mode='$TypeMode', Image='$Image', Miniature='$Miniature', Menu='$Menu' WHERE NumId='$NumId'";

$sql = "UPDATE tb_produits_en SET Code='$Code', Designation='$Designation2', Famille='$Famille', Marque='$Marque', Description='$Description2', Mode_Emploi='$ModeEmploi2', Principe_actif='$Principe2', Contenance='$Contenance', Type_Mode='$TypeMode2', Image='$Image', Miniature='$Miniature', Menu='$Menu' WHERE NumId='$NumId'";

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

echo "<div class='Message'>Enregistré !</div><script type='text/javascript'>window.setTimeout('location=(\'editer.php?NumId=1\');',1000)</script>";
mysql_close(); ?>
Je confirme l'envois de editer.php

Ce qui me paraît bizarre, c'est que les textbox s'enregistre, mais de tous les select, seul Menu s'enregistre... (donc le dernier de la liste)..
J'ai bien regardé les name="" et "normalement" tout est en ordre du côté de editer.php

Vous avez une idée ?
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
1 oct. 2013 à 18:28
Ah ! j'ai compris d'où vient le problème...
Voici mon select :
<?php $sqlMen = 'SELECT * FROM tb_produits_fr GROUP BY Menu'; $reqMen = mysql_query($sqlMen) or die('Erreur SQL !<br>'.$sqlMen.'<br>'.mysql_error()); ?>
<select name="Menu" id="Menu" style="width:100%" onchange="MonSelect();">
<option selected="selected" disabled="disabled"><?php echo utf8_encode($datafr['Menu']); ?></option>
<option disabled="disabled">----------</option>
<?php while($dataMen = mysql_fetch_assoc($reqMen)){ echo "
<option value=".$dataMen['Menu'].">".$dataMen['Menu']."</option>
"; } ?>
</select>

Il récupère la valeur qui existe dans la table en ligne 1
Ensuite en ligne 2 il y a la séparation ----------
Et enfin en ligne 3 il y a la liste de tout le contenu du select (au choix)

Lorsque la ligne 1 (donc la valeur de la table) est sélectionné, il édite.
Lorsque la ligne 3+ est sélectionnée, il n'enregistre pas...

Donc il faut récupérer dans le
$_POST['Menu']
l'ID du select je pense...

Etant certain que c'est de là que vient le problème, je relance mon poste #6
Comment récupérer dans le $_POST l'ID du select ?
0
Utilisateur anonyme
1 oct. 2013 à 21:04
L'id est ignoré dans l'envoi des formulaires, c'est la propriété "name" qui est utilisée pour nommer les champs envoyés. Personne n'a jamais eu besoin de l'id à ce niveau-là.

Je t'ai déjà demandé de faire print_r($_POST) au début de confirmer.php. Peux-tu faire un copier-coller COMPLET de ce qu'affiche ce print_r ?
0