Recherche dans base mysql

Résolu
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010 - 8 sept. 2010 à 15:56
 kohntark - 15 oct. 2010 à 23:50
bonjour a tous,

voila j'aurais besoin de votre aide car je me suis lancé dans un petit projet je suis en train de developper un site web local pour mon entreprise et niveau php mysql je suis pas au top j'ai des bases mais c'est tous.Le but étant que le personnel de la société est acces en temps réel a l'état du stock de la societé tout est référencé dans une base de donnée mysql.
j'utilise easyphp pour pouvoir mettre tous ca en place.
voici mon code:



<html>


Votre recherche :
<form method="post" action="stock.php">


</form>

<?php

$serveur = mysql_connect("127.0.0.1","****","****");

if ( ! $connexion )

die ("connexion impossible");

mysql_select_db('basededonne',$serveur);

$button = $_POST["submit"];
$recherche = $_POST["search"];

$sql = 'SELECT * FROM `stock` WHERE text LIKE "%$recherche%"' ;

$resultat = mysql_query($sql);


while ($data = mysql_fetch_array($resultat))
{
echo "
<center>
";
echo $data['Item'];
echo ",
";
echo $data['Description'];
echo ",

----

";
echo $data['Quantity'];
echo ",
";
echo $data['Price'];
echo ",

----

";
echo $data['Currency'];
echo "

</center>
";
};

mysql_close ();

?>


</html>

en fait j'ai mon formulaire sur la page stock.php et lorsque que je rentre une ref dans le champs texte je voudrais
afficher le résultat en dessous.
mais je comprend pas pourquoi ca ne marche pas pourtant j'ai regardé sur plein de site et mon code a l'air cohérent.
comment etre sur que lorsque l'on appui sur le bouton ca exécute la requete ?

Merci d'avance pour votre aide
A voir également:

119 réponses

bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
13 sept. 2010 à 11:53
J'aime mieux ça dans ce cas no problemo ton probleme est normale en fait il faut que tu mettes la parties html soit celle ci

re recherche :
<form method="post" action="stock.php">


</form>



