Page 1 sur 1

recherche selon initiale

Posté : 01 juil. 2005, 11:37
par castelli
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 ::)

Posté : 01 juil. 2005, 11:38
par ouckileou
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...

Posté : 01 juil. 2005, 11:41
par castelli
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é )

Posté : 01 juil. 2005, 11:44
par zeus
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

Posté : 01 juil. 2005, 11:49
par castelli
A force Zeus sa vas finir par rentré :lol: :lol:

Mercii :)
sa fonctionne trés bien :twisted:

Posté : 01 juil. 2005, 13:04
par castelli
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:

Posté : 01 juil. 2005, 13:33
par ouckileou
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

Posté : 01 juil. 2005, 13:38
par castelli
Ah merci Ouckileou c tout simple mais super efficace :)
merci :)