IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Un seul résultat dans une boucle while


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    graphanco
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : graphanco

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Un seul résultat dans une boucle while
    Voici en gros le problème est le suivant : la boucle while ne sort que le premier résutat.
    j'ai fais un select count et là ça me sort bien le nombre d'éléments dans ma base.

    Voici une partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
            if(isset($_POST['produit'])){$produit = $_POST['produit'];}
     
     	 $requete='SELECT * FROM `references_tplg` WHERE ';
    	 $requete_count='SELECT COUNT(id) as total FROM `references_tplg` WHERE ';
     
             if($produit != '0') {
    		 $requete=$requete.'`produit`="'.$produit.'"';
    		 $requete_count = $requete_count.'`produit`="'.$produit.'"';
    	 }
     
                    $requete = $requete.' ORDER BY id ASC';
    	 	$requete_count = $requete_count.' ORDER BY id ASC';
     
    		$sqlcount=mysqli_query($bdd, $requete_count);
    		while ($row1 = mysqli_fetch_array($sqlcount))
    		{	$total=$row1['total'];
    		}
    		if ($total=='0') { echo 'Il n\'y a pas de résultats pour votre recherche. <br> Nous vous conseillons de réitérer votre recherche en limitant le nombre d\'option sélectionné'; } 
    		else if ($total>0){ echo 'Vous avez '.$total.' résultat(s) à votre recherche.<br><br>'; }
     
    	$sql=mysqli_query($bdd, $requete)
    	while ($row = mysqli_fetch_array($sql))
    	{
    		$produit=stripslashes($row['produit']);
    		if ($produit == '1'){ $produit_ok='texte1';} 
    		else if ($produit == '2'){ $produit_ok='texte2';}
     
    	?>
        <hr />
        <?php if($produit_ok != '') { ?><h2>Produit : <?php echo $produit_ok; ?><? if($gamme_ok != ''){ ?> / <?php echo $gamme_ok; ?><?php } ?></h2> <?php } ?>
    <?php } ?>
    Si vous avez une idée, elle serait la bienvenue. Pardonnez d'avance ma manière de coder, je suis graphiste de formation, et je dois me débrouiller par moi-même.
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En tant que graphiste, tu devrais prêter attention à présenter proprement ton code

    Je n'ai pas vraiment identifier ce qui pourrait faire qu'une seule ligne sorte dans ton code.
    Écris plus proprement (avec protection de la requête), ça donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    $requete='SELECT produit FROM `references_tplg`';
    if (isset($_POST['produit'])) {
    	$requete .= ' WHERE produit = ?';
    }
    $requete .=  ' ORDER BY id ASC';
     
    $stmt = mysqli_prepare($bdd, $requete);
    mysqli_stmt_bind_param($stmt, "i", $_POST['produit']);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
     
    $n = 0;
    $output = '';
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    	if ($row['produit'] == 1){ $produit_ok='texte1';} 
    	elseif ($row['produit'] == 2){ $produit_ok='texte2';}
    	else { $produit_ok = FALSE; }
     
    	$ouput = '<hr />';
    	if ($produit_ok !== FALSE) { 
    	   $output .= '<h2>Produit : ' . $produit_ok . '</h2>';
    	}
    	++$n;
    }
     
    if ($n == 0) {
    	echo 'Il n\'y a pas de résultats pour votre recherche. <br/> Nous vous conseillons de réitérer votre recherche en limitant le nombre d\'options sélectionnées';
    }
    else {
    	echo 'Vous avez '. $n .' résultat(s) à votre recherche.<br/><br/>' . $output;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Femme Profil pro
    graphanco
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : graphanco

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour, merci pour votre aide, cela dit cela ne me sort aucun résultat après avoir fait vos modifications.
    Je vais continuer à chercher mais si vous avez une idée, elle serait la bienvenue.

    Et excusez mon langage php je me débrouille comme je peux, sans formation...

    La valeur $n reste nulle quelque soit mon test. Pourtant elle existe dans ma bdd.

    Bonne journée.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    graphanco
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : graphanco

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    ça fonctionne, merci

Discussions similaires

  1. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  2. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 17h42
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  4. Réponses: 6
    Dernier message: 17/06/2005, 16h51
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo