Repeter action x fois [Résolu]

Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
- - Dernière réponse : Gr3g69
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
- 23 janv. 2010 à 14:53
bonjour,

je voudrais creer un bout de script mais j'ai besoin de votre aide.

j'explique, dans un formulaire j'ai un bouton:
*1: fonction du bouton, lancer une action

*2: ce bout de code est une condition
if ($result2 == $result) {
$updateSQL = "UPDATE ep_mot SET comunbdd='y' WHERE mot='$result'";
   mysql_select_db("598", $mysql_link);
  $Result1 = mysql_query($updateSQL, $mysql_link) or die(mysql_error());
}
else{

$updateSQL = "UPDATE ep_mot SET comunbdd='n' WHERE mot='$result'";
   mysql_select_db("598", $mysql_link);
  $Result1 = mysql_query($updateSQL, $mysql_link) or die(mysql_error());
}

***********************************************
je voudrais qu'au clic, ces deux conditions s'execute pour la ligne 1 de ep_mot dans le champ mot,
PUIS
pour la ligne 2
PUIS
pour la ligne 3
etc etc jusqu a ce que toute les lignes aient été passé en revue....
Afficher la suite 

Votre réponse

20/34 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
3
Merci
Ca va tout de suite mieux !!

Une simple requête devrait suffire :

UPDATE ep_news_email 
SET comunbdd = 'y'
WHERE email IN (SELECT email FROM ep_email)


Si la requête est exécutée plus d'une fois il sera peux être nécessaire de mettre préalablement tous les champs comunbdd à 'n'



Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
tj personne for me ?
Commenter la réponse de cs_eva4
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
0
Merci
Salut,

Je ne suis pas sur de tout comprendre.

Pourquoi pas tout simplement ça :


<?php
mysql_select_db("598", $mysql_link);
$updateSQL = "UPDATE ep_mot SET comunbdd='y' WHERE mot='$result'";
$updateSQL1 = "UPDATE ep_mot SET comunbdd='n' WHERE mot='$result'";
mysql_query($updateSQL);
mysql_query($updateSQL1);
?>


???


Cordialement,

Kohntark-
Commenter la réponse de kohntark
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
oui effectivement, sa simplifirai déja beaucoup.

je vais essayer de faire plus clair.

partons du principe ou dans dans ma table ep_mot j'ai le champ mot qui contient 1000lignes.

quand je clic sur un bouton, je souhaiterais

que ce code :
<?php
mysql_select_db("598", $mysql_link);
$updateSQL = "UPDATE ep_mot SET comunbdd='y' WHERE mot='$result'";
$updateSQL1 = "UPDATE ep_mot SET comunbdd='n' WHERE mot='$result'";
mysql_query($updateSQL);
mysql_query($updateSQL1);
?>


soit exécuté une premiere fois pour la premiere ligne, une deuxieme fois pour la deuxieme ligne etc....

en prenant en compte que j'ai 1000 lignes
Commenter la réponse de cs_eva4
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
je sais pas si c'est bien mais le script je le ferais comme ceci:

un bouton avec :
<form name="form1" method="post" action="mapage.php?recherche=ok">

</form>

<?php  $_GET['recherche'];
  $recherche= $_GET['recherche']; ?>
  <? if($recherche==ok){  ?>


biensure $recherche==ok entrainant
mysql_select_db("598", $mysql_link);
$updateSQL = "UPDATE ep_mot SET comunbdd='y' WHERE mot='$result'";
$updateSQL1 = "UPDATE ep_mot SET comunbdd='n' WHERE mot='$result'";
mysql_query($updateSQL);
mysql_query($updateSQL1);

ceci autant de fois qu'il y a de lignes
mais je bloque
Commenter la réponse de cs_eva4
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
Hello,

Je ne comprends pas bien ce que tu veux faire ...

Du moins ce que j'ai compris c'est que tu veux mettre à jour la colonne 'comunbdd' de la table 'ep_mot' :

- en affectant la valeur 'y' pour toutes les lignes où 'mot' est égal à ta variable '$result'
- en affectant la valeur 'n' pour toutes les lignes où 'mot' n'est pas égal à ta variable '$result'.

C'est bien çà ?

Parce que les requêtes que tu passes affectent systématiquement 'y' au départ puis 'n' lors de la deuxième passe ... et c'est pas cohérent.
Commenter la réponse de Gr3g69
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
je refais:

un bouton avec :
<form name="form1" method="post" action="mapage.php?recherche=ok">

</form>

<?php  $_GET['recherche'];
  $recherche= $_GET['recherche']; ?>
  <? if($recherche==ok){  ?>


biensure $recherche==ok entrainant
if ($result2 == $result) {
$updateSQL = "UPDATE ep_mot SET comunbdd='y' WHERE mot='$result'";
   mysql_select_db("598", $mysql_link);
  $Result1 = mysql_query($updateSQL, $mysql_link) or die(mysql_error());
}
else{

$updateSQL = "UPDATE ep_mot SET comunbdd='n' WHERE mot='$result'";
   mysql_select_db("598", $mysql_link);
  $Result1 = mysql_query($updateSQL, $mysql_link) or die(mysql_error());
}


ceci autant de fois qu'il y a de lignes
Commenter la réponse de cs_eva4
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
Je comprends toujours pas bien où tu veux en venir au final.

Pour ce qui est du code que tu propose je l'écrirais comme suit :
(Alors bon comme j'ai pas compris ... je suis surement a coté de la plaque)
<?php 
// ICI TU TE CONNECTE A TON SERVEUR
// TU CHOISI LA BdD

// on selectionne les lignes où le champ 'mot' est = à ta variable.
$var 'SELECT * FROM ep_mot WHERE mot '.$result ;  
// on retourne le tout dans un tableau.
$sortie = mysql_fetch_array($var)

while ($sortie) { // on boucle
if ($result2 == $result) { // on défini la valeur de la modif à faire
$valeur = 'y';
} else {
$valeur = 'n';
}
$updateSQL 'UPDATE ep_mot SET comunbdd ' . $valeur . ' WHERE mot = ' . $result ; // la requete qui en fonction de ton if va affecter 'y' ou 'n'
mysql_query($updateSQL, $mysql_link) or die('Echec de la requête : ' . mysql_error()); // on envoi la requete au serveur
}
//la boucle est finie, on ferme la connexion  à la base
mysql_close();
?>
Commenter la réponse de Gr3g69
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
J'ai oublié le ";" a la fin de la ligne 8

<?php 

$sortie = mysql_fetch_array($var);

?>
Commenter la réponse de Gr3g69
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
0
Merci
Ouf, je ne suis pas le seul à ne pas comprendre

Sauf si Gr3g69 a donné la bonne réponse je pense qu'il serait bien que tu fournisse un exemple concret, avec la structure de ta table, les résultats attendus, etc ...


Kohntark -
Commenter la réponse de kohntark
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
si je fais ceci, que comprenez vous au code, qu'est ce qu'il va se passer ? on va essayer comme ça

<?php 

// on selectionne les lignes où le champ 'mot' est = à ta variable.
$var 'SELECT * FROM ep_list1 WHERE mot '.$result1 ;  
// on selectionne les lignes où le champ 'mot' est = à ta variable.
$var 'SELECT * FROM ep_list2 WHERE mot '.$result2 ; 

// on retourne le tout dans un tableau.
$sortie = mysql_fetch_array($var);

while ($sortie) { // on boucle
if ($result2 == $result1) { // on défini la valeur de la modif à faire
$valeur = 'y';
} else {
$valeur = 'n';
}
$updateSQL 'UPDATE ep_list1 SET comunbdd ' . $valeur . ' WHERE mot = ' . $result1 ; // la requete qui en fonction de ton if va affecter 'y' ou 'n'
mysql_query($updateSQL, $mysql_link) or die('Echec de la requête : ' . mysql_error()); // on envoi la requete au serveur
}
//la boucle est finie, on ferme la connexion  à la base
mysql_close();
?>
Commenter la réponse de cs_eva4
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
Hello,

Alors c'est déjà plus clair !

Ici çà ne fonctionnera pas, tu écrases ta première requête avec la seconde (même nom de variable).

Mais le résultat FINAL de ton script, c'est quoi ?

Tu veux mettre à jour la valeur de "comunbdd" sur la table "ep_list1" en lui affectant la valeur du même enregistrement sur "ep_list2" ?
Commenter la réponse de Gr3g69
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
voila,

$list2 = bdd principale de mot

$list1= liste provisoire de mot


resultat = si un mot de la $list1 est déja présent dans la $list2 alors on attibut la valeur 'y' sinon la valeur 'n'
Commenter la réponse de cs_eva4
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
Dans ce cas, je ferais cela :

<?php
// on sélectionne la table provisoire
$list2 = 'SELECT * FROM ep_list2' ;  
$reqlist2 = mysql_query($list2, $mysql_link) or die('Echec de la requête sur la liste 2 : ' . mysql_error());
// on retourne le tout dans un tableau.
while ($sortie = mysql_fetch_array($reqlist2))
{
$list1'UPDATE ep_list1 SET comunbdd 'y' WHERE mot = ' . $sortie['mot'] ; 
$reqlist1 = mysql_query($list1, $mysql_link) or die('Echec de la requête sur la liste 1 : ' . mysql_error());
}
//la boucle est finie, on ferme la connexion  à la base
mysql_close();
?>
Commenter la réponse de Gr3g69
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
j'ai essayé comme ça mais ce bout de script me met en erreur

mot = ' . $sortie['mot']
Commenter la réponse de cs_eva4
Messages postés
27
Date d'inscription
dimanche 6 décembre 2009
Dernière intervention
13 février 2010
0
Merci
Sans vouloir être désagréable, ce serait mieux que tu poste le script complet que tu utilise.
Parce qu'il faut deviner, pour partie, ce que tu veux faire.

Par exemple, il faut deviner l'erreur en question.
Il est probable que tu as mal analyser ce qui pose problème dans la ligne étant donné qu'il y a une erreur dedans. Mais c'est une erreur super basique ...
Remplace les quotes autour du Y par des doubles quotes, ca ira déjà mieu.

$list1'UPDATE ep_list1 SET comunbdd "y" WHERE mot = ' . $sortie['mot'] ;


Pour ma part, désolé mais j'arrête là si tu n'y met pas un peu plus du tien.
Commenter la réponse de Gr3g69
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
désolée, il est vrai que je me mets pas a la place de celui qui lit

enfaite mes mots son des email

voila l'erreur que j'ai:

Echec de la requête sur la liste 1 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@YAHOO.FR' at line 1
Commenter la réponse de cs_eva4
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
j'oubliais, le script est celui que vous m'avez proposé
Commenter la réponse de cs_eva4
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
un peu plus de précision, voici l'erreur affiché:

Echec de la requête sur la liste 1 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@yahoo.fr' at line 1


pourtant 'xxxxx@yahoo.fr' est la premiere ligne de $list2

et 'xxxxx@hotmail.fr' est la premiere ligne de la $list1

si je comprend bien, l'erreur affiché, elle fait état de '@yahoo.fr' ligne 1 de la $list1
pourtant en réalité ligne1 de $liste1 j'ai 'xxxxx@hotmail.fr'
Commenter la réponse de cs_eva4
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
24 juin 2011
0
Merci
et il y avait une petite erreur a votre script, je sais pas si elle avait une grande importance ou non

<?php
// on sélectionne la table provisoire
$list2 = 'SELECT * FROM ep_list2' ;  
$reqlist2 = mysql_query($list2, $mysql_link) or die('Echec de la requête sur la liste 2 : ' . mysql_error());
?>


$list2 c'est la liste principale

et c'est la $list1 qui est la privisoire
et c'est en comparent la $list1(provisoire) à la $list2(principale) que l'on attribu 'y' ou 'n' dans comunbdd appartenant à la table comprenant $list1

table 1 = la ou est $list2
table 2 = la ou sont champ $list1 et $comunbdd
Commenter la réponse de cs_eva4

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.