Modifier les infos dans une table , phpmysql
Résolu/Fermé
cinderela
Messages postés
52
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
20 février 2008
-
4 août 2007 à 11:49
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 8 août 2007 à 22:18
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 8 août 2007 à 22:18
A voir également:
- Modifier les infos dans une table , phpmysql
- Table ascii - Guide
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Table des matières word - Guide
- Modifier une story facebook - Guide
3 réponses
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
5 août 2007 à 03:04
5 août 2007 à 03:04
Salut, je crains ne pas pouvoir répondre à la question mais tant que j'ai lu un peu le code j'aimerais simplement te signaler que lors de l'utilisation de guillemets en PHP, le fait d'insérer des noms de variables à l'intérieur indique à l'interpréteur de retrourner leurs valeurs, donc c'est inutile de concaténer comme tu le fais.
Au lieu de faire :
$query1 = "SELECT * FROM tblfour WHERE four_ID = '".$four_id."'";
Tu pourrais faire :
$query1 = "SELECT * FROM tblfour WHERE four_ID = '$four_id'";
Pareil pour ta query update, tu peux simplifier de cette façon :
$query = "UPDATE tblfour SET nom='$nom', adresse='$adresse', tel='$tel', fax='$fax', remarque='$remarque' WHERE four_ID = '$four_id'";
Sinon ça ne sert à rien d'utiliser des " et de simples ' suffiront, ce qui indiquera à l'interpréteur PHP de ne pas analyser la chaine à l'intérieur (à l'exception d'un éventuel caractère d'échappement si je ne dis pas de bêtises) afin d'accélerer les traitements.
Et tant qu'on y est je ne comprends pas pourquoi tu affiches le message comme quoi les infos sont enregistrées avant même d'exécuter la requête Update (ce serait plutôt l'inverse).
Ah tiens, finalement j'ai une petite idée sur la question : Assure toi-bien que tous tes champs en DB soient au format texte (char, varchar, text,...) parce que d'après ce que je lis de ton code c'est ce que je sous-entends.
Sinon y'a un truc qui m'inquiète aussi quand tu fais :
if ($four_id == $liste[0])
=> On est bien d'accord que le premier champ retourné dans ta requête "select *" plus haut est bien celui du "four_id"... Franchement, un conseil, je te déconseille d'utiliser les positions de champ (ici 0, donc le premier) si tu ne précises pas explicitement l'ordre dans ton select (ici tu as utilisé le *). Dans ce cas je préfère encore que tu cites $liste['four_ID'] en ayant bien pris soin de faire un fetch_array plutôt qu'un fetch_row.
Avec ça tu devrais peut-être avoir plus d'objectivité pour trouver ton erreur. Supprimer et mettre à jour sont deux choses différentes.
Au lieu de faire :
$query1 = "SELECT * FROM tblfour WHERE four_ID = '".$four_id."'";
Tu pourrais faire :
$query1 = "SELECT * FROM tblfour WHERE four_ID = '$four_id'";
Pareil pour ta query update, tu peux simplifier de cette façon :
$query = "UPDATE tblfour SET nom='$nom', adresse='$adresse', tel='$tel', fax='$fax', remarque='$remarque' WHERE four_ID = '$four_id'";
Sinon ça ne sert à rien d'utiliser des " et de simples ' suffiront, ce qui indiquera à l'interpréteur PHP de ne pas analyser la chaine à l'intérieur (à l'exception d'un éventuel caractère d'échappement si je ne dis pas de bêtises) afin d'accélerer les traitements.
Et tant qu'on y est je ne comprends pas pourquoi tu affiches le message comme quoi les infos sont enregistrées avant même d'exécuter la requête Update (ce serait plutôt l'inverse).
Ah tiens, finalement j'ai une petite idée sur la question : Assure toi-bien que tous tes champs en DB soient au format texte (char, varchar, text,...) parce que d'après ce que je lis de ton code c'est ce que je sous-entends.
Sinon y'a un truc qui m'inquiète aussi quand tu fais :
if ($four_id == $liste[0])
=> On est bien d'accord que le premier champ retourné dans ta requête "select *" plus haut est bien celui du "four_id"... Franchement, un conseil, je te déconseille d'utiliser les positions de champ (ici 0, donc le premier) si tu ne précises pas explicitement l'ordre dans ton select (ici tu as utilisé le *). Dans ce cas je préfère encore que tu cites $liste['four_ID'] en ayant bien pris soin de faire un fetch_array plutôt qu'un fetch_row.
Avec ça tu devrais peut-être avoir plus d'objectivité pour trouver ton erreur. Supprimer et mettre à jour sont deux choses différentes.
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
6 août 2007 à 22:24
6 août 2007 à 22:24
Salut, l'erreur
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"
Signifie que l'argument fourni à la fonction n'est pas une ressource valable. En gros, la requête SQL dans $query1 a échoué. Vérifie que tes champs existent bien en base de données et que le champ four_id est de type texte.
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"
Signifie que l'argument fourni à la fonction n'est pas une ressource valable. En gros, la requête SQL dans $query1 a échoué. Vérifie que tes champs existent bien en base de données et que le champ four_id est de type texte.
cinderela
Messages postés
52
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
20 février 2008
7 août 2007 à 09:00
7 août 2007 à 09:00
Salut Poso,
oui les champs sont bien existés et le champ four_id est de type int
oui les champs sont bien existés et le champ four_id est de type int
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
7 août 2007 à 21:24
7 août 2007 à 21:24
"le champ four_id est de type int"
Salut,
Si tu relis bien mon histoire, je te disais donc que j' m'attendais à ce que le champ four_ID soit de type caractère. Or tu viens de m'apprendre qu'il est de type entier.
Ce qui fait que dans le bout de requête :
WHERE four_ID = '$four_id'
Tu compares l'entier four_ID (les majuscules/minuscules peuvent avoir de l'importance) avec du texte, soit le résultat de ta variable $four_id en texte (puisque tu as placé des apostrophes). Pour comparer un entier avec un entier (chose plus probable) tu dois enlever les apostrophes, sinon c'est logique que la requête coince. ;-)
Salut,
Si tu relis bien mon histoire, je te disais donc que j' m'attendais à ce que le champ four_ID soit de type caractère. Or tu viens de m'apprendre qu'il est de type entier.
Ce qui fait que dans le bout de requête :
WHERE four_ID = '$four_id'
Tu compares l'entier four_ID (les majuscules/minuscules peuvent avoir de l'importance) avec du texte, soit le résultat de ta variable $four_id en texte (puisque tu as placé des apostrophes). Pour comparer un entier avec un entier (chose plus probable) tu dois enlever les apostrophes, sinon c'est logique que la requête coince. ;-)
cinderela
Messages postés
52
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
20 février 2008
8 août 2007 à 10:55
8 août 2007 à 10:55
Bonjour Posotaz,
J'ai compris maintenant. Grâce à toi et à tout le monde dans le forum, j'ai pu trouver le chemin.
Voilà les codes réalisés :-), c' est un des solutions pour ceux qui voulaient faire un formulaire semblant à la mienne:
four_mod.php
mod_four.php
Voilà, c'est résolu!
Merci à tous,
Cinderela
J'ai compris maintenant. Grâce à toi et à tout le monde dans le forum, j'ai pu trouver le chemin.
Voilà les codes réalisés :-), c' est un des solutions pour ceux qui voulaient faire un formulaire semblant à la mienne:
four_mod.php
<?php $connexion = mysql_connect("localhost", "root", "") or die ("connexion au serveur impossible."); $db = mysql_select_db('gestion_stock', $connexion); // selectionner toutes les fours présentés dans la tblfour $query = "SELECT nom, adresse, tel, fax, remarque, four_ID FROM tblfour ORDER BY nom"; $result = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée. L\'erreur retournée est : '.mysql_error()); ?> <TABLE BORDER='1'> <TR><TH>Nom</TH><TH>Adresse</TH><TH>Téléphone</TH><TH>Fax</TH><TH>Remarque</TH><TH>Sélection</TH><TH>Enregistrer modifs</TH></TR> <?php while ($ligne = mysql_fetch_row($result)) { $nom = $ligne[0]; $adresse = $ligne[1]; $tel = $ligne[2]; $fax = $ligne[3]; $remarque = $ligne[4]; $four_id = $ligne[5]; ?> <form name="mod_four" method="post" action="mod_four.php"> <TR><TD><input type="text" name="nom" size="15"value="<?php echo $nom; ?>"></TD> <TD><input type="text" name="adresse" size="15" value="<?php echo $adresse; ?>"></TD> <TD><input type="text" name="tel" size="15" value="<?php echo $tel; ?>"></TD> <TD><input type="text" name="fax" size="15" value="<?php echo $fax; ?>"></TD> <TD><input type="text" name="remarque" size="15" value="<?php echo $remarque; ?>"></TD> <TD align="center"><input type="text" name="four_id" value="<?php echo $four_id; ?>"></TD> <TD align="center"><input type="submit" name="Enregistrer" value="OK"></TD></TR> </form> <?php } ?> </TABLE>
mod_four.php
<?php // vérifier les données dans la formulaire foreach ($_POST as $data) { if (empty($data)){ print('<center>Un (ou plusieurs) champs est vide! Veuillez tous les remplir ceux qui vous doivent.</center>'); exit(); } } //vérifie le nom, adresse etc... $nom = $_POST['nom']; $adresse = $_POST['adresse']; $tel = $_POST['tel']; $fax = $_POST['fax']; $remarque = $_POST['remarque']; $four_id = $_POST['four_id']; //connecter à la bd $connexion = mysql_connect("localhost", "root", "") or die ("connexion au serveur impossible."); mysql_select_db('gestion_stock', $connexion); //vérifier les données dans la base de données $query = "UPDATE tblfour SET nom='".$nom."', adresse='".$adresse."', tel='".$tel."', fax='".$fax."', remarque='".$remarque."' WHERE four_ID='".$four_id."'"; $result = mysql_query($query); if ($result) { echo 'Les données de four <b><I>'.$nom.'</I></b> ont été bien modifiées: <br><br>'; $query1 = "SELECT nom, adresse, tel, fax, remarque, four_ID FROM tblfour ORDER BY nom"; $result1 = mysql_query($query1) or die ('Erreur. La requête ne peut pas être effectuée. L\'erreur retournée est : '.mysql_error()); echo "\n<TABLE BORDER='1'>\n <TR><TH>Nom</TH><TH>Adresse</TH><TH>Téléphone</TH><TH>Fax</TH><TH>Remaque</TH></TR>\n"; while ($ligne = mysql_fetch_row($result1)) { $nom = $ligne[0]; $adresse = $ligne[1]; $tel = $ligne[2]; $fax = $ligne[3]; $remarque = $ligne[4]; echo ' <TR><TD>'.$nom.'</TD> <TD>'.$adresse.'</TD> <TD>'.$tel.'</TD> <TD>'.$fax.'</TD> <TD>'.$remarque.'</TD></TR>'; } echo "\n</TABLE>"; echo "<br> Modifier un autre, <a href='four_mod.php'>clique ici</a><br>"; } print_r($_POST); ?>
Voilà, c'est résolu!
Merci à tous,
Cinderela
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
>
cinderela
Messages postés
52
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
20 février 2008
8 août 2007 à 22:18
8 août 2007 à 22:18
Content que tu aies résolu le problème, ce n'était pas évident mais tu t'es bien accroché, bravo et merci d'être revenu donner des nouvelles. ;-)
6 août 2007 à 09:41
Je suis trop null, j'ai fait tout comme tu disais mais il affiche que :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\1erpage\mod_four.php on line 27
je ne sais pas que dois-je faire.
et voilà ce que j'ai corrigé
mod_four.php
<?php
// vérifier les données dans la formulaire
foreach ($_POST as $data) {
if (empty($data)){
print('<center>Un (ou plusieurs) champs est vide! Veuillez tous les remplir.</center>');
exit();
} else {
echo "bien joué! ";
}
}
//vérifie le nom, adresse etc...
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$tel = $_POST['tel'];
$fax = $_POST['fax'];
$remarque = $_POST['remarque'];
$four_id = $_POST['four_id'];
//connecter à la bd
$connexion = mysql_connect("localhost", "root", "")
or die ("connexion au serveur impossible.");
mysql_select_db('gestion_stock', $connexion);
//vérifier les données dans la base de données
$query1 = "SELECT four_ID, nom, adresse, tel, fax, remarque FROM tblfour WHERE four_ID = '$four_id'";
$result1 = mysql_query($query1);
while ($liste['four_ID'] = mysql_fetch_array($result1)){
if ($four_id == $liste['four_ID']){
$query = "UPDATE tblfour SET nom='$nom', adresse='$adresse',
tel='$tel', fax='$fax', remarque='$remarque' WHERE four_ID = '$four_id'";
echo 'Les infos sont enregistrées. Vous serez redirigé dans 2 secondes. Si vous ne voulez pas attendre,
cliquez sur ce <a href="four.php">lien</a>.';
echo $query;
$result = mysql_query($query);
}
}
?>