Criar um formulário de pesquisa em PHP para procurar uma base de dados?

Estou a tentar concluir um projecto onde as especificações devem usar um formulário de pesquisa para procurar numa base de dados de embalagens. A base de dados tem muitas variáveis que variam de tamanhos, nomes, tipos e carnes. Eu preciso criar um formulário de pesquisa onde os usuários podem pesquisar usando um número de pesquisas diferentes (como a busca por uma bandeja de tampa que é de 50 cm de comprimento).

Passei o dia todo a tentar criar um código PHP que possa procurar informações numa base de dados de testes que criei. I tem tido inúmeras quantidades de erros que vão desde erros mysql_fetch_array, erros booleanos e agora o meu último erro é que a minha tabela parece não existir. Embora eu possa introduzir dados nele (html e páginas php onde eu posso introduzir dados), eu não sei o que está causando isso e eu comecei novamente algumas vezes agora.

Alguém pode dar-me uma ideia ou dicas do que vou ter de fazer neste momento? Aqui está apenas os meus pequenos testes no momento antes de eu mover para os sites reais SQL banco.

criação de uma base de Dados:

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

página do formulário de procura em HTML:

<body>

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

</body>

o código PHP que estou a usar para tentar recolher informações da base de Dados (Eu reescrevi isso algumas vezes, este código também exibe a " tabela.liam não existe.

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

se alguém tem alguma visão ou pode ajudar-me com isso, eu ficaria muito grato! Obrigado antecipadamente.

Author: pjmorse, 2012-10-05

3 answers

Experimenta isto e diz-me o que acontece.

Forma:

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

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

Editar: limpei um pouco mais.

Corte Final (o meu ficheiro de teste):

<?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
Author: rackemup420, 2012-10-05 14:24:26

Você está recebendo erros 'tabela liam não existe' porque o nome da tabela é {[[0]} que não é o mesmo que liam. Os nomes das tabelas MySQL são sensíveis à capitalização.

 3
Author: pjmorse, 2012-10-05 13:58:59

Tens a certeza que existe a base de dados e a tabela indicada? Tentou ver a sua base de dados usando algum cliente da base de dados? Por exemplo, cliente de linha de comandos MySQL junto com o servidor de MySQL. Ou se você é um novato desenvolvedor, existem dezenas de clientes de interface GUI e web (HeidiSQL, MySQL Workbench, phpMyAdmin e muitos mais). Então Primeiro verifique, se seu script de criação de mesa foi bem sucedido e tinha criado o que tem que.

Por que você tem um script para criar a base de dados estrutura? É usualy uma operação nonrecurring, assim que escrever o script para fazer isto é unneded. É útil apenas em caso de necessidade de criar e manipular repetidamente a estrutura do banco de dados no momento.
 0
Author: Dawid Ferenczy, 2012-10-05 17:03:17