probleme d'affichage if/else conflit?

Eléphant du PHP | 299 Messages

03 juil. 2011, 23:34

Salut a tous! Je vais vous presenter mon code deg*ulasse :D

Enfin il l' est car je simplifie partout pour trouver une erreur que je ne comprend pas.

J' aimerai que dans la base de données, si l' utilisateur a mis un article dans sa boutique, ca affiche les article en boucle, ca pas de souci. La ou ca cloche c'est que si il n' a rien mis encore, on ai droit a une phrase du genre "le membre n' a encore pas mis d'articles".

Mais absolument rien ne s'affiche quand l' utilisateur n' a rien mis. ni la phrase, ni son tableau.


Merci pour votre aide, ca depasse mes compétences et sincerement excusez la malpropreté du code, je suis vraiment en plein travaux dessus:
<?php session_start(); ?>
<?php $vendeur = $_GET['idv']; ?>
<?php $cat = $_GET['cat']; ?>
<?php
            $messagesParPage=5; //Nous allons afficher 5 messages par page.


$retour_total=mysql_query('SELECT COUNT(*) AS id FROM vente WHERE vendeur = "'.$vendeur.'"'); //Nous r&eacute;cup&eacute;rons le contenu de la requ&ecirc;te dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['id']; //On r&eacute;cup&egrave;re le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le num&eacute;ro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n&deg;1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la premi&egrave;re entr&eacute;e &agrave; lire


			
			if(isset($_GET['c'])&&!isset($_GET['cat']))
			{
			$vente2 = mysql_query('SELECT * FROM vente WHERE vendeur = "'.$vendeur.'" ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
			}
			elseif(isset($_GET['cat'])&&($_GET['cat']=='$cat'))
			{
			$vente2 = mysql_query('SELECT * FROM vente WHERE cat="'.$cat.'" AND WHERE vendeur = "'.$vendeur.'" ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
			}						
			
			
			
			while ($vente = mysql_fetch_array($vente2))
			{
			?>
            
            
            
            
            
            
<table width="770" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="773" height="10" background="images/menus/780h.png" style="background-repeat:no-repeat;"></td>
            </tr>
          <tr>
            <td height="35" align="center" valign="top"  background="images/menus/780m.png"><table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td height="35"><table width="701" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="35"   background="images/titres/v.png">
                    
                    
                    <?php
                    if($total < '1')
					{
						?>
                    <table width="680" border="0" align="center" cellpadding="0" cellspacing="0">
                      <tr>
                        <td align="left" valign="top" class="rougeg"><img src="images/blank.gif" width="30" height="1" /><span class="rougeg">AUCUN ARTICLE POUR LE MOMENT</span></td>
                        </tr>
                      </table>
                      <?php
					}
					else
					{
						?>
                      
                      
                     <table width="680" border="0" align="center" cellpadding="0" cellspacing="0">
                      <tr>
                        <td align="left" valign="top" class="rougeg"><img src="images/blank.gif" width="30" height="1" /><span class="rougeg"><a href="index.php?c=vte&id=<?php echo bbcode(stripslashes($vente['id'])); ?>"><?php echo bbcode(stripslashes($vente['nom'])); ?></a></span></td>
                        </tr>
                      </table>
                      
                      <?php
					}
					?>
                      

                      
                      </td>
                    </tr>
                </table></td>
                </tr>
              </table></td>
            </tr>
          <tr>
            <td height="10" background="images/menus/780b.png" style="background-repeat:no-repeat;"></td>
            </tr>
        </table>
        
        
        
        
        
        <br />
<?php
 
 
			} 
			
			echo '<table width="100% border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="20" class="gh">&nbsp;</td>
  </tr>
  <tr>
    <td height="19" align="center" valign="top" class="gm">'; //Pour l'affichage, on centre la liste des pages
	
	
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo 'Page : [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo '<a href="index.php?page='.$i.'">'.$i.'</a>';
     }
}

echo '</td>
  </tr>
  <tr>
    <td height="20" class="gb">&nbsp;</td>
  </tr>
</table>';
?>

devlop78
Invité n'ayant pas de compte PHPfrance

04 juil. 2011, 03:07

Et ... $total il est égal à combien

graffx_au_boulot
Invité n'ayant pas de compte PHPfrance

04 juil. 2011, 12:04

bonjour et merci de votre reponse!

hé bien si je vais sur ma boutique (car cette page est inclue):

index.php?c=shop=&idv=graffx

il m' affiche bien mes articles en liste

index.php?c=shop=&idv=autre_membre_sans_article


il y a 0 article dans la bdd pour ce membre, mais absolument rien ne s'affiche. Je suis au boulot, je regarderai un peu mieux devant mon pc.

Cdt

