Page 1 sur 1

Problème de requète SQL

Posté : 17 mars 2006, 11:45
par betman
Bonjour à tous,

J'ai un petit soucis avec une requète. J'ai un script de recherche qui fonctionne une fois sur 2. Je veux dire par là que très souvent il me marque Erreur SQL - No database selected :/

voici mon script
<?php require_once('../../Connections/bdIntranetConnect.php'); ?>
<html>
<head>
<title>Intranet Club 14</title>
<link href="../../stylesheet/menu_centre.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet/menu_haut.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet/global.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="540" border="0" cellpadding="0" cellspacing="0" bordercolor="#004795">
  <tr>
    <td>
	<?php
$query = "SELECT * FROM moto WHERE 
		Marque LIKE '".$_POST['Marque']."%' 
		AND
		Modele LIKE '%".$_POST['Modele']."%' 
		AND
		Cyl LIKE '%".$_POST['Cyl']."%' 
		ORDER BY Marque";
		
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
?>
      <table width="530" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td><table width="100%" border="0" align="center" cellpadding="2" cellspacing="2">
              <tr bgcolor="#0099FF" class="titre_tab">
                <td bgcolor="#FF0000"><?php echo $donnees['Marque']; ?></td>
                <td bgcolor="#FF0000"><?php echo $donnees['Modele']; ?></td>
                <td bgcolor="#FF0000"><?php echo $donnees['Prix']; ?> &euro;</td>
              </tr>
            </table></td>
        </tr>
        <tr>
          <td><table width="100%" border="0" cellpadding="2" cellspacing="2">
            <tr>
              <td colspan="2"><span class="texte"><span class="texte_gras">Moteur : </span><?php echo $donnees['MOTEUR_Type']; ?></span></td>
              </tr>
            <tr>
              <td colspan="2"><span class="texte_gras">Cylindr&eacute;e :</span><span class="texte"><?php echo $donnees['Cyl']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Puissance : </span><span class="texte"><?php echo $donnees['Puiss']; ?></span></td>
              <td rowspan="12"><div align="center"><a href="img/<?php echo $donnees['Marque']; ?>/<?php echo $donnees['Fichier']; ?>" target="_blank"><img src='img/<?php echo $donnees['Marque']; ?>/<?php echo $donnees['Fichier']; ?>' height="120" border="0"></a></div></td>
            </tr>
            <tr>
              <td><span class="texte_gras">Couple : </span><span class="texte"><?php echo $donnees['Coup']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Capacit&eacute;s r&eacute;servoir (r&eacute;serve) : </span><span class="texte"><?php echo $donnees['CAPACITES_POIDS_Reservoir_res']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Poids &agrave; vide : </span><span class="texte"><?php echo $donnees['Poids_vide']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Poids avec pleins </span><span class="texte"><?php echo $donnees['Poids_pleins']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Vitesse maxi : </span><span class="texte"><?php echo $donnees['Perf_Vitesse_maxi']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">100m DA : </span><span class="texte"><?php echo $donnees['100m_DA']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">400m DA : </span><span class="texte"><?php echo $donnees['400m_DA']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">1000m DA : </span><span class="texte"><?php echo $donnees['1000m_DA']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Consommation : </span><span class="texte"><?php echo $donnees['Cons']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Autonomie : </span><span class="texte"><?php echo $donnees['Autonomie']; ?></span></td>
              </tr>
            <tr>
              <td><span class="texte_gras">Prix cl&eacute; en main :</span> <span class="separateur_rouge"><?php echo $donnees['Prix']; ?> &euro; </span></td>
              </tr>
          </table></td>
        </tr>
        <tr>
          <td height="10"></td>
        </tr>
      </table>
      <?php
}
?>
    </td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($query);
?>
Autre chose également, dans ma bdd j'ai un champ cylindrée (moto) et qd j'effectue une recherche il faut que je saisisse exactement la bonne valeur de la cylindrée (ce qui est logique). Moi je souhaiterai pouvoir saisir par exemple 1000 pour retourner comme résultat 998 ou 1003 par exemple. En faite obtenir un range de recherche

voilà si vous ave des idées je suis preneur

