Problème de requète SQL

Eléphant du PHP | 206 Messages

17 mars 2006, 11:45

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 mars 2006, 12:26

Vu l'erreur que PHP t'indique, je pense qu'il vaudrait mieux que tu nous donnes le code de bdIntranetConnect.php
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 206 Messages

17 mars 2006, 12:33

<?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); 
?>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 mars 2006, 12:52

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");
?>

Eléphant du PHP | 206 Messages

17 mars 2006, 14:47

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 mars 2006, 15:06

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

Eléphant du PHP | 206 Messages

17 mars 2006, 16:02

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 mars 2006, 16:10

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 ?

Eléphant du PHP | 206 Messages

20 mars 2006, 17:02

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

Eléphant du PHP | 206 Messages

20 mars 2006, 17:58

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