Motore di ricerca interno

Ciao!! Sto cercando il modo per fare un motore di ricerca php in record di un database PhpMyAdmin.

Non dovrebbe essere difficile, ma non mi viene. Come al solitoo!

Ho letto topic già presenti sul forum e ho preso spunto per la sintassi

SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'

eppure sbaglio qualcos'altro!

form con il campo ricerca con action="" che quindi agisce nella sua stessa pagina di origine

<input type="text" name="nome_commessa" id="nome_commessa" value="" />
<input type="submit" name="cerca" id="cerca" value="Cerca" />

funzione di ricerca

$nome_commessa=mysql_real_escape_string(trim(htmlspecialchars($_POST['nome_commessa'])));
$cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'");

if($cerca==1)
{
while ($riga = mysql_fetch_assoc($cerca)) {
      $nome_commessa=$riga["NomeCommessa"]; 
      echo "$nome_commessa" ;  }
}

else {
$messaggio = urlencode("Nessun risultato"); //messaggio stampato nel documento
header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); //posizione del messaggio stampato
die(mysql_error());
}

mysql_close();
}

ogni volta mi esce la stringa "Nessun risultato" anche se metto un nome che è sicuramente nel campo NomeCommessa della tabella Backup.

Uffiiii  :'(

*ps. avevo già postato questo argomento ma mozilla si è chiuso inaspettatamente e non trovando + sul forum il topic ho pensato che non fosse stato inviato correttamente. Indi ri-posto  :) *

inviato 8 anni fa
BordeauxPrugna
X 0 X

Ciao,

prova ad aggiungere mysql_num_rows così         

......
$cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'");
$num_righe = mysql_num_rows($cerca);
if($num_righe !='0')
......
risposto 8 anni fa
Gioge
X 0 X

Scusa prova a strutturare la query nel modo seguente:

$cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'");

$number_cerca= mysql_num_rows($cerca);

$i = 0;

   if ($number_cerca< 1) { 
                  print "La ricerca non ha prodotto nessun risultato<br/><br/>";
   }
   else             echo ("<br/>");
   {

      while ($row_modulo = mysql_fetch_assoc($result_cerca)) { 
               $nome_commessa= mysql_result($result_cerca,$i,"NomeCommessa");
            
               echo "$nome_commessa" ; 
               }

      $i++;
   }
}
risposto 8 anni fa
sonny
modificato 8 anni fa
X 0 X

ragazzi...siete stati gentilissimi...ma proprio non ci cavo i piedi... :'( :'(

A seguito di ogni ricerca mi restituisce la pagina bianca, nemmeno l'errore!!

Posto qui sotto l'intera pagina, anche se so che nessuno leggerà!  :'(

<?php 
require"menu.php";
require"menu_commesse.php"; 
?>

<div align="center"><br /><br />
<?php
 
 if($_POST) {
   inserisci_record();
}
else {
   mostra_form();
}

function inserisci_record()
{

$nome_commessa=mysql_real_escape_string(trim(htmlspecialchars($_POST['nome_commessa'])));
/* $id_cliente = $_POST['id_cliente'];
$tipo_commessa = $_POST['tipo_commessa'];
$tipo_backup = $_POST['tipo_backup'];
$posizione_commessa = $_POST['numero'];
$keywords = mysql_real_escape_string(trim(htmlspecialchars($_POST['keywords']))); */


   if(!$nome_commessa)
   {
      $messaggio = urlencode("Non hai inserito il nome della commessa!");
      header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
      die();
      
      //die("<br /><div align=\"center\">Non hai inserito il nome..</div>");
      mostra_form();
      }
   
$cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%". $nome_commessa ."%' ");

$number_cerca= mysql_num_rows($cerca);
$i = 0;
if ($number_cerca< 1) { 
print "La ricerca non ha prodotto nessun risultato<br/><br/>";
}
else 
/* echo ("<br/>"); */
{
while ($row_modulo = mysql_fetch_assoc($result_cerca)) { 
$nome_commessa= mysql_result($result_cerca,$i,"NomeCommessa");
echo "$nome_commessa" ; 
               }
$i++;
}


/* header( "Location: cercaredirect_commessa.php" ); */

//echo "<i>Progetto n° $posizione_commessa <strong>$nome_commessa</strong> inserito con successo</i>";

//require "tabella_backup.php";


mysql_close();
}

function mostra_form()
{
/* require "cercaform_commessa.php";    */
?>

<form id="form1" name="form1" method="post" action="">
<table width="370" border="0" cellpadding="5">
  <caption>
  <strong>Cerca commessa</strong>
  </caption>
  <tr>
    <td width="137">Nome commessa</td>
    <td width="197">
      <input type="text" name="nome_commessa" id="nome_commessa" value="" />    </td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="submit" name="cerca" id="cerca" value="Cerca" />
    </label></td>
    </tr> 
</table>
</form>

<table width="370" border="0" cellpadding="0">
  <tr>
    <td> <div align="center"><br>
      <?php
   // mostro un eventuale messaggio
   if(isset($_GET['msg']))
      echo '<i>'.htmlentities($_GET['msg']).'</i><br /><br />'; 
}

?>
     </div></td>
  </tr>
</table>

</div>
</body>
</html>
risposto 8 anni fa
BordeauxPrugna
X 0 X

Ci ho ripensato. Non voglio nè impazzire nè farvi impazzire!

Ho trovato uno script migliore e più adattabile che FUNZIONA! alla perfezione!

Metto il link per chi potesse averne bisogno: tutorial motore di ricerca

...forse però passerò per qualche eventuale problemuccio..  :buck:

grazie dell'appoggio!!

ps.Ma come posso cancellare/modificare miei post inutili (tipo il precedente) in questo forum??

La modifica è attiva solo per l'ultimo mio post se è stato appena inviato... ???

risposto 8 anni fa
BordeauxPrugna
modificato 8 anni fa
X 0 X

Ciao a tutti!

Sto continuando a fare un motore di ricerca, almeno la struttura funziona.

ho una form con un campo di ricerca input e con un menu a tendina, come fare capire a php che i campi sono opzionali?

Ad esempio se io scrivo una parola nell'input, php dovrebbe intepretare il valore del menu a tendina (che è rimasto nullo) come comprensivo di tutti i valori che esso può assumere.

  Servirebbe un valore con lo stesso significato dell'asterisco da associare alla variabile! Esiste?

Ho provato a creare questo if ma non so che valore metterci:

if($_POST['id_cliente'] = 'null') {  // se il valore è nullo

  $id_cliente =  ??? ; //fai corrispondere la variabile a...???

  }

La select è questa..

SELECT * FROM tabella

              WHERE

              NomeCommessa LIKE '%$nome_commessa%'

              AND IdCliente= $id_cliente

              ORDER BY NomeCommessa"

risposto 8 anni fa
BordeauxPrugna
X 0 X

per gestire campi opzionali in una ricerca hai due alternative:

1) comporre dinamicamente la stringa che costituisce lo statement SQL, attaccando solo se necessario il pezzo "AND IdCliente= $id_cliente"

2) utilizzare una sitassi SQL per questi campi opzionali del seguente tipo:

AND ($id_cliente = '*' OR IdCliente= $id_cliente)

in questo modo se $id_cliente è uguale a '*' allora il campo della tabella IdCliente non verrà controllato

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni :)

Grazie mille!

Ho optato per la prima soluzione....ma devo dire che anche la seconda risulta un buon consiglio!

Grazie alle vostre lezioni e ai vostri aiuti sul forum sono riuscita a creare il mio primo motore di ricerca...e per me non è poco!!!  :D

 ;D ;D

risposto 8 anni fa
BordeauxPrugna
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda