Recupero particolari dati

Ho aggiunto questo nel file ricerca, altrimenti non poteva connettersi e cercare..

PHP:
include("config.php");
$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

il risultato e che inserendo qualsiasi cos acome risultato da tutti i record della tabella inq eusto modo:

Nome
Cognome
Città
Telefono
Nome
Cognome
Città
Telefono
Nome
Cognome
Città
Telefono...e così via per tutti i record....
 
Per mettere i risultati ciascuno su una riga basta che sostituisci:

while ($ricerca = mysql_fetch_array($result)){
echo $ricerca['Nome']."<br>".$ricerca['Cognome']."<br>".$ricerca['Citta']."<br>".$ricerca['Telefono']."<br>".$ricerca['Sesso']; }

con:

while ($ricerca = mysql_fetch_array($result)){
echo $ricerca['Nome']." ".$ricerca['Cognome']." ".$ricerca['Citta']." ".$ricerca['Telefono']." ".$ricerca['Sesso']."<br>"; }
 
non mi sono spiegato bene, non è la visualizzazione dei record che non mi piace, ma che qualsiasi cosa scrivo nella ricerca selezionando una qualsiasi voce dell'elenco mi da sempre tutti i record contenenti nella tabella.
 
Ma hai modificato il codice che ho scritto?
Perché io sta mattina l'ho provato e mi funzionava...
Lo puoi scrivere qui?
 
cerca.php


PHP:
<?php
$parola = $_GET['parola'];
$search = $_GET['search'];
if ($parola)
{
$parole = trim($parola); // elimina gli spazi circostanti
$parola = explode(" ", parole);// array di singole parole
}
//Definizione della query
$sql = "SELECT * FROM tabella";

if ($search=="1"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Nome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="2"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Cognome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="3"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Citta LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
include("config.php");
$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

$result =mysql_query($sql);
if (mysql_num_rows($result) == 0) {
die("Non è stato trovato il termine cercato. Effettua una nuova ricerca");
}
else {
while ($ricerca = mysql_fetch_array($result)){
echo $ricerca['Nome']."<br>".$ricerca['Cognome']."<br>".$ricerca['Citta']."<br>".$ricerca['Telefono']."<br>".$ricerca['Sesso']; }
} 
?>

index.php

PHP:
<div id="ricerca">

<form id="cerca" method="post" action="cerca.php">
Ricerca:
<input name="parola" type="text"/>
<select name="search">
<option selected="selected" value="1">Nome</option>
<option value="2">Cognome</option>
<option value="3">Citta</option>
</select>
<input type="submit" name="cerca" value="Cerca"/>
</form>

</div> 

<?

if(isset($_POST['cerca']))
{
// Dati Inviati dal modulo
$parola = (isset($_POST['parola'])) ? trim($_POST['parola']) : '';
$search = (isset($_POST['search'])) ? trim($_POST['search']) : '';
$pagricerca= "cerca.php?parola=".$parola."&search=".$search ;
header("Location:".$pagricerca);
}
?>
 
Ho sbagliato io... all'inizio mi sono dimenticata un $.. da me lo avevo corretto ma mi sono dimenticata di scrivertelo...

Non è:
$parola = explode(" ", parole);
Ma:
$parola = explode(" ", $parole);

Il collegamento con il database ti conviene metterlo all'inizio del php...
 
Forse ho capito dov'è l'errore...

Index.php devi metterlo così:

PHP:
<? 

if(isset($_POST['cerca'])) 
{ 
// Dati Inviati dal modulo 
$parola = (isset($_POST['parola'])) ? trim($_POST['parola']) : ''; 
$search = (isset($_POST['search'])) ? trim($_POST['search']) : ''; 
$pagricerca= "cerca.php?parola=".$parola."&search=".$search ; 
header("Location:".$pagricerca); 
} 
?> 
<div id="ricerca"> 

<form id="cerca" method="post" action=""> 
Ricerca: 
<input name="parola" type="text"/> 
<select name="search"> 
<option selected="selected" value="1">Nome</option> 
<option value="2">Cognome</option> 
<option value="3">Citta</option> 
</select> 
<input type="submit" name="cerca" value="Cerca"/> 
</form> 

</div>

Nell'action del form non devi mettere cerca.php perché se no cerca.php non prende i valori che gli passi con il get...
 
Warning: Cannot modify header information - headers already sent by (output started at C:\...\index.php:14) in C:\...\index.php on line 97.

Linea 97

header("Location:".$pagricerca);
 
Risolto in questo modo:

index.php

PHP:
<div id="ricerca">

<form id="cerca" method="post" action="cerca.php">
Ricerca:
<input name="parola" type="text"/>
<select name="search">
<option selected="selected" value="1">Nome</option>
<option value="2">Cognome</option>
<option value="3">Citta</option>
</select>
<input type="submit" name="cerca" value="Cerca"/>
</form>

</div>

cerca.php

PHP:
<?php
include("config.php");
$parola = $_POST['parola'];
$search = $_POST['search'];
if ($parola)
{
$parole = trim($parola); // elimina gli spazi circostanti
$parola = explode(" ", $parole);// array di singole parole
}
//Definizione della query
$sql = "SELECT * FROM tabella";

if ($search=="1"){
if (isset($parola))
{
$sql .=" WHERE ";

for($i = 0; $i < count($parola); $i++)
{
$sql .= "Nome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="2"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Cognome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="3"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Citta LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}

$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

$result =mysql_query($sql);
if (mysql_num_rows($result) == 0) {
die("Non è stato trovato il termine cercato. Effettua una nuova ricerca");
}
else {
while ($ricerca = mysql_fetch_array($result)){
echo $ricerca['Nome'].$ricerca['Cognome'].$ricerca['Citta'].$ricerca['Telefono'].$ricerca['Sesso']."<br>";
echo "<br> >>>".$parola[0]."<br>"; }
} 
?>

in poke parole ho tolto questo dalla index:

PHP:
<?
if(isset($_POST['cerca']))
{
// Dati Inviati dal modulo
$parola = (isset($_POST['parola'])) ? trim($_POST['parola']) : '';
$search = (isset($_POST['search'])) ? trim($_POST['search']) : '';
$pagricerca= "cerca.php?parola=".$parola."&search=".$search ;
header("Location:".$pagricerca);
}
?>

E messo post invece che GEt nel cerca.php, poi per un controllo ho messo echo "<br> >>>".$parola[0]."<br>"; tanto x capire se sta parola che inserivo me la dava...tutto mi funziona adesso :D


Potresti spiegarmi meglio la funzione LIKE con gli "%"? mi sn accorto che hai usato la variavile parole per contere la parola inserita nella ricerca poi la stessa variavile trasformata in un array per contenere più parole...non è meglio dare nomi differenti alle variabili? in java una cosa del genere me la sogno XD

grazie di tutto, sei stato molto gentile ;)
 
Ultima modifica:
Per quanto riguarda i nomi delle variabili non ha nessuna importanza... Potevi anche mettere:

PHP:
$parola = trim($parola);
$parola = explode(" ", $parola);
che non cambiava niente...

Per il like con la %...Esempio:
...where Nome like '%pallino%'
Ti trova oltre al nome pallino, anche pincopallino, pallinone...
Cioè quelli che contengono quella parola...
Se levi la % ti trova solo pallino e basta!

Dipende quello che vuoi trovare tu... se ti serve solo il nome esatto allora puoi levare tranquillamente le %...
 
ok grazie, capito...

cmq x le variabili mi sn trovato un pò strammo xkè questo modo di fare mi è nuovo tt qui.
 

Discussioni simili