web-dev-qa-db-fra.com

Créer un formulaire de recherche dans PHP rechercher une base de données?

J'essaie actuellement de mener à bien un projet dont les spécifications doivent utiliser un formulaire de recherche pour effectuer une recherche dans une base de données de packaging. La base de données contient de nombreuses variables allant de tailles, noms, types et viandes. Je dois créer un formulaire de recherche dans lequel les utilisateurs peuvent effectuer une recherche à l'aide de plusieurs recherches différentes (par exemple, la recherche d'un bac à couvercle de 50 cm de long). 

J'ai passé toute la journée à essayer de créer du code PHP pouvant rechercher des informations dans une base de données de test que j'ai créée. J'ai eu de nombreuses erreurs allant de mysql_fetch_array, des erreurs booléennes et maintenant, ma dernière erreur est que ma table ne semble pas exister. Bien que je puisse entrer des données dedans (pages html et php où je peux entrer des données), je ne sais pas quelle en est la cause et j’ai recommencé à quelques reprises maintenant. 

Quelqu'un peut-il me donner une idée ou des conseils sur ce que je vais devoir faire actuellement? Voici juste mes petits tests pour le moment, avant de passer à la base de données SQL des sites. 

Création de base de données:  

 <body>
  <?php
     $con = mysql_connect("localhost", "root", "");
      if (!$con)
     {
      die('Could not connect: ' . mysql_error());
     }
      if (mysql_query("CREATE DATABASE db_test", $con))
     {
  echo "Database created";
     }
      else
    {
  echo "Error creating database: " . mysql_error();
    }


  mysql_select_db("db_test", $con);
  $sql = "CREATE TABLE Liam
   ( 
  Code varchar (30),
  Description varchar (30),
  Category varchar (30),
  CutSize varchar (30),
   )";

 mysql_query($sql, $con);
     mysql_close($con);
 ?> 
   </body>

Page de formulaire de recherche HTML:  

<body>

      <form action="form.php" method="post">
        Search: <input type="text" name="term" /><br />
      <input type="submit" name="submit" value="Submit" />
      </form>

</body>

Le code PHP que j'utilise pour tenter de collecter des informations dans la base de données (Je l'ai réécrit plusieurs fois, ce code affiche également le message "table.liam n'existe pas")

  <body>
   <?php
 $con = mysql_connect ("localhost", "root", "");
 mysql_select_db ("db_test", $con);

  if (!$con)
    { 
    die ("Could not connect: " . mysql_error());
    } 
    $sql = mysql_query("SELECT * FROM Liam WHERE Description LIKE '%term%'") or die
        (mysql_error());

       while ($row = mysql_fetch_array($sql)){
    echo 'Primary key: ' .$row['PRIMARYKEY'];
    echo '<br /> Code: ' .$row['Code'];
    echo '<br /> Description: '.$row['Description'];
    echo '<br /> Category: '.$row['Category'];
    echo '<br /> Cut Size: '.$row['CutSize']; 
  }

  mysql_close($con)
   ?>
     </body>

Si quelqu'un a des idées ou peut m'aider avec cela, je serais très reconnaissant! Merci d'avance.

9
LiamHorizon

essayez ceci laissez-moi savoir ce qui se passe.

Forme:

<form action="form.php" method="post"> 
Search: <input type="text" name="term" /><br /> 
<input type="submit" value="Submit" /> 
</form> 

Form.php:

$term = mysql_real_escape_string($_REQUEST['term']);    

$sql = "SELECT * FROM liam WHERE Description LIKE '%".$term."%'";
$r_query = mysql_query($sql);

while ($row = mysql_fetch_array($r_query)){ 
echo 'Primary key: ' .$row['PRIMARYKEY']; 
echo '<br /> Code: ' .$row['Code']; 
echo '<br /> Description: '.$row['Description']; 
echo '<br /> Category: '.$row['Category']; 
echo '<br /> Cut Size: '.$row['CutSize'];  
} 

Edit: nettoyé un peu plus.

Final Cut (mon fichier de test):

<?php
$db_hostname = 'localhost';
$db_username = 'demo';
$db_password = 'demo';
$db_database = 'demo';

// Database Connection String
$con = mysql_connect($db_hostname,$db_username,$db_password);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db($db_database, $con);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
<form action="" method="post">  
Search: <input type="text" name="term" /><br />  
<input type="submit" value="Submit" />  
</form>  
<?php
if (!empty($_REQUEST['term'])) {

$term = mysql_real_escape_string($_REQUEST['term']);     

$sql = "SELECT * FROM liam WHERE Description LIKE '%".$term."%'"; 
$r_query = mysql_query($sql); 

while ($row = mysql_fetch_array($r_query)){  
echo 'Primary key: ' .$row['PRIMARYKEY'];  
echo '<br /> Code: ' .$row['Code'];  
echo '<br /> Description: '.$row['Description'];  
echo '<br /> Category: '.$row['Category'];  
echo '<br /> Cut Size: '.$row['CutSize'];   
}  

}
?>
    </body>
</html>
9
rackemup420

Vous obtenez des erreurs 'la table n'existe pas' car le nom de la table est Liam qui n'est pas identique à liam Les noms de table MySQL sont sensibles à la casse.

3
pjmorse

Êtes-vous sûr que la base de données et la table spécifiées existent? Avez-vous essayé d'examiner votre base de données en utilisant un client de base de données? Par exemple, le client MySQL en ligne de commande fourni avec le serveur MySQL. Ou si vous êtes débutant en développement, il existe des dizaines de clients avec une interface graphique et Web (HeidiSQL, MySQL Workbench, phpMyAdmin et bien d’autres). Alors, vérifiez d’abord si votre script de création de table a réussi et a créé ce qu’il doit créer.

BTW pourquoi avez-vous un script pour créer la structure de base de données? Il s’agit habituellement d’une opération non récurrente. Il est donc inutile d’écrire le script. Cela n'est utile qu'en cas de nécessité de créer et de manipuler de manière répétée la structure de la base de données à la volée.

0
Dawid Ferenczy