requete affiche un bouton AouB dans un array qui verifi a chaque ligne

requete affiche un bouton AouB dans un array qui verifi a chaque ligne - SQL/NoSQL - Programmation

Marsh Posté le 19-10-2007 à 10:09:46    

Bonjour vu que je ne trouve pas de sujet dans le genre je crie à l'aide! :D

 

j'ai deux requete qui doivent etre executer en fonction du nombre de ligne du champ_x de la table3 :

 

Est il possible de fair quelque chose qui ressemble à cela :

Code :
  1. $retour=mysql_query
  2. ('SELECT c.nbr_total_de_ligne FROM
  3. (select COUNT(champ_x) as nbr_total_de_ligne FROM table 3 group by id_3key) as c
  4. if c.nbr_total_de_ligne == 1
  5. (select x from t2...)
  6. else
  7. (select c from t1...)
  8. ');
  9. ou alors
  10. $retour=mysql_query('
  11. (select x from
  12. (COUNT(champ_x) as nbr_total_de_ligne FROM table 3 group by id_3key) as c
  13. inner join t2...
  14. WHEN c.nbr_total_de_ligne == 1
  15. else
  16. (select c from t1...)
  17. ');
 

voila merci beaucoup je compte sur vous ^^

 

edit titre modifier [probleme 1 resolu : requete count if else avec array] MErci ;)


Message édité par ails le 23-10-2007 à 10:57:51

---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 19-10-2007 à 10:09:46   

Reply

Marsh Posté le 19-10-2007 à 19:49:21    

Oui, tu fais un SELECT ..... INTO   ....

Reply

Marsh Posté le 22-10-2007 à 12:02:28    

je vois pas trop ce que viens faire le INTO dans cette affaire.
 
tu peux t'en sortir avec un UNION, mais ça me semble un peu bancale.
 
ta première requête retourne plusieurs lignes ou pas ?
 
selon la valeur de ton COUNT, tu dois faire une jointure différente... mais y a t'il des lignes dans la "mauvaise" table ?

Reply

Marsh Posté le 22-10-2007 à 13:10:31    

Code :
  1. SELECT
  2. case c.nbr_total_de_ligne when 1 then B.x else A.y end AS truc
  3. FROM
  4. (SELECT COUNT(champ_x) AS nbr_total_de_ligne FROM TABLE 3 GROUP BY id_3key) AS C
  5. LEFT JOIN (SELECT x FROM t2...) AS B ON [... une condition de jointure entre B et C ...]
  6. LEFT JOIN (SELECT Y FROM t1...) AS A ON [... une condition de jointure entre A et C ...]


mais attention si tes sous-selects remontent plus d'une ligne tu vas te prendre un produit cartésien.


Message édité par anapajari le 22-10-2007 à 13:10:58
Reply

Marsh Posté le 23-10-2007 à 10:51:49    

salut le probleme est résolu merci beaucoup !
la requete fontione mais j'ai une question j'ai a present cela :
 
un tableau qui retourne les enregistrements de la table (tout est sur une seul et unique table) par dimax du group [d'id et nom_de_serie] identique en french:
 
ma requete verifie pour cahque group qui on le meme id ainsi que le meme nom_de_serie celui qui a le plus grand id et il me le retourne dans le tableau array et sur chaque ligne retourné j ai un bouton dans ma premiere case,
 
ce bouton peut etre A ou B si il y a plus de 1 enregistrement dans le group [id, nom_de_serie] alors j'affiche le bouton A si il n'y en a qu un seul j'affiche le bouton B
cela fonction pour le 1er enregistrement dans mon tableau array mais a la 2eme 3eme... et les autres ligne le bouton prend la meme valeur que la 1er  ligne :/
 
voila mon code :
 

Code :
  1. <table width="100%" border="1" align="center" bordercolor="#000000">
  2.       <tr>
  3.         <th height="61" align="center" valign="middle" bgcolor="#CCCCCC"><span class="Style6">Outil</span></th>
  4.         <th width="52" align="center" valign="middle" bgcolor="#FFFF99">A cl&ocirc;turer</th>
  5.         <th width="110" align="center" valign="middle" bgcolor="#FFFF99"><strong>N&deg; s&eacute;rie    mat&eacute;riel modifi&eacute;</strong></th>
  6.         <th width="110" align="center" valign="middle" bgcolor="#FFFF99"><strong>Date de la modification</strong></th>
  7.         <th width="110" align="center" valign="middle" bgcolor="#FFFF99"><strong>Date de la d&eacute;modification</strong></th>
  8.         <th width="110" align="center" valign="middle" bgcolor="#FFFF99"><strong>Information modifi&eacute;e</strong></th>
  9.         <td width="74" align="center" valign="middle" bgcolor="#FFFF99"><strong>Suivi des activit&eacute;es (d&eacute;compte)</strong></td>
  10.         <td width="64" align="center" valign="middle" bgcolor="#FFFF99"><strong>Activit&eacute;e restante</strong></td>
  11.         <td width="110" align="center" valign="middle" bgcolor="#FFFF99"><strong> Activit&eacute;e modifi&eacute;e</strong></td>
  12.         <th width="108" align="center" valign="middle" bgcolor="#BBFFD7"><strong>NMR</strong></th>
  13.         <td width="83" align="center" valign="middle" bgcolor="#BBFFD7"><strong>Applicabilit&eacute;</strong></td>
  14.         <td width="115" align="center" valign="middle" bgcolor="#BBFFD7"><strong>Autorisation de mise en vol</strong></td>
  15.         </tr>
  16. <?php
  17. include('../connect.php');
  18. $retour = mysql_query('
  19. SELECT f.*, e.*, c.temp - f.resnbrvol as res, c.*
  20. FROM (SELECT  MAX(id_1) as idmax, SUM(nbrvoleff2) as resnbrvol FROM suivi_rafaletest2 GROUP BY id_3, serial) as f
  21. INNER JOIN suivi_rafaletest2 as e ON e.id_1 = f.idmax
  22. INNER JOIN rafaletest as c ON c.id_a = e.id_3 AND c.valide != "2"
  23. ORDER BY c.nbrnmr, c.lettre
  24. ');
  25. if (! $retour) echo mysql_error();
  26. while ($donnees = mysql_fetch_array($retour))
  27. {
  28. ?>
  29.   <tr>
  30.     <td bgcolor="#CAF4FF">
  31. <?php
  32. echo $donnees['id_1'] = mysql_query('SELECT c_id FROM (SELECT COUNT(id_3) as c_id FROM suivi_rafaletest2 GROUP BY id_3) as f');
  33. $donnees2 = mysql_fetch_array($donnees['id_1']);
  34. if($donnees2['c_id'] == 1)
  35. {
  36. ?>
  37. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees['id_1'] . ''; ?>">Modifier</a>
  38. <?php
  39. }
  40. else
  41. {
  42. ?>
  43. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees['id_1'] . ''; ?>">MAJ</a>
  44. <?php
  45. }
  46. ?>
  47. </td>
  48.     <td rowspan="4" bgcolor="#FFFF99"><div align="center"><?php echo $donnees['cloture'] ?></div></td>
  49.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><?php echo $donnees['serial'] ?></div></td>
  50.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><?php echo $donnees['datemod'] ?></div></td>
  51.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><?php echo $donnees['datedemod'] ?></div></td>
  52.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><strong>le</strong> <?php echo date('d/m/Y\ à\ H\H i\m\n', $donnees['timestamp_2']); ?> <strong>par</strong> <?php echo $donnees['pseudo2'] ?></div></td>
  53.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><?php echo $donnees['nbrvoleff'] ?> - <?php echo $donnees['serial'] ?></div></td>
  54.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><strong><?php echo $donnees['res'] ?></strong></div></td>
  55.         <td rowspan="4" bgcolor="#FFFF99"><div align="center"><strong>le</strong> <?php echo date('d/m/Y\ à\ H\H i\m\n', $donnees['timestamp_3']); ?> <strong>par</strong> <?php echo $donnees['pseudo2'] ?></div></td>
  56.         <td rowspan="4" bgcolor="#BBFFD7"><div align="center"><?php echo $donnees['nmr'] ?>/<?php echo $donnees['nbrnmr'] ?>/<?php echo $donnees['lettre'] ?></div></td>
  57.         <td rowspan="4" bgcolor="#BBFFD7"><div align="center"><?php echo $donnees['applicabilite'] ?></div></td>
  58.         <td rowspan="2" bgcolor="#BBFFD7"><div align="center"><span class="Style8"><strong>Temporaire :</strong></span></div>
  59.             <div align="center"><?php echo $donnees['temp'] ?> - <?php echo $donnees['unit'] ?></div>
  60.           <div align="center"></div>
  61.           <div align="center"></div></td>
  62.         </tr>
  63.       <tr>
  64.         <td bgcolor="#D9C6FF"><div align="center"><a href="<?php echo 'modifier_suivi2.php?modifier_suivi2=' . $donnees['id_1'] . ''; ?>">+<strong>Vols</strong></a></div></td>
  65.         </tr>
  66.       <tr>
  67.         <td height="10"" align="center" valign="middle" bgcolor="#FFCC99" title"Clic ><div align="center"><?php echo '<a href="suivi_mod.php?suivi_mod=' . $donnees['id_a'] . '">'; ?><strong>Info+</strong></div></td>
  68.         <td rowspan="2" bgcolor="#BBFFD7"><div align="center"><strong><span class="Style8">Reconductible</span> : </strong></div>          <div align="center"><?php echo $donnees['defitv'] ?></div></td>
  69.       </tr>
  70.       <tr>
  71.         <td height="46"" align="center" valign="middle" bgcolor="#FFFFFF" title"Clic ><strong>Affichage :</strong><?php
  72.         if (($donnees['valide']) == 0) { //Afficher "valider" si la news a &eacute;t&eacute; propos&eacute;e
  73.         ?>
  74.             <img src="/images/off.jpg" width="20" height="20" />
  75.             <?php
  76.         }
  77.         else{
  78.         ?>
  79.             <img src="/images/ok.jpg" width="20" height="20" />
  80.             <?php
  81.         }
  82.         ?>            </td>
  83.         </tr>
  84. <?php
  85. // Fin de la boucle qui liste les news
  86. ?>
  87.     </table></td>
  88.   </tr>
  89. </table>


 
Merci d'avance et merci encor pour tous ce que vous avez deja fait.
 


---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 23-10-2007 à 12:22:19    

Code :
  1. SELECT c_id
  2. FROM (SELECT COUNT(id_3) AS c_id
  3. FROM suivi_rafaletest2
  4. GROUP BY id_3) AS f


 
IMHO, il manque un critère de filtre afin de lier le résultat de cette requête à ce que tu as dans $donnees à chaque itération. Là ça retournera toujours la même chose.
 
PS : C'est quoi ce "as f" :heink:

Reply

Marsh Posté le 23-10-2007 à 13:32:41    

salut MagicBuzz y sert a rien en fait :-( le as f  
oui c'est comme tu la dit cela retourne toujour la meme chose
et la et la question quel genre de critere de filtre je doit placer ?  
 
IMHO c'est quoi donc .?. j ai cherche et je trouve pas ce que ca veut dir lol

Reply

Marsh Posté le 23-10-2007 à 14:09:41    

IMO = In My Opinion <=>AMA
IMHO = In My Humble Opinion <=> AMHA

Reply

Marsh Posté le 23-10-2007 à 14:20:47    

dans ce code j ai tenté de lier l id_1 de la requete principale a la requete qui affiche les bouton mais cela na rien changer comment je peut fair pour qui la verifie a chaque ligne .?  
 
merci
 

Code :
  1. <?php
  2. include('../connect.php');
  3. $retour = mysql_query('
  4. SELECT f.*, e.*, c.temp - f.resnbrvol as res, c.*
  5. FROM (SELECT  MAX(id_1) as idmax, SUM(nbrvoleff2) as resnbrvol FROM suivi_rafaletest2 GROUP BY id_3, serial) as f
  6. INNER JOIN suivi_rafaletest2 as e ON e.id_1 = f.idmax
  7. INNER JOIN rafaletest as c ON c.id_a = e.id_3 AND c.valide != "2"
  8. ORDER BY c.nbrnmr, c.lettre
  9. ');
  10. if (! $retour) echo mysql_error();
  11. while ($donnees = mysql_fetch_array($retour))
  12. {
  13. ?>
  14. <?php
  15. $donnees['id_1']=mysql_query('SELECT c_id FROM (SELECT COUNT(id_3) as c_id FROM suivi_rafaletest2 GROUP BY id_3)');
  16. $donnees2 = mysql_fetch_array($donnees['id_1']);
  17. if($donnees2['c_id'] == 1)
  18. {
  19. ?>
  20. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees2['id_1'] . ''; ?>">Modifier</a>
  21. <?php
  22. }
  23. else
  24. {
  25. ?>
  26. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees2['id_1'] . ''; ?>">MAJ</a>
  27. <?php
  28. }
  29. ?>


---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 23-10-2007 à 14:53:15    

nan, faut que tu rajoutes un where dans ton select, et que tu fasses un filtre du genre :
 

Code :
  1. monchampquivabien = $donnees['id_1']


Message édité par MagicBuzz le 23-10-2007 à 14:53:28
Reply

Marsh Posté le 23-10-2007 à 14:53:15   

Reply

Marsh Posté le 23-10-2007 à 16:27:22    

Code :
  1. <?php
  2. $donnees['id_1']=mysql_query('SELECT c_id FROM (SELECT COUNT(id_1) as c_id FROM suivi_rafaletest2 GROUP BY id_3) as z
  3. INNER JOIN suivi_rafaletest2 as y ON y.id_1 = z.id_1');
  4. $donnees2 = mysql_fetch_array($donnees['id_1']);
  5. IF($donnees2['c_id'] == 1)
  6. {
  7. ?>
  8. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees2['id_1'] . ''; ?>">Modifier</a>
  9. <?php
  10. }
  11. else
  12. {
  13. ?>
  14. <a href="<?php echo 'modifier_suivi3.php?modifier_suivi3=' . $donnees2['id_1'] . ''; ?>">MAJ</a>
  15. <?php
  16. }
  17. ?>


 j ai fait ca mais marche pas : / autre chose ?


---------------
Ritouné mwen lé ritounin
Reply

Marsh Posté le 23-10-2007 à 16:46:33    

Code :
  1. #
  2. SELECT
  3.  c_id
  4. FROM
  5. (SELECT COUNT(id_1) AS c_id FROM suivi_rafaletest2 GROUP BY id_3) AS z
  6. INNER JOIN suivi_rafaletest2 AS y ON y.id_1 = z.id_1


ça peut pas marcher  ...
tu jointes y et z sur id_1 mais le champs z.id_1 n'existe pas ...
Le "Random programming" et le SQL ont rarement fait bon ménage :o


Message édité par anapajari le 23-10-2007 à 16:46:47
Reply

Marsh Posté le 23-10-2007 à 17:02:43    

oui ... en fait j avais mis c_id mais de toute maniere rien ne marche dans tout les test que j ai fait je comprend pas :(  
 
ma table :
 
id_1(clé unique) id_3(clé pour les group) et le reste info simple...
et avec ca rien ne marche :/ mons script n est pas bon ???
 

Reply

Marsh Posté le 24-10-2007 à 10:29:48    

Bonjour!
 
je continu mes test et rien ne va, j'ai toujours la meme chose sur chaque ligne snif :(  :pfff:  
 
j ai plus beaucoup de temp pour finir cette petite aplication et je ne veut pas trop la laissé comme cela pour mes utilisateurs, donc je m'en remet a vous si vous pouvez me dir ou me donné un exemple complet du script alors vous me sauvez la vie si non ... je suis mal... :sweat:  
 
merci a tous ce qui mon aidé et ceux qui ce sont posé la question.
ails.


---------------
Ritouné mwen lé ritounin
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed