Prb de requete sql et d'affichage

cs_lepetitcod Messages postés 4 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 3 juin 2008 - 3 juin 2008 à 10:53
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 - 3 juin 2008 à 12:48
Bonjour a tous ,

j'aurais voulu avoir votre avis sur un petit probleme que je rencontre
depuis quelques jours avec mon propre code : le but de ma recherche est
de m'afficher une liste de spot de kitesurf selon 3 criteres apparement
les 2 premiers sont pris en compte mais le 3eme   reste muet mais un
autre soucis apparais lors de l'affichage .
en effet mes resultats sont repetes (4 fois ou plus )ce qui rend la liste de resultats extremement longue .

voici mon code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>

<title>Résultats de la recherche</title>
<style TYPE= "text/css">
<!--
A:hover {text-decoration:none; background: #FFFFCC}
A:hover {color:#FF0000;}
-->
</style>
<style TYPE="text/css">
BODY {
scrollbar-face-color: #bfcfff;
scrollbar-shadow-color: #000000;
scrollbar-highlight-color: #FFFFFF;
scrollbar-3dlight-color: #000000;
scrollbar-darkshadow-color: #000000;
scrollbar-track-color: #e6cff;
scrollbar-arrow-color: #6078bf;
}
</style>
</head>

<center>
Résultats de la recherche</center>

<?php
$zone_fr=$_POST['zone_fr'];
$niveau=$_POST['niveau'];
$vent_opt=$_POST['vent_opt'];
$envoyer=$_POST['envoyer'];

if(isset($_POST['envoyer']))      $envoyer=$_POST['envoyer'];
else      $envoyer="";
if ($zone_fr=="" && $niveau=="" && $vent_opt=="")
{echo
"<center>Veuillez
remplir au moins un champ!!</center>";}
elseif($envoyer=='Recherche ')
{

echo' ' ;
echo'
';
echo'
';
if(isset($_POST['zone_fr']))      $zone_fr =$_POST['zone_fr'];
else      $zone_fr="";
if(isset($_POST['niveau']))      $niveau=$_POST['niveau'];
else      $niveau="";
if(isset($_POST['vent_opt']))      $cms=$_POST['vent_opt'];
else      $vent_opt="";

include("connectionkite.php");
$connect = connectToBasec();

;

$sql
= "SELECT DISTINCT
zone.zone_fr,zone.spot,zone.ID_spot,session.sess_type,session.niveau,session.vent_opt
FROM zone,info,session  WHERE zone.ID_spot = info.ID_spot and
zone.zone_fr like '%$zone_fr%' and session.niveau like '%$niveau%' and
session.vent_opt like '%$vent_opt%'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$result="0";

//Test du résultat
while($data = mysql_fetch_assoc($req)){$result="1";}
//Affichage des données.
if ($result=="0"){
echo"<center>Aucun enregistement retourné
...</center>

";
}
else{
//affichage des données
echo'';
echo'----
';
echo'<center>zone</center>,
<center>spot</center>,
<center>niveau</center>, <center>type
de
session</center>, <center>Numeros</center>, <center>Détails</center>, ';

$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data=mysql_fetch_assoc($req))
{
$zone_fr=$data['zone_fr'];
$niveau=$data['niveau'];
$vent_opt=$data['vent_opt'];
$ID_spot=$data['ID_spot'];

echo'----
';
echo'<center>'.$data['zone_fr'].', </center>
<center>'.$data['spot'].', </center>
<center>'.$data['niveau'].', </center><center>'.$data['sess_type'].', </center><center>'.$data['ID_spot'].', </center>';
echo'';
echo"
<center>Cilquez
ici</center>";

echo', ';
}}
echo'
';
echo'
';
echo'
';
}

?>

</html>

merci d'avance

1 réponse

maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
3 juin 2008 à 12:48
Bonjour

Déjà pour ça
//Test du résultat
while($data = mysql_fetch_assoc($req)){$result="1";}
//Affichage des données.
if ($result=="0"){
echo"<center>Aucun enregistement retourné
...</center>

";
}

Il aurait été plus judicieux de faire tes tests avec mysql_num_rows() parce que la ça bouffe énormément de ressource pour rien...

Par rapport aux données en double quand tu construit une requete multitable il faut faire les liens entre les clés primares et clés étrangères
Exemple

Table1
primary1 PK int
champs1,
champs2

Table2
primary2 PK int,
champs11,
champs21,
primary1 FK

select * from table1 t1, table2 t2 where t1.primary1=t2.primary1 and.....

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
0
Rejoignez-nous