Pb affichage des sous-catégories

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 : Pb affichage des sous-catégories

par Tximiti » 06 juil. 2007, 08:55

Merci d'avoirpris un peu de temps pour regarder ce que j'avais fait...Entre temps j'ai changé un peu, j'ai fait avec my_sql_fetch_array et $row(['id_formations']...Il me semble avoir essayé ta requête (je fais toutjours plein d'essai avant de trouver ! :wink: ) mais cela ne me sortait que les formations qui avait des dates, or je souhaitais afficher toute les dates...Mais je tiens compte de ta remarque pour les prochaines occasions...J'apprend beaucoup ici !

par Ryle » 04 juil. 2007, 11:02

C'est effectivement parce que tu utilises la fonction mysql_fetch_object() qui va donc te retourner les résultats de la ligne sous forme d'un objet (donc à utiliser de façon objet->attribut). Mais ta syntaxe aurait tout aussi bien pu fonctionner si tu avais utilisé mysql_fetch_assoc() qui t'aurais alors retourné un tableau associatif :)

Par contre ce n'est effectivement pas la meilleure solution puisque pour chaque formation trouvé tu vas exécuter une requête... si tu en as une 10aine tu ne verras pas vraiment l'impact, mais plus tu auras de formations à proposer et plus tu vas soliciter ta base, et augmenter le temps de chargement de ta page. Il faut éviter (pour ne pas dire qu'il ne faut jamais ;)) mettre un SELECT dans une boucle while dont tu ne maitrises pas le nombre d'itération.

Ce que tu peux faire pour éviter cela, c'est croiser les données de tes tables, ainsi tu n'auras qu'une seule requête qui te retournera toutes tes infos :

Code : Tout sélectionner

SELECT f.id_formation, f.nom_formations, ...., d.lieu_date, ... FROM formation f, date_formations d WHERE f.id_formations = d.id_formations ORDER BY f.nom_formations

Pb affichage des sous-catégories

par Tximiti » 03 juil. 2007, 11:14

Bonjour,

Je suis en train de préparer une administration, mon souci est que je voudrais voir apparaître la liste des formations avec leur date et le lieu.
J'ai deux tables : la table contenant les formations et la table qui contient les dates et les lieux; Elles sont reliées par id_formations

J'arrive bien à afficher la liste des formations (je me suis aidée d'un tutoriel : http://wiki.mediabox.fr/tutoriaux/php/i ... -donne-php) et j'ai essayé de faire apparaître mes dates et lieux, mais ils ne veulent pas apparaître....Auriez-vous une idée d'où peut venir le problème ?
//requête SQL:
 $sql = "SELECT *
	     FROM formation 
	     ORDER BY nom_formations" ;
    //exécution de la requête:
    $requete = mysql_query( $sql, $connexion ) or die ('Erreur : '.mysql_error() ) ;
 
 //	Affichage des données
 	// debut du tableau
    echo " <center>
		<table bgcolor='#FFFFFF'>
			<tr>
				<td colspan='8'></td>
			</tr>
			<tr bgcolor='#8DCCFF'>
				<td colspan='8'>Si vous souhaitez <a href=\"formation-insertion.php?nomFormation=".$result->id_formations."\">ajouter une formation</a></td>
			</tr>
			<tr>
				<td colspan='8'></td>
			</tr>
			<tr bgcolor='#339DC5'>
				<td width='300' align='center'><b>Formation</b></td>
				<td width='75' align='center'><b>Référence</b></td>
				<td width='75' align='center'><b>Date</b></td>
				<td width='75' align='center'><b>Lieu</b></td>
				<td width='75' align='center'><b></b></td>
				<td width='75' align='center'><b></b></td>
				<td width='75' align='center'><b></b></td>
				<td width='75' align='center'><b></b></td>
			</tr>";
	while( $result = mysql_fetch_object( $requete ) )
    {
	 $sql_date = "SELECT *
	 			 FROM date_formations
	     		 WHERE id_formations ='".$result['id_formations']."'" ;
			$requete_date = mysql_query( $sql_date, $connexion ) or die ('Erreur : '.mysql_error() ) ;	
				echo(" <tr bgcolor='#8DCCFF'>
	   			<td>".$result->nom_formations."</td>
				<td align='center'>".$result->ref_formations." </td>
				<td align='center' colspan='4'>");
						
  			// tant qu'il y a des résultats
		while($result_date = mysql_fetch_object( $requete_date ))
		{ //exécution de la requête:
			echo("
			<table width='100%' border='0'>
				<tr>
					<td width='200'>".$result_date->date_date."</td>
					<td width='200'>".$result_date->lieu_date."</td>
					<td align='center'><a href=\"formation-modif1.php?nomFormation=".$result_date->id_formations."\">modifier</a></td>
					<td align='center'><a href=\"#\" onClick=\"confirme('".$result_date->id_formations."')\" >supprimer</a></td>
				</tr>
			</table>");
		}echo ("</td>
				<td align='center'><a href=\"formation-modif1.php?nomFormation=".$result->id_formations."\">modifier</a></td>
				<td align='center'><a href=\"#\" onClick=\"confirme('".$result->id_formations."')\" >supprimer</a></td>
			</tr>") ;
    }
	echo "</table>
	</center>";
Merci par avance de votre aide !


En fait j'ai trouvé : il fallait conserver le même principe de synthaxe :
$sql_date = "SELECT *
	 			 FROM date_formations
	     		 WHERE id_formations ='".$result->id_formations."'" ;
Pr contre, ce n'est peut-être pasla meilleure solution...Tout conseil est bon à prendre !