Recherche dans base mysql [Résolu]

Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
- - Dernière réponse :  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
Afficher la suite 

20/119 réponses

Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
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 !

@+!
Commenter la réponse de bencoandco
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
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 !
Commenter la réponse de bencoandco
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Et la ça marche ????????
Commenter la réponse de bencoandco
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
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)
Commenter la réponse de bencoandco
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
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
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
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 ?
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
alors oui lorsque je met l'echo il m'affiche le résultat
par contre le trim(...) me crée une fatal error
Commenter la réponse de karlito911
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
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 ?
Commenter la réponse de bencoandco
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
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
Commenter la réponse de bencoandco
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
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();
}

Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
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.
Commenter la réponse de Lyle56
Messages postés
67
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
20 octobre 2010
0
Merci
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
Commenter la réponse de karlito911
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
heu c'est peut être strip_tags()

le 's' est à la fin :D
Commenter la réponse de Lyle56
Messages postés
165
Date d'inscription
samedi 8 mai 2010
Statut
Membre
Dernière intervention
3 janvier 2015
0
Merci
Effectivement strip_tags dsl
Commenter la réponse de bencoandco