avoir 2 groupes de résultats pour ma requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : avoir 2 groupes de résultats pour ma requete

par Aureusms » 04 janv. 2008, 14:49

Si ta base est importante oui.
En plus c'est plus simple à coder dans ton cas.

par Snipy » 04 janv. 2008, 13:32

2 requête SQL pourrait être plus rapide qu'une simple concaténation? :o

par Aureusms » 04 janv. 2008, 10:52

La réponse est dites :wink:

Dans un boucle PHP sans concaténation, la variable est réaffectée sauf s'il s'agit d'un tableau qui s'incrémente (tu changes le numéro de la clef à chaque entrée). Avec la concaténation, tu créé en sorte une nouvelle variable qui contient un bout de l'ancienne. Mais cela ne marche (à mes connaissances) que pour le texte.

A propos je rejoins notre amis (Québecois ?) Xénon :
2 requêtes SQL séparées pourraient être plus optimales que de construire une chaine de caractère pour ensuite l'afficher plus tard.

MySQL te permettra d'optimiser plus efficacement la sélection de tes matches selon la date grâce aux index SQL.
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Snipy » 03 janv. 2008, 23:09

Ah merci justement je cherchais la concaténation.. j'avais pas fait attention à la variable...
Merci :)

par Xenon_54 » 03 janv. 2008, 23:06

Le résultat est concatené à lui-même:
$match_passes = $match_passes . $row['date_prevue'] . '........';
Ceci aurait été son équivalent:
$match_passes .= $row['date_prevue'] . '........';

par Snipy » 03 janv. 2008, 23:03

Aureusms > Nickel ça marche
Par contre je ne saisis pas pourquoi. car dans la boucle à chaque fois la variable $match_passes prend une nouvelle valeur cela n'annule pas la première?
Je pensais qu'on était obligé de passer par un array pour avoir toutes les données.

la question est surement bête, mais merci de m'éclairer :)

par Xenon_54 » 03 janv. 2008, 00:37

2 requêtes SQL séparées pourraient être plus optimales que de construire une chaine de caractère pour ensuite l'afficher plus tard.

MySQL te permettra d'optimiser plus efficacement la sélection de tes matches selon la date grâce aux index SQL.

par Aureusms » 03 janv. 2008, 00:25

Méthodes radicales :
while ($row = mysql_fetch_assoc($resultat))
  {
  
    $timestamp_match = strtotime($row['date_prevue']);
  
  
        if($timestamp_match < time())
        {
        $match_passes = $match_passes.$row['date_prevue'].' '.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'<a href = "feuille_match.php?id_match='.$row['id_match'].'">Ordre du match </a><br />';
        }
        
        else
        {
         $match_a_venir =  $match_a_venir.$row['date_prevue'].' '.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'<a href = "feuille_match.php?id_match='.$row['id_match'].'">Ordre du match </a><br />';
        }
  } 
//et en dehors de la boucle ...

        echo '<div class="corps-sp1">
        <h2>Archivés </h2>'.$match_passes.'
        </div>';

        echo '<div class="corps-sp1">
        <h2>A venir </h2>'.$match_a_venir.'</div>';
 
 
EDIT :J'ai cliqué trop vite sur ENVOYER

par Snipy » 03 janv. 2008, 00:16

Je replace mon edit ici^^

EDIT : ça ne marche pas il y a toujours un div qui est cré pour chaque entré

par Aureusms » 03 janv. 2008, 00:15

Ah ouais pas bête :oops:

par Snipy » 03 janv. 2008, 00:14

J'avais mis le $k=0; avant la boucle ;)
Mais en fait non ça marche pas vraiment il se passe des trucs bizarres.

Mais concernant ton code je ne comprend pas pourquoi fixer le $timestamp puisqu'il est différent a chaque entrée?
j'essaye quand même et j'édite :)

EDIT : ça ne marche pas il y a toujours un div qui est cré pour chaque entré

par Aureusms » 03 janv. 2008, 00:12

Non ca ne peux pas marcher car tu indiques dans ta boucle while $k=1 donc au premier passage il sera à rien car tu n'a pas mis $k=0; avant ta boucle while et ensuite il sera toujours égale à 1.

Mon code précédent ne marchait pas ?
if ($kj == 0 )
       {
       $timestamp_match = strtotime($row['date_prevue']);
       $k=1;
       } 
Ce que je voulais indiquer est qu'il calcul une seule fois $timestamp_match pour être utiliser dans toute la boucle while

par Snipy » 02 janv. 2008, 23:50

Voila c'est pas très beau ce que j'ai fait mais ça a le mérite de marcher...
while ($row = mysql_fetch_assoc($resultat))
  {
  
	$timestamp_match = strtotime($row['date_prevue']);
  
  
		if($timestamp_match < time())
		{
			if($k == 0)
			{
			echo '<div class="corps-sp1">
			<h2>Archivés </h2>';
			}
		echo '<p>
		<span style="color:rgb(100,100,100);">'.$row['date_prevue'].'</span> 
		<a href="voir_match.php?id_match='.$row['id_match'].'">'.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'</a>
		</p>';
		
			if($k == 0)
			{
			echo'</div>';
			}
		}
		
		else
		{
			if($g == 0)
			{
			echo '<div class="corps-sp1">
			<h2>A venir </h2>';
			}
		echo '<p>
		<span style="color:rgb(100,100,100);">'.$row['date_prevue'].'</span> <a href="voir_match.php?id_match='.$row['id_match'].'">'.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'</a> <a href = "feuille_match.php?id_match='.$row['id_match'].'" style="color:#710101";>Ordre du match </a>
		</p>';		
			if($k == 0)
			{
			echo '</div>';
			}
			
		}	
	$k=1;	
  }
par contre je ne comprend pas pourquoi je suis obliger de changer le nom à la 3ème petite condition ( $g) et pourquoi un $k =1 à la fin de la boucle est superflue?

par Aureusms » 02 janv. 2008, 23:19

Tiens je te fais cela mais ca vaut ce que ca vaut :
$k=0;
while ($row = mysql_fetch_assoc($resultat))
  {
  
    if ($kj == 0 )
       {
       $timestamp_match = strtotime($row['date_prevue']);
       $k=1;
       }
  
  
        if($timestamp_match < time())
        {
        echo '<div class="corps-sp1">
        <h2>Archivés </h2>'
        
         .$row['date_prevue'].' '.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'<a href = "feuille_match.php?id_match='.$row['id_match'].'">Ordre du match </a><br />
        </div>';
        }
        
        else
        {
        echo '<div class="corps-sp1">
        <h2>A venir </h2>'
        
         .$row['date_prevue'].' '.$row['equipe_dom'].' '.$row['buts_dom'].' - ' .$row['buts_ext'].' '.$row['equipe_ext'].'<a href = "feuille_match.php?id_match='.$row['id_match'].'">Ordre du match </a><br />
        </div>';
        }
  } 

par Snipy » 02 janv. 2008, 23:15

Les conditions c'est ce que je fais dans mon code, mais comment je dois les placer pour avoir 2 blocs ? (car la je crée X blocs) car mes conditions sont dans ma boucle.

Sinon avec GROUP BY impossible?