Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/06/2011, 04h48   #1
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Par défaut UPDATE en boucle while

Bonjour,

Je suis un programmeur VB et j'ai du mal à faire un update en boucle en PHP. Remarque que l'ECHO fonctionne. Alors j'ose croire que mon SELECT est bon et que j'ai du mal à comprendre comment fonctionne le WHILE

Code :
1
2
3
4
5
6
7
8
9
10
11
 
$sql = "SELECT * FROM coco where ID =".$_POST['ID'];
 
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   
 
while ($row = mysql_fetch_array($result)) { 
 
$row = 'UPDATE coco SET ready = "'.$ok.'"';
echo $_POST['ID'];
 
}
Merci
Gorj
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 07h46   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonjour,

Citation:
$row = 'UPDATE coco SET ready = "'.$ok.'"';
1 - ça vient d' où la variable $ok?
2 - Utilise de simple quote pour entourer les valeurs dans un champ sql
Code :
$row = "UPDATE coco SET ready = '".$ok."'";
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 10h23   #3
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Ceci devrait mieux marcher ^^
Code :
1
2
3
4
5
6
7
8
9
10
11
$sql = "SELECT * FROM coco where ID = '".$_POST['ID']."'";
 
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   
 
while ($row = mysql_fetch_array($result)) { 
 
$sql2 = "UPDATE coco SET ready = '$ok'";
$result2 = mysql_query($req2);
echo $_POST['ID'];
 
}
Meme si dans ton script la boucle ne sert a rien ici.
Il faudrait que tu expliques ce que tu cherches a faire
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 11h18   #4
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
Salut, ta boucle actuelle tourne autant de fois que le nombre de ligne retournée par la 1er requete.
Il semble qu'il manque un WHERE sur la requete située dans la boucle, car sinon là, une requete simple sans boucle ferai l'affaire.
Pense à échapper $_POST['ID'] si tu compte sécuriser un peu ton script.
Et dit nous en plus
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 23h08   #5
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Par défaut Bonjour à tous et merci

En fait, je veux mettre à jour tout les records de ma première requête. Si "ok" = 1, on met 1 dans tout les records, si il = 0, on met zéro dans tout les records. Le seul champ à mettre à jour est le champs "ready", et ça a comme impact de mettre en ligne ou non les lignes 0=pas en ligne, 1= en ligne.

J'aimerais qu'on m'explique les lignes suivantes pour que je comprenne bien une fois pour toute :0...

Code :
1
2
3
4
5
 
while ($row = mysql_fetch_array($result)) {//Pourquoi une variable devant?
$sql2 = "UPDATE coco SET ready = '$ok'"; //Pourquoi une variable devant?
$result2 = mysql_query($req2); //Pourquoi cette ligne?
}
J'essais ça et je reviens... Nextdev, tu dis que si j'ai pas de where, j'ai pas besoin de while pour mettre à jour tout les champs des lignes de ma première requête? Si c'est le cas, c'est que je peux écrire en simultané, un nombre défini de donnée... En VB j'utilise un while ou un for ... Je vois pas comment ça pourait être autrement aec PHP. Mais je suis très curieux.

Merci encore et j'attend de vos nouvelles.

Gorj
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 00h55   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonsoir,

ce que tu chercherais à faire ne serait il tout simplement pas de mettre à jour ta base pour un ID donné ?

Code php :
1
2
 
mysql_query('UPDATE coco SET ready = '.$ok.' WHERE id='.intval($_POST['ID']));

EDIT: les variables n'ont d'utilité que lorsqu'elles sont utilisées ou exploitées. Si tu n'en as pas l'utilité dans le script, n'en mets pas
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 10h25   #7
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
J'ai dit ça parce que actuellement, ta boucle effectue n fois la meme requete

Je pense que tu crois que ton UPDATE va seulement s 'attaquer aux lignes trouvées dans le SELECT, alors que non.

Il va falloir dire à l'update sur quels lignes agir, actuellement ta requete modifie tous les "ready" de ta table, en 0 ou 1, selon le résultat de $ok.

Tu va donc avoir besoin d'un WHERE pour cibler les bonnes lignes.

Code :
1
2
3
4
5
6
7
8
9
10
 
$sql = 'SELECT record, bidule, machin FROM coco WHERE ID="'.$_POST['ID'].'"';
$result = mysql_query($sql);   
 
while ($row = mysql_fetch_array($result)) {//$row égale chaque ligne, une après l'autre, présente dans la requete $result
$sql2 = "UPDATE coco SET ready = '$ok'";//pas obligatoire, pourrai etre directement mysql_query("UPDATE coco SET ready = '$ok'");
$result2 = mysql_query($req2);//execution de la requete
echo $row['record'];//écrire la valeur record de cette ligne
echo $row['bidule'];//valeur bidule de cette ligne... tout ca grace à mysql_fetch_array qui te cree un tableau des valeurs pour chaque ligne
}
Madfrix a surement sorti ce que tu cherche à faire
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h44   #8
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Désolé j'avais fait une petite erreur, ca a pas du t'aider a comprendre ^^
Code :
1
2
$sql2 = "UPDATE coco SET ready = '$ok'";
$result2 = mysql_query($req2);
mais plutot :
Code :
1
2
$sql2 = "UPDATE coco SET ready = '$ok'";
$result2 = mysql_query($sql2);
en gros ca revient a écrire :
Code :
$result2 = mysql_query("UPDATE coco SET ready = '$ok'");
Mais bon tout ceci c'est vraiment les bases de mysql.
Je t'invite a lire quelques tutos pour debuter avec mysql
__________________
Développeur web netek.fr PHP, MySQL, Ajax, jQuery, Drupal, Magento
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 17h58   #9
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
Bien vu
Il y a l'erreur dans mon message aussi

gorjette est repassé au VB
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 17h44   #10
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Re-Bonjour

Ici je met TOUT les champs ready de la table coco à valeur = $okays
Pourtant dans ma première requête je sélectionne seulement les ID=IDee.!?
Code :
1
2
3
4
5
6
7
8
9
10
11
 
//seulement les enregistrement ou ID=IDee
$sql = 'SELECT * FROM coco WHERE ID="'.$_POST['IDee'].'"';
$result = mysql_query($sql); 
//Update TOUT les enregistrements de la table.!?
while ($row = mysql_fetch_array($result)) {
//Ici, dans le UPDATE, faut-il que je repasse le WHERE?
//Pas logique puisque j'ai déjà fait le WHERE plus haut.!?
$row = 'UPDATE coco SET ready = "$okays"';
$result2 = mysql_query($row);
}
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 18h00   #11
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Bonjour gorjette,

Il y a bcp d'incohérences dans ce tu veux et ce que tu nous montres. Pour mieux comprendre ce que tu cherches peux nous donner la structure de la table et d'autres informations si tu en as omis.
Merci

Cdlt.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 03h14   #12
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Citation:
Envoyé par cycyand1 Voir le message
Bonjour gorjette,

Il y a bcp d'incohérences dans ce tu veux et ce que tu nous montres. Pour mieux comprendre ce que tu cherches peux nous donner la structure de la table et d'autres informations si tu en as omis.
Merci

Cdlt.
Comment on fait pour avoir plus de points? Cela fait depuis 2007 que vous existez sur ce site, et toujours pas plus de 21 points, et membre à l'essais.!?

Merci
Gorj
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 03h20   #13
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Par défaut Question.!?

Ceci va mettre à jour la table coco (chanps "ready") à tout les enregistrements où le id = à mon post? Je veux dire, sans aucun WHILE?
Code :
1
2
3
 
 
mysql_query('UPDATE coco SET ready = '.$ok.' WHERE id='.intval($_POST['ID']));
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 09h12   #14
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Bonjour gorjette,

Citation:
Comment on fait pour avoir plus de points? Cela fait depuis 2007 que vous existez sur ce site, et toujours pas plus de 21 points, et membre à l'essais.!?

