8721 sujets

Développement web côté serveur, CMS

Bonsoir,
J'ai mis en place un formulaire de recherche, rapidement et provisoirement. Tout allait bien.
Ce week-end j'ai voulu pour terminer, harmoniser avec l'ensemble de mon site en utilisant mon fichier de fonctions (pour la connexion et les requêtes). Tout se passe bien ainsi pour d'autres formulaires et leurs traitements.
Catastrophe. Je pense que c'est un problème de double emploi soit de mysql_query soit de mysql_fetch_assoc mais je ne vois pas où ?
Pourriez-vous, SVP, rapidement regarder mes codes et me donner vos avis, je suis sûre que c'est une erreur stupide, comme d'hab.
Un grand merci par avance,
Evelyne

Extrait du code de traitement du formulaire de recherche avec pour exemple la 1ère requête :
// Création de la requête
switch (($_SESSION["recherche"]["type"])) {
	case 'nomDepartement':	// contient le mot ...$mot_recherche...
		// IMPORTANT => mysql_real_escape_string(...) pour PROTEGER des injections SQL !!
		$clauseWhere = " WHERE nomDepartement LIKE '%".mysql_real_escape_string($_SESSION['recherche']['mot'])."%' ";
$retour_total_query = 
		SQLSelect("SELECT count(ID_gite) AS total FROM GITE g
		JOIN AS_COMMU_DEPAR acd ON g.ID_commune = acd.COMMUNE_ID_commune
		JOIN DEPARTEMENT d ON d.ID_departement = acd.DEPARTEMENT_ID_departement
		$clauseWhere
		"));
		//$clauseWhere; // Critères de recherche
	$retour_total = mysql_query($retour_total_query) or die (mysql_error());
	$donnees_total = mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
	$total = $donnees_total['total']; //On récupère le total pour le placer dans la variable $total.


Extrait du même fichier de traitement de formulaire de recherche qui au final affiche les résultats sous forme de liste avec pagination :
if($total) {
    // début du tableau
    echo '<table id=table1>'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<th>Numéros des gîtes</th>';
        //echo '<th>Nature des gîtes</th>';
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 1 colonne, 1 résultat par ligne.    
while($donnees_messages = mysql_fetch_array($retour_messages)) {
        echo '<tr>';
        echo '<td ><a href="../lith_page_gite_invites.php?numGite='. $donnees_messages['numGite'] . '">' . $donnees_messages['numGite'] . '</a></td>';
        echo '</tr>'."\n";
    
    }    echo '</table>'."\n";
    // fin du tableau.
   }
else echo 'Il n\'y a pas encore d\'enregistrement dans la Lithothèque correspondant au terme de votre recherche.';


Enfin, pour terminer, requete SELECT dans mon fichier de fonctions :
function SQLSelect($sql) {
    global $BDD_host;
    global $BDD_base;
    global $BDD_user;
    global $BDD_password;

    mysql_pconnect($BDD_host, $BDD_user, $BDD_password) or die("<font color=\"red\">Erreur de connexion : " . mysql_error() . "</font>");
    mysql_select_db($BDD_base) or die("<font color=\"red\">Erreur select db : " . mysql_error() . "</font>");
    mysql_query("SET NAMES 'utf8'");
    $rs = mysql_query($sql) or die("Erreur sur la requete : <font color=\"red\">$sql" . "|" . mysql_error() . "</font>");
    $num = mysql_num_rows($rs);
    if ($num == 0)
        return false;
    else
        return $rs;
}
Bonjour à toutes/tous,
J'ai réussi à résoudre mon problème.
C'est bien ce que je pensais, je faisais un mysql_query sur un mysql_query.
J'ai supprimé la ligne :
$retour_total = mysql_query($retour_total_query) or die (mysql_error());

et modifiéla suivante comme suit :
$donnees_total = $retour_total_query; //On range retour sous la forme d'un tableau.

Je peux enfin avancer.
En espérant que ce bout de code pourra servir à d'autres, très bonne journée,
Evelyne