recherche selon initiale

Eléphant du PHP | 450 Messages

01 juil. 2005, 11:37

Bonjour :)

J'ai un formulaire de commande ou les utilisateur doivent mettrent leur initiale pour commander . Le tout est envoyé vers ma base de donné mysql

maintenant j'aimerais que les utilisateur puisse retrouver les commandes qu'ils ont effectuer en mettant leur initiales dans un "moteur de recherche"

le probleme c'est que j'ais une erreur sql dans ma requete

je vous mets mon code :

$select="SELECT * FROM commande where initiale like $initiale";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
echo $select;
while ($voir = mysql_fetch_assoc($result)) {


echo"<tr>
<td><font face='Verdana' size='2'>".$voir['nom']."</font></td>

<td><font face='Verdana' size='2'>".$voir['quantite']."</font></td>

<td><font face='Verdana' size='2'>" .$voir['nombre_quantite']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['fournisseur']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['prix']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['prix_total']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['date']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['numero_cass']. "</font></td>

<td><font face='Verdana' size='2'><form><input type='button' value='Commander' onClick=\"window.open('maj.php?id=".$voir['reference']."','nouvelle');\"></form></td></tr>";
}

echo "</table>"; 
et mon "moteur de recherche" :

Code : Tout sélectionner

center><table> <!-- On declare le formulaire --> <form method="POST" action='modifier_commande.php'> <!-- Le champs à remplir par le visiteur --> <tr> <td><b>Indiquer vos initiales :</b></td> <td><input type="text" name="initiale"></td></tr> <tr><td></td><td><input type="submit" value="Rechercher"></td></tr> </form></table></center>
si quelqun a une idée je susipreneur merci ::)
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 juil. 2005, 11:38

ce serait bien de mettre l'erreur SQL générée ça pourrait aider

mais avec un LIKE normalement on met un % quelque part

pour dire "LIKE ceTruc%" = on cherche tout ce qui commence par "ceTruc" avec n'importe quoi derrière

sinon ça équivaut à = sans ça...

Eléphant du PHP | 450 Messages

01 juil. 2005, 11:41

Mon erreur sql quand je n'entre pas de valeur dans la barre rechercher

Erreur : You have an error in your SQL syntax near '' at line 1

sinon quand je rentre une valeur sa me donne sa :

Erreur : Unknown column 'df' in 'where clause'

sinon en faite je veu rechercher les initiales exactes (en gros mon like doit etre egale a la valeur rentré dans la barre recherché )
Alone in the dark , I smile :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 juil. 2005, 11:44

Alors je me repete encore et toujours : ON SORS LES VARIABLES DES CHAINES

Sinon, quand tu utilise un LIKE, il faut des ' autours de la valeur :
$select="SELECT * FROM commande where initiale like '$initiale'"; 
version corrigée
$select="SELECT * FROM commande where initiale like '".$initiale."'"; 
le unknow column venait du fait que trouvant du texte dans la requete, il cherchait une colonne
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 | 450 Messages

01 juil. 2005, 11:49

A force Zeus sa vas finir par rentré :lol: :lol:

Mercii :)
sa fonctionne trés bien :twisted:
Alone in the dark , I smile :D

Eléphant du PHP | 450 Messages

01 juil. 2005, 13:04

Maintenant , j'aimerais verifier si les initiales sont dans la base , si tels et le cas il senvois un tableau regroupant les resultat et o cas contraire il nous indique que les initiales ne sont associés a aucun produit

j'ai deja ecris sa (sa marche que si la barre recherché est vide )


$initiale=$_POST['initiale'];

if ($initiale =='' ) {

echo " Veuillez entrer vos initiales ";
}
else
{
$host = '************'; 
$user = '*********'; 
$pass = '*************'; 
$db = '*********';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$select="SELECT * FROM commande where initiale like '".$initiale."'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
while ($voir = mysql_fetch_assoc($result)) {

echo "<table border=1><TR bgcolor=\"#CCFFCC\"><TH>Nom</TH><TH>Quantite</TH><TH>Nombre de quantité</TH><TH>Fournisseur</TH><TH>Prix</TH><TH>Prix total</TH><TH>Date</TH><TH>Numero_cass</th><TH>Action</th></TR>";

echo"<tr>
<td><font face='Verdana' size='2'>".$voir['nom']."</font></td>
<td><font face='Verdana' size='2'>".$voir['quantite']."</font></td>
<td><font face='Verdana' size='2'>" .$voir['nombre_quantite']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['fournisseur']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['prix']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['prix_total']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['date']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['numero_cass']. "</font></td>
<td><font face='Verdana' size='2'><form><input type='button' value='Commander' onClick=\"window.open('maj.php?id=".$voir['reference']."','nouvelle');\"></form></td></tr>";
}
echo "</table>"; 
}
print("<p>Retour vers l'Index, cliquez <a href=\"index.html\" title=\"Retour a l'index\">ICI</a></p>");
?>
maintenant j'aimerais en gros que si les initiales ne sont pas dans la base de donné afficher un message disant quelle n'existe pas

si vous avez une idée de la façon de procédé ...

merci encore :oops:
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 juil. 2005, 13:33

tu peux utiliser la fonction mysql_num_rows() qui renvoie le nombre de résultats de ta requête

si > 0 tu les affiche
sinon message d'erreur

=> http://fr2.php.net/manual/fr/function.m ... m-rows.php

Eléphant du PHP | 450 Messages

01 juil. 2005, 13:38

Ah merci Ouckileou c tout simple mais super efficace :)
merci :)
Alone in the dark , I smile :D