Comment fait-on pour afficher quelque donnees dans une table

[Résolu/Fermé]
Signaler
-
 Imelda24 -
Bonjour,

j'aimerais savoir comment faire un moteur de recherche, c'est la seule chose qui me reste et je dois remettre ce projet la semaine prochaine, kelke chose de simple et facile me sera d'une grande utilite. j'affiche tous les donnees de ma table mais j'aimerais savoir comment faire pour rechercher ce qu'on veut avec des mots cles . je ne vois pas comment faire.....

2 réponses

Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021
3 760
Bonjour,

Il te faut un formulaire

<form action="" method="post">
<input type='text' name='toto'>
<input type='submit' value='chercher'>
</form>


Ensuite, tu récupères la valeur dans ton code via :
$toto = isset($_POST['toto']) ? $_POST['toto'] : NULL;


Puis, dans ta requête (celle qui te sert à afficher tes données) ajouter une clause WHERE.

SELECT *
FROM tatable
WHERE  unchamp = '$toto'



NB: Tu peux faire une recherche en utilisant la recherche EXACTE (via : = )
ou approximative en utilisant le mot clé LIKE

bonjour,

j'ai ce code:


<?php
    include_once("connect.php");
    

    $sql = "SELECT * FROM Ordi";
    
    ?>
   <?php
    if (isset($_POST['re']) AND !empty($_POST['re'])) {

     $re= htmlspecialchars($_POST['re']);
     
     $sql= "SELECT * FROM Ordi WHERE Office LIKE " %'.$re.'%" ";
       } ?>

     <?php if ($sql->rowcount()>0) {?>

     <ul>

     <?php while ($m =$sql->fetch()) { ?>
         
         <li> <?=$m['Office']?></li>

        <?php }?>
      </ul>
    <?php }else{ ?>

    Aucun résultat trouver pour <?=$re?>....

    <?php }
      $query = sqlsrv_query($conn, $sql);

    ?>


et pour le formulaire
<form method="POST" action=""> 
                  
                  <input type="search" name="re" placeholder="Recherche ...." />
                  <input type="submit" value="Rechercher"/>                   
 

 </form>


d'abord jáffiche tous tes données de la table et apres pourr faire le trie de ce que je veux mais malheureusement je n'ai qu'une page blanche.
Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021
3 760
Tu as des variables $sql ..... mais tu ne l'executes pas .....
enfin si... mais que à la ligne 31 ... donc pas au bon endroit !
>
Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021

quand je retire cette partie dans le code

<?php if ($sql->rowcount()>0) {?>

     <ul>

     <?php while ($m =$sql->fetch()) { ?>
         
         <li> <?=$m['Office']?></li>

        <?php }?>
      </ul>
    <?php }else{ ?>

    Aucun résultat trouver pour <?=$re?>....

    <?php }?>


ca marche bien, donc mon probleme est dans cette partie mais je ne vois pas ce que c. Vous en pensez quoi
Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021
3 760 > Imelda24
Le PB vient peut être du >rowcount.
Il est fortement déconseillé d'utilisé cette méthode.

Voici ce que dit la doc :

PDOStatement::rowCount() retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant.

Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.


Voir ici : https://www.php.net/manual/fr/pdostatement.rowcount.php


Et puis... sans oublié que tu as la parti 'exécution' de ta requête ...... APRES ce bloc de code que tu as retiré ... alors qu'il devrait être AVANT ! (voir ma précédente réponse !!! )
>
Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021

d'accord merci,


une derniere question j'aimerais tester les autres champs du table

 $ sql= " SELECT* FROM Ordi WHERE Office or colonne 2 or colonne 3 LIKE " %'.$re.'%"  or   LIKE " %'.$re.'%" or LIKE" %'.$re.'%";


ou

 $ sql= " SELECT* FROM Ordi WHERE Office  LIKE " %'.$re.'%"  or   LIKE " %'.$re.'%" or column 2 LIKE " %'.$re.'%" or column3  LIKE " %'.$re.'%";


ou est-ce qu'il y'a pas moyen de concatener.
qu'en pensez vous?
> Imelda24
Le 2 eme ca fonctionne comme je le veux.

merci pour votre aide Jordane.

Cordialement Imelda.