Eléphant du PHP | 299 Messages

04 juil. 2011, 23:12

personne n'aurait une idée? je crois que c'est la premiere fois que je suis confronté a ce genre de probleme avec une condition aussi simple, les variables sont bien declarées puisque qu' elles fonctionnent dans la condition positive...

Mammouth du PHP | 672 Messages

05 juil. 2011, 11:23

Et ... $total il est égal à combien
Ce n'est pas parce que ça semble fonctionner dans certains cas que c'est bon. La preuve :mrgreen:

Une petite question au passage :
Pourquoi effectuer la requête qui va te chercher les ventes quand tu n'en as pas ?
Je dirais que le problème vient de là :
Pas de vente => $vente2 est un tableau vide => tu ne passes pas dans ta boucle while (tu peux mettre un echo pour tester, voire afficher avant le contenu de $vente)...

Eléphant du PHP | 121 Messages

05 juil. 2011, 15:23

Un peu hors sujet, mais ce qui me saute aux yeux c'est : WHERE vendeur = "'.$vendeur.'"'

Sacré invitation aux injections SQL ! Je te conseille d'utiliser la fonction mysql_real_escape_string() sur $vendeur.

Eléphant du PHP | 299 Messages

05 juil. 2011, 19:34

t'es serieux pour les injections sql? :shock: Bon je vais poser cette fonction de suite! merci pour ce precieux conseil!

Macgawel, mais dans ce cas, il devrait quand meme m' afficher mon bazar non? puisque justement je lui demande "si il n' y a rien".

Eléphant du PHP | 299 Messages

05 juil. 2011, 23:23

Bon ben j' ai encore essayé de simplifié, aucun changement sur ma page et aucune erreur, je vois pas, un indice? :?


<?php session_start(); ?>
<?php $vendeur = $_GET['idv']; ?>
<?php $cat = $_GET['c']; ?>
<?php
            $messagesParPage=5; //Nous allons afficher 5 messages par page.


$retour_total=mysql_query('SELECT COUNT(*) AS id FROM vente WHERE vendeur = "'.mysql_real_escape_string($vendeur).'"'); //Nous r&eacute;cup&eacute;rons le contenu de la requ&ecirc;te dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['id']; //On r&eacute;cup&egrave;re le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le num&eacute;ro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n&deg;1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la premi&egrave;re entr&eacute;e &agrave; lire


			
			if(isset($cat)&&($cat =='shop'))
			{
			$vente2 = mysql_query('SELECT * FROM vente WHERE vendeur = "'.mysql_real_escape_string($vendeur).'" ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
			}				
			
			
			
			while ($vente = mysql_fetch_array($vente2))
			{
			?>
            
            
            
            
            
            
<table width="770" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="773" height="10" background="images/menus/780h.png" style="background-repeat:no-repeat;"></td>
            </tr>
          <tr>
            <td height="35" align="center" valign="top"  background="images/menus/780m.png"><table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td height="35"><table width="701" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="35"   background="images/titres/v.png" title="'.stripslashes($vente['cat']).'"">
                   
                      
                      
                     <table width="680" border="0" align="center" cellpadding="0" cellspacing="0">
                      <tr>
                        <td align="left" valign="top" class="rougeg"><img src="images/blank.gif" width="30" height="1" /><span class="rougeg"><a href="index.php?c=vte&id=<?php echo bbcode(stripslashes($vente['id'])); ?>"><?php echo bbcode(stripslashes($vente['nom'])); ?></a></span></td>
                        </tr>
                      </table>
                      

                      

                      
                      </td>
                    </tr>
                </table></td>
                </tr>
              </table></td>
            </tr>
          <tr>
            <td height="10" background="images/menus/780b.png" style="background-repeat:no-repeat;"></td>
            </tr>
        </table>
        
        
        
        
        
        <br />
<?php
 
 
			} 
			
			echo '<table width="100% border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="20" class="gh">&nbsp;</td>
  </tr>
  <tr>
    <td height="19" align="center" valign="top" class="gm">'; //Pour l'affichage, on centre la liste des pages
	
	
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo 'Page : [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo '<a href="index.php?page='.$i.'">'.$i.'</a>';
     }
}

echo '</td>
  </tr>
  <tr>
    <td height="20" class="gb">&nbsp;</td>
  </tr>
</table>';
?>

Eléphant du PHP | 299 Messages

06 juil. 2011, 23:38

petit up, je suis dans la panade :priere:

Eléphant du PHP | 299 Messages

07 juil. 2011, 00:03

bon alors juste pour dire que j' ai trouvé:

il ne fallait pas include une condition dans la boucle mais en dehors, ce qui je ne sais pour quelle raison en toute honneteté faisait bugguer le bazar.

Merci a tous pour votre aide.