francoisch Posté 1 Août 2009 Posté 1 Août 2009 Bonjour Voici une question de débutant MySql ; je veux remplacer la valeur de la colonne nommée transmis pour une sélection de lignes effectuée au préalable. La colonne transmis a la valeur 0 sur chaque ligne sélectionnée ; je veux y mettre la valeur 1. $transmis = 1;$requete = "REPLACE INTO ".$table." ( transmis ) VALUES ( '$transmis' )"; Naturellement, puisque je pose la question, c'est parce que la mise à jour ne se fait pas. Merci par avance de votre aide. Francois
jcaron Posté 1 Août 2009 Posté 1 Août 2009 (modifié) Pour modifier des données dans une table je te conseille plutôt "UPDATE table SET nomcolonne=nouvellevaleur WHERE conditions". Ca a l'avantage d'être standard et probablement plus facile à comprendre. Si tu veux absolument utiliser REPLACE, lis bien la doc: http://dev.mysql.com/doc/refman/5.0/en/replace.html tu y verras qu'il faut que ta table ait une clef primaire (ou unique), et qu'il faut évidemment préciser la valeur de la clef en question dans celles que tu passes (et tu ne peux donc modifier qu'une seule ligne à la fois). EDIT: précisions qu'une "sélection" faite avec SELECT ne survit pas à ce SELECT... Jacques. Modifié 1 Août 2009 par jcaron
francoisch Posté 1 Août 2009 Auteur Posté 1 Août 2009 bonjour et merci de ta réponse. Je n'y arrive tjs pas; voici un extrait de mon code: $requete = "SELECT * FROM ".$table." WHERE destinataire = '".$repertoire."' "; $result = mysql_query ($requete, $connexion); while ($myrow = mysql_fetch_row($result)) { $transmis = 1; $requete = "REPLACE ".$table." SET transmis = '1' WHERE sequence = '".$sequence."'"; } J'ai essayé sans Where, qui ne me parait pas nécessaire ici , sans succès non plus. Je dois avoir une difficulté de logique générale. Merci par avance de votre aide. Francois
jcaron Posté 1 Août 2009 Posté 1 Août 2009 Tu nous fais du beau mélange là. Comme je le disais précédemment, c'est aussi simple que ça: mysql_query("UPDATE ".$table." SET transmis=1 WHERE destinataire='".$repertoire."'",$connexion); Oublie REPLACE pour le moment... Jacques.
francoisch Posté 1 Août 2009 Auteur Posté 1 Août 2009 Merci de ta réponse Jacques. J'ai essayé de mettre en oeuvre tes conseils, ce qui donne, par exemple: UPDATE esp1dialogue SET transmis = '1' WHERE destinataire='landry' mais ça n'a tjs pas mis à jour ce champ transmis. A ton avis, j'ai raté quoi? Francois
jcaron Posté 1 Août 2009 Posté 1 Août 2009 1. Essaie ta requête avec phpmyadmin ou en ligne de commande mysql directement pour voir ce que ça donne (et le message d'erreur éventuel). 2. Si là ça marche, il faut récupérer les messages d'erreur lors de l'exécution en php pour savoir ce qui se passe. Parmi les possibilités: - faute de frappe dans le nom de la table, du champ, du critère... - absence de droits pour modifier la table - connexion pas établie ... Jacques.
francoisch Posté 1 Août 2009 Auteur Posté 1 Août 2009 Ca marche dans PhpMyAdmin. Comment récupérer les messages d'erreur en Php? Francois
jcaron Posté 1 Août 2009 Posté 1 Août 2009 Il va falloir apprendre à lire la doc si tu veux avancer... Premier exemple de la doc de mysql_query: http://uk3.php.net/mysql_query Jacques.
francoisch Posté 2 Août 2009 Auteur Posté 2 Août 2009 Trouvé, j'avais oublié le $result = mysql_query à cet ordre là. Merci de ton aide. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant