Ricerca dati

Ciao

Ciao,

Grazie per le spiegazioni, appena digerito zuppa di cozze e vongole accompagnato da un par di scampetti e da qualche goccio di vino, farò le prove e ti dirò. Quindi potrebbe essere anche una digitura fatta male da qualche parte. Bene bene, la troverò prima o poi lo spero.
 
Ciao

Allora io ho provato a mettere il var ecc, ma nun c'ho capito niente ti posto i codici, vorrei che tu me li potessi controllare e magari eventualmente correggerli, grazie. ho due tipi di ricerca. uno basta che digiti le iniziali del titolo film oppure dell'attore principale e ti compare subito il film o l'attore se è presente nell'archivio. invece, il secondo sono due campi text, dove inserire o il titolo del film (sempre le iniziali o quello che ti ricordi a mente), oppure l'attore principale (sempre stesso metodo del film, con l'operatore LIKE). Ti posto i codici così ti rendi conto:

Il file si chiama "cerca.php" è formato sia php che html

HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>

function attoreprinc(x){
 $.post('cerca 2.php' , {attoreprinc: x} , function(y) { $('#attoreprinc').html(y);
 })
}


function titolofilm(a){
 $.post('cerca 2.php' , {titolofilm: a} , function(b) { $('#titolofilm').html(b);
 })
}
</script>

<?PHP
require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");

?>
<br> <br>
Inserire attore principale: <input type='text' onkeyup='attoreprinc(this.value)' />
<div id='attoreprinc'></div>
<br> <br/>

Inserire il titolo del film: <input type='text' onkeyup='titolofilm(this.value)' />

<div id='titolofilm'></div>

    <body>
        <?php
        // put your code here
        ?>
    </body>
</html>


Il secondo file che viene menzoniato nel file html, si chiama: "cerca 2.php"

PHP:
<?PHP
require_once("connetti.php");

header('Content-type text/html; charset=iso-8859-1');

var_dump($_POST['titolofilm']); 
$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']);                      //controlla i caratteri speciali

$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);

if(!EMPTY($attoreprinc)){

$result=mysql_query("SELECT * FROM  film WHERE attoreprinc LIKE '%$attoreprinc%'");
while($read=mysql_fetch_array($result)){

 echo $read['attoreprinc']." ". $read["<br> <br> <br/>"];
}
}
else if(!EMPTY($titolofilm)){

$result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' ");
while($read=mysql_fetch_array($result)){
  echo $read['titolofilm']." ";
}
}


?>

Questo è lo script che ti permette di digitare le parole e di avere subito la visualizzazione della ricerca.

Ora invece, l'altro metodo classico, con il button "Avvio Ricerca"

Il file in questione, si chiama: "inscerca.php + html"

HTML:
<?php
require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");
?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>

         <br><br> <br> <br><br> <br><br><br> <br><br><br> <br>


                
   <span style='font-size:20px'> <font color='blue' face='Comic Sans'> <center>

<form action='search.php' method='POST'>
Inrerire l'attore principale: <input type='text' name='attoreprinc'> <br> <br/>
Inserire il titolo del film: <input type='text' name='titolofilm'> <br><br/>
<input type='submit' value='Avvio Ricerca'>


</form>    <body>
        <?php
        // put your code here
        ?>
    </body>
</html>

E questo è il file: "search.php" che effettua la ricerca dti premendo sul button:


PHP:
<?php
require_once("connetti.php");

var_dump($_POST['titolofilm']); 

$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']);                      //controlla i caratteri speciali

$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);

if(!EMPTY($attoreprinc)){
$result=mysql_query("SELECT * FROM  film WHERE attoreprinc LIKE '%$attoreprinc%'");

while($read=mysql_fetch_array($result)){

$num_rec = mysql_num_rows($result);
 if ($num_rec == 0) {
   echo "nessun film trovato in archivio";
     } else {
    //echo $num_rec . " record trovati in archivio<br />\n";
 echo $read['attoreprinc']." ". $read["<br> <br> <br/>"];

     
}
}
echo "<br> <br>";
echo $num_rec . " film presenti dello stesso attore " ,$attoreprinc;

}


else if(!EMPTY($titolofilm)){

$result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' ");
while($read=mysql_fetch_array($result)){
  echo $read['attoreprinc']." -"." - ".$read['titolofilm']." - ".$read['raccolta']." - ".$read['tipodvd']." - ".$read['data'];
}


}

?>

Una cortesia, siccome una parte mi funziona, ossia mi dice quantii film sono presenti nell'archivio, però non mi dice se sono trovati film o meno. Ossia quando vai a digitare un titolo del film, e non lo trova, mi da semplicemente una pagina in bianco. Io, vorrei che mi dicesse che non è stato trovato nessun film con quel titolo. Se mi puoi aggiungere questa riga, che non saprei come farla. Grazie. Sepro in una tua mano. Comunque, in entrambi mi da sempre l'errore notice ecc. ecc. Aspetto tua risposta, grazie.
 
ciao
ma il var_dump cosa ti ha restituito?
cosa è in questa riga echo $read['attoreprinc']." ". ??$read["<br> <br> <br/>"]??;

per sapere il numero dei film prima dell'ultimo while metti un altro
$num_rec = mysql_num_rows($result); ti da il numero dei film trovati con la seconda query
anche se non dovrebbe servirti in quanto come detto il titolo dovrebbe essere unico "o è uno o zero"

a parte quello un consiglio, io metterei un controllo prima di cercare

PHP:
<?php
require_once("connetti.php");
var_dump($_POST['attoreprinc']); //questi due var_dump per vedere cosa danno, poi li togli
var_dump($_POST['titolofilm']); //posta cosa danno
//poi metterei un trim per eliminare spazi iniziali e finali
//se uno invia solo uno spazio il post non risulta vuoto, ma il trim lo toglie
$attoreprinc = mysql_real_escape_string(trim($_POST['attoreprinc']));
$titolofilm = mysql_real_escape_string(trim($_POST['titolofilm']));
if($attoreprinc =="" && $titolofilm==""){//controllo
	//entrambe le variabili sono vuote i campi del form non riempiti o riempiti con solo spazi
	echo "ricerca non valida, almeno un campo deve essere riempito";//e il riorno al form di ricerca
	//oppure fai la ricerca in questo caso di TUTTI i film
}else{
	//almeno uno dei due campi è stato riempito
	//quindi le query di ricerca in funzione di quale vuoto o se pieni entrambi
}
?>
 
Ciao

La seguente stringa, era solo una speraza che poi si è conclusa invana. Ossia siccome mi dava più di due titoli sulla stessa riga appiccicati l'uno con l'altro, speravo che con un doppio <br> risolvessi il problema. invece nada. Questo è uno degli errori che mi fa:


string(2) "ha" string(0) ""
Notice: Undefined index:


in C:\xampp\htdocs\Archivio\search.php on line 21
Harrison ford

1 film presenti dello stesso attore ha

E questo ricercando per titolo del film: string(0) "" string(3) "men" Bud Spencere & Terence Hill - - Altrimenti ci arrabbiamo - In: - originale - 20/12/2011

E' quello che mi restituisce var ecc. ecc.
 
ciao
sembra che non ti prenda uno dei due campi, cioè o prende uno o prende l'altro
domanda peregrina:
il fenomeno avviene quando usi il form con jquery o il form col classico submit?
 
Ciao

Ciao,

Scusa per la risposta in ritardo, ma ho visto solo ora l'emai. Con il classico submit. Come faccio a capire se è jquery ????? E che differenza c'è tra i due ???? Considera che lavoro in ambiete windows 7 Ultimate a 64 bit, netbeans ver. 6.9, xampp come macchina virtuale pe ril localhost.
 
ciao
da quello che ho capito cerca.php è quello con jquery, inscerca.php quello tradizionale col submit ed entrambi puntano al file php che cerca search.php
quindi tu fai la ricerca con inscerca.php, giusto? o con cerca.php?
 
Ciao

Allora,

Attualmente io faccio la ricerca con inscerca.php esatto e che punta al file search.php Nel file inscerca, c'è una parte di php che richiama la connessiome, la paginaprotetta, e la presentazione, e poi c'è la parte html che è formato oltre dai text e dalle label anche dal tasto submit L'altro metodo di ricerca, me l'hanno passato, l'ho provato e mi piaceva. Solo che secondo me in questo caso è meglio adoperare il vecchio metodo con il tatsino. Ci devo pensare ancora ehehehe. Ma comunque in entrambi i casi, il notice me lo fa su tutte e due. Direi di puntare per capire dove sta l'errore su quello classico con il tastino "avvio ricerca"
 
Ciao

Ok, grazie per la tua disponibilità. Senti volevo anche risolvere un altro problemino. Vediamo se te mi sai aiutare. Siccome il sito deve essere visibile solo a me, in quanto ci sono dati personali. Io lo avrei strutturato in questa maniera. Quando digito www.pincopallino.it, mi compaiono due tastini. Uno "entra" e uno "aggiungi nuovo utenete". Il problema è sul secondo tastino, ossia "Aggiungi nuovo utente". Vorrei che ci fosse un cotrollo sul database utente, che mi dice, se il database ha un recod, il tastino "aggiungi nuovo utente", sparisce, altrimenti, se il database è vuoto, il tastino compare. Ovviamente, quando vado a digitare www.pincopallino.it, se sono registrato, il tastino "aggiungi nuovo utente" non deve essere visibile. E' possibile fare ciò ???? Grazie ancora.
 
ciao
si si può fare, però come ho detto ad altri:
per favore: un problema un post

apri un altra discussione

p.s.
oggi nel pomeriggio spero di poter guardare
 
ciao
intanto avevi messo il form fuori da tag <body></body>.
nel file search.php ho commentato tutte le parti relative al db e alle varie inclusioni in quanto io non ho il tuo db ne i file da includere.
ho aggiunto delle parti (che poi toglerai) per vedere il risultato.
così come è funzia (parzialmente)
PHP:
<?php
//require_once("connetti.php");
//require_once("paginaprotetta.php");
//require_once("presenta.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>prova</title>
</head>
<body>
<?php
// put your code here
?>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<form action='search.php' method='POST'>
Inserire l'attore principale: <input type='text' name='attoreprinc'><br /><br/>
Inserire il titolo del film: <input type='text' name='titolofilm'><br /><br/>
<input type='submit' value='Avvio Ricerca'>
</form>      
</body>
</html>

dico parzialmente perche come ti avevo detto in un post precedente hai fatto un errore di logica:
se inserisci sia l'attore e il titolo (o nessuno dei due) vedi quale è tale errore

PHP:
<?php 
//require_once("connetti.php"); 
var_dump($_POST['attoreprinc']);
var_dump($_POST['titolofilm']);
echo "<br> <br>"; //da togliere
//$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']); //controlla i caratteri speciali 
//$titolofilm = mysql_real_escape_string ($_POST['titolofilm']); 
$attoreprinc=$_POST['attoreprinc'];
$titolofilm =$_POST['titolofilm'];
if(!EMPTY($attoreprinc)){
/*
$result=mysql_query("SELECT * FROM  film WHERE attoreprinc LIKE '%$attoreprinc%'"); 
while($read=mysql_fetch_array($result)){ 
	$num_rec = mysql_num_rows($result); 
		if ($num_rec == 0) { 
			echo "nessun film trovato in archivio"; 
		} else { 
			//echo $num_rec . " record trovati in archivio<br />\n"; 
			echo $read['attoreprinc']."<br> <br> <br/>"; 
		} 
} 
*/
echo "<br> <br>"; 
echo $num_rec . " film presenti dello stesso attore " ,$attoreprinc; 
} elseif(!EMPTY($titolofilm)){ 
	/*
	$result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' "); 
	while($read=mysql_fetch_array($result)){ 
		echo $read['attoreprinc']." -"." - ".$read['titolofilm']." - ".$read['raccolta']." - ".$read['tipodvd']." - ".$read['data']; 
	}
	*/
	echo "cercato film $titolofilm<br />";//da togliere
} 
?>
 
Ciao

ciao,

Grazie per aver dato un'occhiata. Ora verifico subito e ti dirò. E per quanto riguarda l'altro problema di cui ti ho mandato l'email del buotton "aggiungi", pensi che si possa fare qualcosa ??? Allora ho provato il codcie, e funziona parziale. ossia se digito una parte del titolo "men", lui mi tira fuori il titolo "altrimenti ci arrabbiamo". E fin qui tutto ok. Però, se metto come iniziali "l'ins" (che sarebbe l'insurrezione), mid a questo errore qua:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\search.php on line 29

Probabilmente, se non erro nei campi attoreprinc, e titoofilm, mancano il controllo caratteri speciali. Ho rimesso il controlollo dei caratteri speciali, ed ora funziona perfettamente, senza l'errore notice, chje sarà cambiato ???? Boh. ti posto i codici:

Questo è il file search.php

PHP:
<?php
require_once("connetti.php");

var_dump($_POST['attoreprinc']);
var_dump($_POST['titolofilm']);

//$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']); //controlla i caratteri speciali
//$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);

//$attoreprinc=$_POST['attoreprinc'];
//$titolofilm =$_POST['titolofilm'];

$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']); //controlla i caratteri speciali
$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);

if(!EMPTY($attoreprinc)){

$result=mysql_query("SELECT * FROM  film WHERE attoreprinc LIKE '%$attoreprinc%'");
while($read=mysql_fetch_array($result)){
    $num_rec = mysql_num_rows($result);
        if ($num_rec == 0) {
            echo "nessun film trovato in archivio";
        } else {
            //echo $num_rec . " record trovati in archivio<br />\n";
            echo $read['attoreprinc']."<br> <br> <br/>";
        }
}

echo "<br> <br>";
echo $num_rec . " film presenti dello stesso attore " ,$attoreprinc;
} elseif(!EMPTY($titolofilm)){
    
    $result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' ");
    while($read=mysql_fetch_array($result)){
        echo $read['attoreprinc']." -"." - ".$read['titolofilm']." - ".$read['raccolta']." - ".$read['tipodvd']." - ".$read['data'];
    }
    
    echo "cercato film $titolofilm<br />";//da togliere
  


}

?>

E' questo è il file inscerca.html + php

HTML:
<?php
require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");
?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>

         
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>prova</title>
</head>
<body>
<?php
// put your code here
?>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<form action='search.php' method='POST'>

    <span style='font-size:20px'> <font color='blue' face='Comic Sans'> <center>
Inserire l'attore principale: <input type='text' name='attoreprinc'><br /><br/>
Inserire il titolo del film: <input type='text' name='titolofilm'><br /><br/>
<input type='submit' value='Avvio Ricerca'>
</form>
</body>
</html>
 
Ultima modifica:
ciao
per il problema "l'ins" vai a vedere con myadmim se il campo nel db è scritto "l\'ins" , cioè con lo slash, in teoria usando mysql_real_escape_string dovrebbe aggiungertela, poi in fase di visualizzazione potresi usare stripslashes() che le toglie
comunque provo a vedere cosa mi da il var_dump, poi ti so dire.
per il secondo problema: fai un'altro post
 
Ciao

Allora, ok vada per l'altro post, quella è la cosa meno urgente adesso. Comunque, ho risolto per l'apostrofo con my_real ecc. ecc. Sul database, mi da caratteri strambi. Però poi viene interpretato come si deve. Ed è quello l'importante. Sono andato a modificare l'ultima parte del codice, ossia quella che mi dovrebbe dire che ha trovato tot film, e mi da questo errore qua. Ho copiato di pari passo la setssa frase per l'attore. L'errore è il seguente:

Notice: Undefined variable: num_rec in C:\xampp\htdocs\Archivio\search.php on line 41
cercato film

E il codice dell'attore e del titolofilm sono i seguente:

PHP:
echo $num_rec . " film presenti dello stesso attore ";


} elseif(!EMPTY($titolofilm)){
    
    $result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' ");
    while($read=mysql_fetch_array($result)){
        echo $read['attoreprinc']." -"." - ".$read['titolofilm']." - ".$read['raccolta']." - ".$read['tipodvd']." - ".$read['data'];
     echo "<br> <br>";

    }
    
    echo $num_rec."cercato film ";
  


}
Che c'è di sbagliato visto che sono uguali ???? Problema risolto per na stronzata mia.
 
Ultima modifica:
ciao
sembrano uguali, ma se entri nell'elseif vuol dire che non sei passato dall'if, quindi $num_rec, che è dentro l'if, non viene valorizzato
PHP:
<?php
//....
echo $num_rec . " film presenti dello stesso attore ";
} elseif(!EMPTY($titolofilm)){
    
    $result=mysql_query("SELECT * FROM  film WHERE titolofilm LIKE '%$titolofilm%' ");
    $num_rec=mysql_num_rows($result);//da aggiungere
	while($read=mysql_fetch_array($result)){
        echo $read['attoreprinc']." -"." - ".$read['titolofilm']." - ".$read['raccolta']." - ".$read['tipodvd']." - ".$read['data'];
     echo "<br> <br>";
    }
    echo $num_rec."cercato film ";
?>

scusa non avevo visto la tua modifica
 
Ultima modifica:
Ciao

Perdonami,

Ma ho un altro piccolo e stupidissimo proplema Ho creato all'inizio un campo di nome "Tipo Dvd" che contiene i seguenti campi all'interno:

PHP:
Tipo DvD: <select name="tipodvd">
<option value="originale">Originale</option>
<option value="<copiato">Copiato</option>
<option value="Tv">Tv</option>
<option value="Sky">Sky</option>
<option value="Downlodato">Downlodato</option>

Mi sono reso conto che, serve anche il campo "Genere", e ho fatto na seconda select, composta in questa maniera qua:

PHP:
Genere: <select name="genere">
<option value="avventura">Avventura</option>
<option value="azione">Azione</option>
<option value="biografico">Biografico</option>
<option value="cartoneanimato">Cartone Animato</option>
<option value="comico">Comico</option>
<option value="commedia">Commedia</option>
<option value="documentario">Documentario</option>
<option value="drammatico">Drammatico</option>
<option value="erotico">Erotico</option>
<option value="fantascienza">Fantascienza</option>
<option value="guerra">Guerra</option>
<option value="horror">Horror</option>
<option value="hard">Hard xxx</option>
<option value="musicale">Musicale</option>
<option value="noir">Noir</option>
<option value="poliziesco">Poliziesco</option>
<option value="pulp">Pulp</option>
<option value="sentimentale">Sentimentale</option>
<option value="trhiller">Trhiller</option>
<option value="storico">Storico</option>
<option value="western">Western</option>

Ora la seconda select funziona e la prima ossia "tipo dvd" non funziona :( Bah. Che debbo modificare ????
 
ciao
prova a togliere
<option value="<copiato">Copiato</option>
cioè
<option value="copiato">Copiato</option>

dimenticavo:
hai chiuso con </select> ?
 
Ultima modifica:
Ciao

Risbattendoci il grugno, mi ero dimenticato di metterci il</select> e di fatti funziona alla meraviglia. Nel pomeriggio, apro un altro post, sperando ch emi puoi dare una mano a risolvere quelloc he ti avevo chiesto.
 

Discussioni simili