Posté : 17 mars 2006, 12:26
par zeus
Vu l'erreur que PHP t'indique, je pense qu'il vaudrait mieux que tu nous donnes le code de bdIntranetConnect.php

Posté : 17 mars 2006, 12:33
par betman
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_bdIntranetConnect = "localhost";
$database_bdIntranetConnect = "****";
$username_bdIntranetConnect = "****";
$password_bdIntranetConnect = "****";
$bdIntranetConnect = mysql_pconnect($hostname_bdIntranetConnect, $username_bdIntranetConnect, $password_bdIntranetConnect) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

Posté : 17 mars 2006, 12:52
par charabia
C'est un logiciel qui t'a sorti cette connexion ? Un peu long...

Essaies ça :
<?php
$host = "localhost"; 
$bdd = "****"; 
$user = "****"; 
$pass = "****"; 

mysql_connect($host,$user,$pass) or die("SERVEUR HS");
mysql_select_db($bdd) or die ("BDD HS");
?>

Posté : 17 mars 2006, 14:47
par betman
Ouep c'est impecc, je n'ai plus d'erreur sql :)

Sinon est-ce que vous avez une idée sur comment crée un range de valeur pour la cylindrée ?

Posté : 17 mars 2006, 15:06
par ouckileou
Sinon est-ce que vous avez une idée sur comment crée un range de valeur pour la cylindrée ?
Facile

Tu dois avoir un truc de ce genre là pour l'instant :

Code : Tout sélectionner

SELECT id_moto FROM motos WHERE cylindree = 1000
Il suffit donc de remplacer la condition WHERE, au lieu de "égale à 1000" on met "supérieure à 1000 - marge ET inférieure à 1000 + marge"

Regarde du côté de BETWEEN dans la doc MySQL

Posté : 17 mars 2006, 16:02
par betman
j'a i fait, ca marche qd ca veux et sans erreur :/
	<?php
$query = "SELECT * FROM moto WHERE 
		Marque LIKE '".$_POST['Marque']."%' 
		AND
		Modele LIKE '".$_POST['Modele']."%' 
		AND
		Cyl- '".$_POST['Cyl']."' between 5 AND 10
		
		ORDER BY Marque";
		
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
?>
ca me permet (quand ca marche) d'obtenir comme résulats si je tape 1000, par exemple 998 ou bien 1003.

Mais c'est pas stable

Posté : 17 mars 2006, 16:10
par ouckileou
Qu'est-ce que ça veut dire exactement "c'est pas stable" ?
Est-ce que tu as regardé si le SQL généré correspondait à ce que tu voulais ?

Je verrais cette petit modification personnellement :
$cyl = $_POST['Cyl'];
$marge = 5;
$query = "SELECT * FROM moto WHERE
        Marque LIKE '".$_POST['Marque']."%'
        AND
        Modele LIKE '".$_POST['Modele']."%'
        AND
        Cyl between ".$cyl-$marge ." AND ".$cyl+$marge."        
        ORDER BY Marque"; 
Tu ne vérifies pas les variables de ton formulaire avant de les utiliser ?

Posté : 20 mars 2006, 17:02
par betman
Non je verifie rien :/

j'ai essayé ce que tu m'as conseillé et :

Erreur SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0 ORDER BY Marque' at line 1

Je suis en version Mysql 4.1.7
et php 5.2

Posté : 20 mars 2006, 17:58
par betman
Bon je me suis pris la tête mais au final ca marche
<?php
$low = 	(int)$_POST['Cyl'] - 10;
$high = (int)$_POST['Cyl'] + 10;
if ($_POST['Cyl'] != ""){
	$low = 	(int)$_POST['Cyl'] - 10;
	$high = (int)$_POST['Cyl'] + 10;
	$requete = "AND Cyl > ".$low." AND Cyl < ".$high." ORDER BY Cyl" ;
}
else {$requete = " ";}
$query = "SELECT * FROM moto WHERE 
		Marque LIKE '".$_POST['Marque']."%' 
		AND
		Modele LIKE '".$_POST['Modele']."%' 
		$requete";		
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

while ($donnees = mysql_fetch_array($reponse) )
{
?>
Merci de m'avoir élcairer