après la partie php en fait avec le code que tu as maintenant le programme se lance une fois sans que tu ai appuyé sur un bouton donc forcément certaines variables ne sont pas définies...
sinon une autre solution est de tout englobler dans le if :
if (isset($_POST['bouton']) && isset($_POST['search']))
{
comme ça la requete mysql et le traitement de cette requete ne s'effectueront que si tu as cliqué et remplis le champ !



Voili voilou !


Je pense que ça dervais marcher maintenant

Redis moi ça !

@+!
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 sept. 2010 à 14:55
Merci pour cette astuce en éffet la solution de tout englober dans le if marche bien j'ai pu la notice d'avant.
par contre ca beug
je te résume le truq je lance la page la table sql ne s'affiche pas donc c'est bon mais en fait une fois que je clique sur rechercher il me sort toute la table sql et par contre si je met quelque chose dans le champs texte il m'affiche rien et ca fait disparaitre toute la table sql
c'est bizard
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
13 sept. 2010 à 15:48
Essaye avec un texte qui est dans ta table ? fais bien gaffe aux majuscules minuscules

là je vois pas regarde si mysql error te renvoit pas quelque chose... verifit que la chaine que tu cherche est bien écrite comme tu le pense dans ta base (mysq rajoute des \ quand tu rentres une chaine dans une bdd), fait le test avec une chaine simple sans accents ni apostrophes !
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 sept. 2010 à 16:12
on ma dit que cela serrait du a ma requete $recherche car elle n'existe pas au début
il faudrait que je fasse en sorte d'executer $recherche que si y a un mot dans le champs mais comment puis je faire cela avec un while

Pourtant j'écrit bien la référence d'un produit et rien ne s'affiche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 sept. 2010 à 16:26
donc voila maintenant pu de probleme d'affichage intenpestif de la table sql par contre j'ai beau mettre n'importe koi dans le champs texte ba il m'affiche rien

fallait mettre un empty sur le 'search'

Votre recherche :
<form method="post" action="stock.php">


</form>

<?php

$serveur = mysql_connect("127.0.0.1","root","****");

mysql_select_db('société', $serveur);

if ( ! $serveur )

die ("connexion impossible");

if (isset($_POST['bouton']) && !empty($_POST['search']))
{
$button = $_POST['bouton'];
$recherche = $_POST['search'];


$sql = "SELECT * FROM `stock` WHERE 'Item' LIKE '%". $recherche ."%'" ;

$resultat = mysql_query($sql);

while ($data = mysql_fetch_array($resultat))
{
echo "
<center>

";

echo $data['Item'];
echo ",

";

echo $data['Description'];
echo ",

----

";

echo $data['Quantity'];
echo ",

";

echo $data['Price'];
echo ",

----

";

echo $data['Currency'];
echo "
</center>
";
}
}
?>


donc la jvoi pas trop comme si il prennait pas en compte ce que j'écris dans le champs texte
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
13 sept. 2010 à 17:00
Et la ça marche ????????
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
13 sept. 2010 à 17:09
nan j'ai pu mes problemes avec l'affichage complet a chaque fois de la table mais mon probleme maintenant est que lorsque je rentre une ref dans le champs de recherche et que j'execute ba il se passe rien
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
13 sept. 2010 à 17:20
Essaye avec une chaine fixe qui correspond à une ref. à la place de $recherche et verifie si la ref que tu utilise est écrite de la même façon dans la bdd(phpmyadmin)
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 11:35
Moi j'ai juste un petit soucis avec ça ...

if (isset($_POST['bouton']) && !empty($_POST['search']))
{
  $button = $_POST['bouton']; 
  $recherche = $_POST['search'];



Tu peut déjà virer $button = $_POST['bouton']; qui ne sert à rien.
Ensuite quel est le résultat si tu as juste un espace vide dans $_POST['search'] ? ou un espace en début ou fin de mot ?

pour être sur de couvrir tout les cas essaye ça :

if (isset($_POST['bouton']) && !empty( trim($_POST['search']) ))


Pour ta boucle while : c'est un peut "foireux" la tu va créer autant de tableau et de div que tu as de résultats



while ($data = mysql_fetch_array($resultat))
{
echo "
<center>


";

...
echo "
</center>
";
}


Essaye plutôt ça :

echo "
<center>";
echo "\";

while ($data = mysql_fetch_array($resultat))
{
echo\"----
";

...
echo ", \";
}

echo"
</center>
";
}


tu n'auras plus qu'un seul tableau / div
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 14:48
slt a toi lyle56 alors j'ai éssayé tes conseils mais tj rien j'ai beau mettre n'importe koi dans le champs texte il m'affiche rien ( j'ai regarder la syntaxe éxacte que phpmyadmin a pris en compte )
mais la je vois pas d'ou ca peut venir
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 14:51
Juste en passant :

Après
if (isset($_POST['bouton']) && !empty( trim($_POST['search']) ))
{


si ajoute : echo $_POST['search'];

est ce que tu as le texte de recherche qui s'affiche ?
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 14:56
alors oui lorsque je met l'echo il m'affiche le résultat
par contre le trim(...) me crée une fatal error
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 15:05
c'est possible que ce soit du au fait que tu ne test pas $_POST['search'] avec isset avant de faire trim(), tu demandes au script de faire trim() sur une variable pas forcément définie... tu vois ce que je veux dire ?
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 15:11
en fait la façon d'utiliser trim est la suivante : $recherche=trim($_POST['search'])

tu peux essayer de passer $_POST['search'] à la moulinette de la même façon mais avec strip_tags() qui retire les balises html/php de la chaine en argument, c'est utile car mysql refuse tout ce qui ressemble de près ou de loin à des balises html car ça constitue une faille de sécurité, la tristement célèbre faille XSS
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 15:17
Faut que je revois ça ...

Me sembler que php éjecte du if dés la première condition non trouvée.
Cela ne semble pas être le cas ...

essaye ça :

if (isset($_POST['bouton']) && isset($_POST['search']))
{
if(!empty(trim($_POST['search'])) { 
  $recherche = $_POST['search'];
} else {
  exit();
}

0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 15:28
lyle56 c'est pareil que la premiere fois le trim me créer une fatal error
par contre si je l'enleve ca revient comme avant c'est a dire qu'il veut rien m'afficher

Benco pourrait tu men dire un peux plus sur le strips_tag faut-il que je le mette pour la requete sql ou pour tous mon code php
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 15:39
if (isset($_POST['bouton']) && isset($_POST['search']))
{
$temp = trim($_POST['search']);
if(!empty($temp) && $temp != '' ) { 
  $recherche = $_POST['search'];
  $recherche = strips_tag($recherche);
} else {
  exit();
}


Bon dernière tentative... mais c'est un peut bizarre que tu est un fatal sur ça ( je l'utilise sans soucis dans plusieurs script )

Pour le strips_tag : ça te "nettoie" une chaine, donc tu ne le fait que sur la chaine que tu veut nettoyée.
0
karlito911 Messages postés 67 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 20 octobre 2010
14 sept. 2010 à 15:56
merci pour l'explication de strips_tag.
maintenant je n'est plus fatal error quand je lance ma page php
par contre lorsque que je clique sur le bouton il me dit " call to undefined function strips_tag() on line: "$recherche = strips_tag($recherche);"

alors d'ou cela peut-il venir a ton avis faut-il la déclarer au debut de mon code
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
14 sept. 2010 à 16:00
heu c'est peut être strip_tags()

le 's' est à la fin :D
0
bencoandco Messages postés 165 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 janvier 2015
14 sept. 2010 à 16:14
Effectivement strip_tags dsl
0
Rejoignez-nous