Aller au contenu

Sujets conseillés

Posté

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

Posté (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é par jcaron
Posté

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

Posté

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.

Posté

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

Posté

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.

Veuillez vous connecter pour commenter

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



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