Partage
  • Partager sur Facebook
  • Partager sur Twitter

recuperer une requete sur une seule ligne

10 septembre 2010 à 20:36:37

Bonjours,
Voici mon problème,
cette après-midi j'ai effectué une requête dans ma base de donnée avec 4 champs: id / nom / prénom / numéro
ainsi quand je fait mon select je récupère le nom et le prénom (au cas ou un jour je veuille inverser les deux^^) le numéro et l'id qui renvoi a une photo de la personne. Sauf qu'il y a une quarantaine de mini-tableaux contenants ressemblant à celui-là(sans les largeurs et les classes dans celui là évidemment):

<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<td colspan='2'>la photo(avec l'id que je recupere ici)</td>
</tr>
<tr>
<td>le nom que je recupere ici</td><td>le prenom ici</td>
</tr>
<tr>
<td colspan='2'>et le numero ici</td>
</tr>
</table>

et je voudrais que il y en ai quatre par ligne et non un seul.

La je suis rentré chez moi je n'ai donc pas le code sous les yeux je l'aurais demain si besoin est pour me répondre. J'espère avoir été assez clair. J'avoue que après avoir passé environ 3 heures a chercher j'ai besoin d'aide sur ce coups là. Et j'ai beau me retourner le problème dans tous les sens je ne vois pas comment le résoudre.

PS: j'ai nommé une variable, $nNbparLigne=4 mais je ne sais pas quand l'appelé entre autre
(Je débute en requête MySql c'est ma première)

Merci d'avance.

  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2010 à 20:52:40

4 tableaux cote à cote ? C'est du coté du CSS qu'il faut se tourner en mettant float:left. Et tout les 4 tableaux, un clear:both pour revenir à la ligne. Par contre ça reste assez sale niveau code HTML, utiliser des balises <div> serait mieux.

Du coup, vaudrait mieux demander à un modo de déplacer ton topic dans un autre forum car la BDD n'est pas vraiment le problème ici.
  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2010 à 20:57:42

Ok merci je regarderai du cote du css demain si un admin peut deplacer le sujet.

Je pensais qu'il fallait voir du coté de la base de donné car le contenu de chaque tableau etant généré par la base de donné je n'ai a la base que un seul tableau qui se repete vu que la base de donnée effectue une boucle donc en realite je ne peux pas placer de clear:both apres 4 tableaux =(

tout du moins pas en css enfin a ma connaissance.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 septembre 2010 à 21:04:06

Heu... en principe tu n'effectues qu'une seule requête vers la bdd pour récupérer toutes tes données en une fois. Après c'est dans ton programme que tu boucles pour traiter les résultats de ta requête.
  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2010 à 21:23:27

Yep je fais une connexion a la bdd en début de page (car je ne me sers d'une base de donnée que sur cette page pour l'instant) puis mon select juste avant mon tableau qui est dans le while de la requête

(désolé comme précisé avant je n'ai pas le détail du code ce soir je l'aurais demain mais j'aurais aimé avoir une idée de la clé du problème avant de commencer a retravailler dessus d'où mon post ce soir ^^)

Edit: ca y est j'ai mon code à dispo: le voici

echo "
  
  <tr>
	<td align='center' colspan='4' class='titre_pages'>Trombinoscope</td>
	</tr>
  <tr>
	<td height='20'></td>
	</tr>
	<tr>
	<td>
	<table border='1' cellspacing='0' cellpadding='0' width='790'>
	<tr>
	<td>
			";

					  $szQuery = " SELECT id, nom, prenom, points "
						." FROM trombinoscope ";
					$rResult = mysql_query($szQuery,$GLOBALS['rDataBaseLink']);
					if ($rResult && mysql_num_rows($rResult)) 
			{	 
				$nNbElement  = 0;
				$nNbParLigne = 4;
				while($aRow = mysql_fetch_array($rResult))
				{
					  $szColspan = " width='130'";
						$nNbElement++;
						echo"
					<table border='1' cellspacing='0' cellpadding='0' width='190' align='center' >
	       <tr>
	     ";
					 if(($nNbElement % $nNbParLigne) == 0)
					 {
						echo "

	     <td  width='190' align='center' class='cadre_blanc' colspan='3'><img src='".$GLOBALS['szBaseURL'].$GLOBALS['szRepImg'].$GLOBALS['sztrombi']."personne-".$aRow['id'].".jpg' alt='personne".$aRow['id']."'/></td>
				</tr>
				<tr>
		      <td width='90' align='right'>".$aRow['nom']."</td><td width='100' class='marge_gauche'>".$aRow['prenom']."</td>
				</tr>
				<tr>
		      <td  width='190' align='center' colspan='3'>".$aRow['points']."</td>

        
						";
						if($nNbElement < mysql_num_rows($rResult))
							echo "</tr><tr><td colspan='3' height='10'></td></tr><tr>";
					}
					
					       elseif($aRow['id'] >= 100)
        echo"

	     <td  width='190' align='center' class='cadre_blanc' colspan='3'><img src='".$GLOBALS['szBaseURL'].$GLOBALS['szRepImg'].$GLOBALS['sztrombi']."personne-0.jpg' alt='personne".$aRow['id']."'/></td>
				</tr>
				<tr>
		      <td width='90' align='right'>".$aRow['nom']."</td><td width='100' class='marge_gauche'>".$aRow['prenom']."</td>
				</tr>
				<tr>
		      <td  width='190' align='center' colspan='3'>".$aRow['points']."</td>
        	
        ";
					
					else
						  
						echo "

	     <td  width='190' align='center' class='cadre_blanc' colspan='3'><img src='".$GLOBALS['szBaseURL'].$GLOBALS['szRepImg'].$GLOBALS['sztrombi']."personne-".$aRow['id'].".jpg' alt='personne".$aRow['id']."'/></td>
				</tr>
				<tr>
		      <td width='90' align='right'>".$aRow['nom']."</td><td width='100' class='marge_gauche'>".$aRow['prenom']."</td>
				</tr>
				<tr>
		      <td  width='190' align='center' colspan='3'>".$aRow['points']."</td>
        	
        				
        ";
        echo"
              </tr>  
         ";
				}
				
				mysql_free_result($rResult);
			}

						
	echo"
	</table>
	</td>
	</tr>
	</table>
  </td>
  </tr>
";
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 15:01:43

up du sujet avec le code
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 15:40:25

T'es au courant que le multi est interdit, surtout si c'est pour contourner l'interdiction de poster deux messages d'affilée en moins de 24h ?

A part ça, ton code, j'y comprends que dalle. Y'a des tableaux de partout, tu ouvres une balise <table> à chaque boucle de ton while mais je vois pas de fermeture </table> à la fin de la boucle.

Tu devrais t'appuyer sur un template pour voir un peu à quoi ressemblerait ton barda, même si les colspan, c'est un peu la merde à gérer. Au pire, tu refais ton script avec des <div>, ça serait beaucoup plus propre.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme