Afficher 4 colonne/ligne ( PHP/ HTML )

Fermé
Anaxagorius Messages postés 5 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007 - 21 nov. 2007 à 13:09
 dam - 24 avril 2008 à 09:50
Bonjour, je suis débutant en php/mysql et j'ai un petit problème lorsque les résultats sont affichés sur ma page recherche.

Sur la première ligne ( <TR> ) il n'y a que deux résultats d'affiché alors que sur la deuxième, troisième... ( tout dépendant du nombre de résultats ), il y en a 4... Et je ne sais pas pourquoi, j'ai réussi à faire ce petit script php grâce à l'aide de certaines personnes ( qui te disent simplement de lire un autre truc... ) et de sites sur la programmation php...

On m'a dit d'aller lire les isset ( je n'ai jamais utilisé les Isset et je ne sais pas du tout comment... )

Voilà ma page :

$host="****"; // Host name
$username=****"; // Mysql username
$password="****"; // Mysql password
$db_name="****"; // Database name
$tbl_name="****"; // Table name
 $search=$_POST["search"];
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$result = mysql_query("SELECT * FROM $tbl_name WHERE name LIKE '%$search%' Order by id"  );


echo '<form method="POST" action="members.php?page=search">
<table align="center" width="300" border="0" cellpadding="2" cellspacing="0"><tr>
<td align="center"><input type="text" name="search" size=25 maxlength=25></td>
<td align="left"><input type="Submit" name="Submit" value="Search!"></td>
</tr></table></form> <table align="center" width="450" bgcolor="#F2F8F2"><tr>'; 
 $compteur ="0";
 while($info3 = @mysql_fetch_array( $result )) 
 {
  $compteur = $compteur + 1;
  if ( $compteur % 4 != 0 ) {

   echo '<td align="center"> <img src="http://images.mrtiki.com/items/'.$info3['img'].'"> <br><a href="members.php?page=item&id='.$info3['id'].'">'.$info3['name'].'</a></td>'; 

  }
  else {
   echo '</tr><tr><td align="center">
   <img src="http://images.mrtiki.com/items/'.$info3['img'].'"><br><a href="index.php?page=item&id='.$info3['id'].'">'.$info3['name'].'</a> </td>';
  }
  }
 echo "</tr></table>";


Si quelqu'un pourrait bien m'aider ( en me disant mes erreurs et comment les réparer ) je serais très reconnaissant !

Pour voir le résultat : http://mrtikipedia.com/Test//Nouveau1.php
A voir également:

6 réponses

Bonjour,

Curieux, à vue de nez il devrait y avoir 3 résultats sur la première ligne : tu insères le </TR><TR> supplémentaire avant la 4ème image.
ça marcherait sûrement mieux en mettant $compteur = $compteur+1 à la fin de la boucle plutôt qu'au début.

Quelques remarques :
$compteur devrait être initialisé à 0 (nombre, sans apostrophes doubles) plutôt qu'à "0" (texte, avec apostrophes doubles). Il se trouve que dans ce cas, il n'y a pas de différence, mais en général il vaut mieux ne pas mélanger les types.
$compteur=$compteur+1 peut aussi s'écrire $compteur+=1 ou même encore plus court $compteur++. Plus c'est court, et plus c'est lisible et moins on fait de fautes
les deux cas de ton if ( $compteur % 4 != 0 ) sont quasiment identiques . Tu devrais ne mettre que la différence dans le if ( le </TR><TR>) et mettre tout le reste en dehors du test... puisque ça ne dépend pas du test !

enfin, évite les 'echo' suivi de 10 lignes de html. Quitte le php avec la balise ?>, écrit ton HTML puis reviens en PHP avec la balise <?php.

Bonne chance
0
Anaxagorius Messages postés 5 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007
21 nov. 2007 à 16:59
Merci beaucoup ! Le changement de $compteur++ à la fin de ma boucle à tout réparer !

Pour la fermeture des balises ?> ...

Est-il possible d'avoir par exemple
<img src="<?php $info3['img'] ?>">

Où faut tout simplement faire un
<?php echo'<img src="'.$info['Avatar'].'">'; ?>



?????
0
Bonjour,

Les deux solutions sont possibles. Ma remarque concernait les longs passages en 'HTML pur', histoire d'éviter de faire bosser le PHP pour rien.
Dans le même genre, tu sais que faire echo $a,$b,$c plutôt que echo $a.$b.$c est plus économique ? Dans le 1er cas, PHP se contente de sortir les 3 variables les unes après les autres ; dans le second cas, il traduit les 3 variables en chaînes, fabrique une nouvelle chaîne en mettant les 3 bout à bout, puis enfin sort le résultat (le point sert à concaténer des chaînes, ce qui est utile si on veut récupérer le résultat dans une variable, mais inutile si on veut juste les sortir à la queue leu leu).
0
Anaxagorius Messages postés 5 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007
21 nov. 2007 à 17:23
Je ne comprend pas ce que tu veux dire par echo $a,$b,$c plutot que $a.$b.$c ...

:S
0

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

Posez votre question
Bonjour,

C'est une remarque générale, il vaut mieux utiliser des virgules au lieu de points entres les éléments qu'on sort avec echo. Pour reprendre ton exemple, il vaudrait mieux écrire
<?php echo'<img src=",.$info['Avatar'],'">'; ?>

C'est une remarque de maniaque, peu de programmeurs en tiennent compte.
0
utilise dream weaver sa sera 2 fois plus simple sa te prendra 2 min
0