Repeter action x fois [Résolu]

cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 20 janv. 2010 à 06:44 - Dernière réponse : Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention
- 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

34 réponses

Meilleure réponse
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 23 janv. 2010 à 13:41
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de kohntark
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 20 janv. 2010 à 14:26
0
Merci
tj personne for me ?
Commenter la réponse de cs_eva4
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 20 janv. 2010 à 19:25
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 20 janv. 2010 à 20:46
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 21 janv. 2010 à 09:20
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 21 janv. 2010 à 12:59
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 21 janv. 2010 à 13:43
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 21 janv. 2010 à 14:16
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 21 janv. 2010 à 14:18
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
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 21 janv. 2010 à 18:30
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 21 janv. 2010 à 21:02
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 22 janv. 2010 à 06:39
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 22 janv. 2010 à 08:11
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 22 janv. 2010 à 08:45
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 22 janv. 2010 à 14:00
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
Gr3g69 27 Messages postés dimanche 6 décembre 2009Date d'inscription 13 février 2010 Dernière intervention - 22 janv. 2010 à 17:38
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 22 janv. 2010 à 18:03
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 22 janv. 2010 à 18:20
0
Merci
j'oubliais, le script est celui que vous m'avez proposé
Commenter la réponse de cs_eva4
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 23 janv. 2010 à 07:29
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
cs_eva4 278 Messages postés dimanche 13 décembre 2009Date d'inscription 24 juin 2011 Dernière intervention - 23 janv. 2010 à 09:53
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.