Een zoekformulier maken in PHP om een ​​database te doorzoeken?

Ik probeer momenteel een project te voltooien waarbij de specificaties zijn om een ​​zoekformulier te gebruiken om door een verpakkingsdatabase te zoeken. De database heeft veel variabelen, variërend van maten, namen, soorten en vlees. Ik moet een zoekformulier maken waarin gebruikers kunnen zoeken met behulp van een aantal verschillende zoekopdrachten (zoals zoeken naar een deksellade van 50 cm lang).

Ik heb de hele dag geprobeerd om PHP-code te maken die naar informatie kan zoeken in een testdatabase die ik heb gemaakt. Ik heb talloze fouten gehad, variërend van mysql_fetch_array-fouten, booleaanse fouten en nu is mijn laatste fout dat mijn tabel niet lijkt te bestaan. Hoewel ik er gegevens in kan invoeren (html- en php-pagina’s waar ik gegevens kan invoeren), weet ik niet wat dit veroorzaakt en ben ik nu een paar keer opnieuw begonnen.

Kan iemand me een idee of tips geven over wat ik momenteel moet doen? Hier zijn slechts mijn kleine tests op het moment voordat ik naar de eigenlijke SQL-database van de site ga.

Creëren van database:

 <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>

HTML-zoekformulierpagina:

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

De PHP-code die ik gebruik om informatie uit de database te verzamelen
(Ik heb dit een paar keer herschreven, deze code geeft ook de “table.liam bestaat niet”) weer

  <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>

Als iemand enig inzicht heeft of me hiermee kan helpen, zou ik heel dankbaar zijn! Bij voorbaat dank.


Antwoord 1, autoriteit 100%

probeer dit eens, laat me weten wat er gebeurt.

Formulier:

<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'];  
} 

Bewerken: heb het nog wat opgeschoond.

Final Cut (mijn testbestand):

<?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>

Antwoord 2, autoriteit 20%

Je krijgt de foutmelding ‘tabel liam bestaat niet’ omdat de naam van de tabel liam is, wat niet hetzelfde is als liam. MySQL-tabelnamen zijn hoofdlettergevoelig.


Antwoord 3

Weet u zeker dat de opgegeven database en tabel bestaat? Heb je geprobeerd je database te bekijken met een databaseclient? Bijvoorbeeld opdrachtregel MySQL-client gebundeld met MySQL-server. Of als u een nieuweling in ontwikkelaar bent, zijn er tientallen GUI- en webinterface-clients (HeidiSQL, MySQL Workbench, phpMyAdmin en nog veel meer). Controleer dus eerst of je script voor het maken van een tabel succesvol was en had gemaakt wat het moest doen.

BTW, waarom heb je een script voor het maken van de databasestructuur? Het is meestal een eenmalige operatie, dus het is niet nodig om het script te schrijven om dit te doen. Het is alleen nuttig als de databasestructuur herhaaldelijk moet worden gemaakt en gemanipuleerd.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

9 + 8 =

Other episodes