Merci
Gorj
Je ne vois pas où est le rapport avec le post initial et si tu te fis à cela alors ne tient pas compte de mon post.

Cdlt.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h52   #15
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Citation:
Envoyé par cycyand1 Voir le message
Bonjour gorjette,



Je ne vois pas où est le rapport avec le post initial et si tu te fis à cela alors ne tient pas compte de mon post.

Cdlt.
Ha, je suis désolé, je voulais seulement connaitre la façon exacte d'accumuler des points. Je ne voulais pas offencer. Désolé.
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h27   #16
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
gorjette

On sait vraiment mal compris alors . C'est vraiment que je me suis inscrit il y a longtemps, je ne m'en souvenais plus et j'ai retrouvé mon compte que depuis peu. Parenthèse historique.

Pour les points, je ne sais pas, demandes a un modérateur.


Sinon ton pb est résolu ?
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 02h17   #17
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
Citation:
Envoyé par gorjette Voir le message
Ceci va mettre à jour la table coco (chanps "ready") à tout les enregistrements où le id = à mon post? Je veux dire, sans aucun WHILE?
Code :
1
2
3
 
 
mysql_query('UPDATE coco SET ready = '.$ok.' WHERE id='.intval($_POST['ID']));
Oui, relis bien ton topic, il y a les réponses.
Oui, il faut remettre le where pour la 2eme requete, qui n'a rien a voir avec le 1er select. Ton select sert surement a rien pour ce que tu veux faire.


Et pour les points, c'est notamment grace aux autres membres qui peuvent te noter.
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 06h31   #18
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
Alors: J'ai testé, et quand je fais...

Code :
1
2
 
mysql_query('UPDATE coco SET ready = '.$ok.' WHERE id='.intval($_POST['ID']));
je met à jour TOUT les champs de la table COCO, où le id = au POST. J'ai pas besoin de WHILE. Le truc est que la ligne SNAP tout les enregistrement où le id = POST et les met à jour coté dorsal. Génial ça..!

En VB, j'aurais fais...

Code :
1
2
3
4
5
6
7
8
9
10
11
 
dim rs as recordset
//remarquez qu'il peut y avoir plusieurs id du même number (ce n'est pas une primaire)
set rs = currentdb.openrecordset("select * from coco where id = "& POST &"")
   do while not rs.eof
   rs.edit
   rs("ready") = okays
   rs.update
   rs.movenext
   loop
rs.close
Ce qui est moins génial puisque j'utilise un pointeur sur tout les enregistrement, et ce, après ma première requête. Mais ce que j'ai testé et qui marche avec plus d'un enregistrement en PHP ici, c'est un seul snapshot de la table, et op, le tour est joué.

Très intéressant!

Merci
Gorj
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h02   #19
Nouveau Membre du Club
 
Femme Sophie Pomerleau
Analyse système
Inscription : mai 2010
Messages : 124
Détails du profil
Informations personnelles :
Nom : Femme Sophie Pomerleau
Localisation : Canada

Informations professionnelles :
Activité : Analyse système
Secteur : Finance

Informations forums :
Inscription : mai 2010
Messages : 124
Points : 25
Points : 25
J'étais pas logué. J'avais pas le formulaire pour m'identifier(et javais pas coché "se souvenir de moi!"). Je ne peux donc pas dire que cett discution est résolu... On me suit?
gorjette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h48   #20
Membre actif
 
Inscription : février 2009
Messages : 150
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 150
Points : 198
Points : 198
La différence VB s'explique surement à cause du SELECT utilisé aulieu du UPDATE.
Tu dois bien pouvoir faire un UPDATE, meme sous ton VB, qui semble aller voir dans une vrai BDD qui devrait reconnaitre la commande UPDATE.
Essaye voir, et ça devrait t'éviter la boucle en VB aussi

J'ai pas tout suivi pour l'histoire du formulaire, je sais pas comment ça marche pour résolut
nextdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h51.


 
 
 
 
Partenaires

Hébergement Web