Page 1 sur 1

Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 00:24
par LMAM
Salut à tous,
J'ai un souci d'affiche dans le tableau, la liste s'affiche entièrement à la base mais lors d'une recherche par mots clés ou par domaine via la liste déroulante les lignes s'affichent (le quadrillage du tableau) mais elles sont vides.

Code : Tout sélectionner

<?php /* Entete page */ echo'<head>'; echo'<title>Recherche - Base documentaire</title>'; echo'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; echo'<meta http-equiv="Content-Language" content="fr" />'; /* JQUERY */ echo'</head>'; echo'<body>'; /* CSS */ echo'<style> table { border:3px solid #6495ed; border-collapse:collapse; width:90%; margin:auto; } thead, tfoot { background-color:#D0E3FA; border:5px solid #6495ed; } tbody { background-color:#FFFFFF; border:1px solid #6495ed; } th { font-family:monospace; border:1px dotted #6495ed; padding:5px; background-color:#EFF6FF; //width:25%; } td { font-family:sans-serif; font-size:80%; border:1px solid #6495ed; padding:5px; text-align:center; } caption { font-family:sans-serif; } </style>'; /* Connexion à la BDD */ mysql_connect('localhost','XXXX',''); mysql_select_db('ouvrage'); mysql_query("SET NAMES 'utf8'"); /* Traitement */ echo '<a href="/Biblio/biblio.php">Liste complète</a><br>'; //On determine l'expression a rechercher if( isset( $_POST['recherche'] ) ){ $rec = htmlentities( $_POST['recherche'] ); }else{ $rec = ''; } //On determine le type de recherche if( isset( $_POST['type'] ) ){ if( $_POST['type']=='un' ){ //Un des mots $type = 1; }elseif( $_POST['type']=='tout' ){ //Tout les mots $type = 2; }else{ //L'expression exacte $type = 3; } }else{ $type = 1;//type par defaut: L'expression exacte } echo'<form action="'.$_SERVER["PHP_SELF"].'" method="post" id="formRecherche">'; echo'Expression &agrave; rechercher: <input type="text" name="recherche" value="'.$rec.'" /><br />'; echo'Type de recherche: <input type="radio" name="type" value="un"'.(($type==1)?' checked="checked"':'').' />'; echo'Un des mots <input type="radio" name="type" value="tout"'.(($type==2)?' checked="checked"':'').' />'; echo'Expression exacte (titre)<br /><input type="submit" value="Rechercher" /><br />'; echo'<select name="liste_domaine" onchange="$(\'#formRecherche\').submit();">'; $selected = (($_POST["liste_domaine"]=='voirtout')?' selected="selected"':''); echo'<option value="voirtout"'.$selected.'>--Tous les domaines--</option>'; $selected = (($_POST["liste_domaine"]=='Domaine1')?' selected="selected"':''); echo'<option value="domaine1"'.$selected.'>Domaine1</option>'; $selected = (($_POST["liste_domaine"]=='Domaine2')?' selected="selected"':''); echo'<option value="domaine2"'.$selected.'>Domaine2</option>'; $selected = (($_POST["liste_domaine"]=='Domaine3')?' selected="selected"':''); echo'<option value="domaine3"'.$selected.'>Domaine3</option>'; $selected = (($_POST["liste_domaine"]=='Domaine4')?' selected="selected"':''); echo'<option value="domaine4"'.$selected.'>Domaine4</option>'; $selected = (($_POST["liste_domaine"]=='Domaine5')?' selected="selected"':''); echo'<option value="domaine5"'.$selected.'>Domaine5</option>'; echo'</select>'; echo'<input type="submit" value="Envoyer"><br/>'; echo'</form>'; /* Traitement des résultats */ //On dertermine les informations des ouvrages if(isset($_POST["liste_domaine"])){ if($_POST["liste_domaine"]=='voirtout'){ $resultat = @mysql_query("SELECT * FROM exemple"); }else{ $resultat = @mysql_query("SELECT * FROM exemple WHERE domaine ='".mysql_real_escape_string($_POST['liste_domaine'])."' ORDER BY id ASC"); } }else{ $req= 'SELECT nom, prenom, editeur, titre, millesime, domaine, serie, ID FROM exemple'; $sCondition = ''; if( $type==1 ){ //ayant un des mots dans leurs informations $mots = explode(' ',$rec);//On separe lexpression en mots cles foreach( $mots as $mot ){ if($sCondition==''){ $sCondition.=' WHERE'; }else{ $sCondition.=' OR'; } $sCondition .= ' titre LIKE "%'.$mot.'%" OR domaine LIKE "%'.$mot.'%" OR serie LIKE "%'.$mot.'%"'; } }elseif( $type==2 ){ //ayant tout des mots dans leurs informations $mots = explode(' ',$rec);//On separe lexpression en mots cles foreach( $mots as $mot ){ if($sCondition==''){ $sCondition.=' WHERE'; }else{ $sCondition.=' AND'; } $sCondition .= ' titre LIKE "%'.$mot.'%"'; } }else{ if($sCondition==''){ $sCondition.=' WHERE'; } //ayant l'expression exacte dans leurs informations $sCondition .= ' titre LIKE "%'.$rec.'%"'; } //Les utilisateur seront ranges par domaine en ordre croissant $req .= $sCondition.' order by domaine asc'; $resultat = @mysql_query($req); } if( $resultat ){ if( mysql_num_rows($resultat)>0 ){ echo'<h2>R&eacute;sultats</h2>'; echo'<div style="text-align:center"> <table> <tr> <th>Titre</th> <th>Editeur</th> <th>Millésime</th> <th>Nom</th> <th>Domaine</th> </tr>'; //On affiche les resultats while( $row = mysql_fetch_object($resultat) ){ echo'<tr> <td>'.$row->titre.'</td> <td>'.$row->editeur.'</td> <td>'.$row->millesime.'</td> <td>'.$row->nom.'</td> <td>'.$row->domaine.'</td> </tr>'; } echo'</table> </div>'; }else{ echo'<p>Aucun résultat ne correspond à votre recherche</p>'; } }else{ echo'<p>Erreur de requête</p>'; } echo'</body> </html>'; ?>
Merci de votre aide :D

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 00:25
par LMAM
Je précise que je débute en programmation et que j'avais rédigé un texte plus long mais qui a été refusé par le système anti spam ... :oops:

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 11:21
par xTG
Commences par afficher ta requête et à l'exécuter directement sur le SGBD (console mysql ou bien phpmyadmin).
echo $req;
Et vérifies qu'elle te renvoie bien ce que tu lui avais demandé via le formulaire.

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 11:31
par LMAM
Je l'ai déjà fait dans phpmyadmin et direct dans le code, la requête affiche bien le bon résultat.
C'est ça qui est étrange !

Je précise ça affiche Resource id #3 mais lors d'un var_dump($row) celà m'affiche bien :

object(stdClass)#1 (8) { ["NOM"]=> string(29) "nom de l'utilisateur " ["PRENOM"]=> string(0) "prenom de l'utilisateur" ["EDITEUR"]=> string(25) "Editions machin truc" ["TITRE"]=> string(25) "bouquin" ["MILLESIME"]=> string(4) "2011" ["SERIE"]=> string(16) "serie du bouquin" ["DOMAINE"]=> string(6) "domaine du bouquin" ["ID"]=> string(1) "1" }

etc etc donc celà renvoi le bon résultat de recherche..

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 12:20
par LMAM
Pour vous donner une idée voilà des copies écrans de ce que ça donne
En S1 la recherche, S2 la page "d'accueil" (avant recherche et flouté).
S1.jpg
S2.jpg

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 12:25
par xTG
C'est bien bizarre ton affaire...
Pour moi ton code ne contient pas d'erreur.

Donc s'il y a souci d'affichage cela est provoqué par tes données.
As-tu regardé la source HTML générée pour voir si tu y voyais quelque chose pouvant nous faire avancer ?

Re: Affichage requete sql dans un tableau

Posté : 17 déc. 2012, 12:27
par LMAM
Problème résolu, les attributs doivent être en majuscule car les champs sont en majuscules ... :? :D

<td>'.$row->TITRE.'</td>
<td>'.$row->EDITEUR.'</td>
<td>'.$row->MILLESIME.'</td>
<td>'.$row->NOM.'</td>
<td>'.$row->DOMAINE.'</td>