Repeter action x fois

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

34 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
23 janv. 2010 à 13:41
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 -
3
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
20 janv. 2010 à 14:26
tj personne for me ?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 janv. 2010 à 19:25
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-
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
20 janv. 2010 à 20:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
21 janv. 2010 à 09:20
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
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
21 janv. 2010 à 12:59
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.
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
21 janv. 2010 à 13:43
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
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
21 janv. 2010 à 14:16
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();
?>
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
21 janv. 2010 à 14:18
J'ai oublié le ";" a la fin de la ligne 8

<?php 

$sortie = mysql_fetch_array($var);

?>
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 janv. 2010 à 18:30
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 -
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
21 janv. 2010 à 21:02
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();
?>
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
22 janv. 2010 à 06:39
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" ?
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
22 janv. 2010 à 08:11
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'
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
22 janv. 2010 à 08:45
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();
?>
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
22 janv. 2010 à 14:00
j'ai essayé comme ça mais ce bout de script me met en erreur

mot = ' . $sortie['mot']
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
22 janv. 2010 à 17:38
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.
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
22 janv. 2010 à 18:03
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
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
22 janv. 2010 à 18:20
j'oubliais, le script est celui que vous m'avez proposé
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
23 janv. 2010 à 07:29
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'
0
cs_eva4 Messages postés 278 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 24 juin 2011
23 janv. 2010 à 09:53
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
0
Rejoignez-nous