Aller au contenu

Replace KO


francoisch

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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é par jcaron
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...