Ricerca dati

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Ragazzi mi servirebbe di nuovo il vostro aiuto. Dovrei creare un form per ricerca dati. Dovrei digitare il titolo del film e cercarlo nel database "film", indicarmi quanti numerro di film ci sono con quel titolo, e se l'ha trovato in archivio oppure se non l'ha trovato. Inoltre vorrei la ricerca digitando le prime tre iniziali del titolo, oppure quelle di mezz o finali, insomma basta che mi ricordo le lettere che ci stanno nel titolo del fil. Spero di ricevere un vostro aiuto grazie.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Come ho già detto più e più volte, in questa sezione non si realizzano script su commissione. Per quello c'è la Bacheca annunci. Se hai già scritto del codice allora possiamo aiutarti a farlo funzionare, altrimenti leggi qualche tutorial/guida/articolo sull'interazione tra PHP e MySQL, sulle ricerche FULLTEXT e sull'autocompletamento (su MRW ci dovrebbe essere materiale per ognuno di questi argomenti) e torna quando avrai fatto qualcosa.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Allora,

Questa volta ho il codice, e funziona in parte. Non mi accetta le lettere apostrofate e accentate nella ricerca. E devo digitare il titolo completo. posto di seguito il codice, veiamo se mi potete dare una mano a migliorarlo grazie:

PHP:
<?PHP

require_once("connetti.php");                  Richiama la connessione al database
require_once("paginaprotetta.php");         Lo fa rientrare nella sessione protetta
require_once("presenta.php");                  Richiama la scritta che deve apparire in alto

//$query = " SELECT * FROM film WHERE titolofilm = '$titolofilm' ";

$titolofilm = $_POST['titolofilm'];

$query = " SELECT * FROM film WHERE titolofilm='$titolofilm'  ";
$res = mysql_query($query);

if($res && mysql_num_rows($res)>0){
while ($riga = mysql_fetch_array($res)) {
    echo $riga['titolofilm']. " - ". $riga['tipodvd']. " - ".$riga['data'];
   echo "<brZ> <brZ> <brZ/>";
}

} else
    echo "<b>\n";
    echo "Nessun film trovato in archivio";
    echo "<br>\n";
    echo "<a href=\"java-script:history.back();\">\n";
    echo "Ricerca nuovamente";
?>

Spero che sia sufficiente per aiutarmi. Grazie.
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io proverei a fare così
PHP:
<?php
//...
$titolofilm = $_POST['titolofilm'];//!!!!!controlli sull'inviio!!!
$query = " SELECT * FROM film WHERE titolofilm='$titolofilm' ";
$res = mysql_query($query);
if($res && mysql_num_rows($res)>0){
	while ($riga = mysql_fetch_array($res)) {//non ti dovrebbe servire il while in uanto il titolo dovrebbe essere unico ?
	echo $riga['titolofilm']. " - ". $riga['tipodvd']. " - ".$riga['data'];
	echo "<brZ> <brZ> <brZ/>";//??? cosa è il <brZ> ???
	}
} else{//NON triovata corridpondenza esatta
	$query_2 = " SELECT * FROM film WHERE titolofilm LIKE '%$titolofilm%' ";//cera la parola/e
	$res_2=mysql_query($query_2);
	if($res && mysql_num_rows($res_2)>0){
		while ($riga = mysql_fetch_array($res)) {
		echo $riga['titolofilm']. " - ". $riga['tipodvd']. " - ".$riga['data'];
		echo "<brZ> <brZ> <brZ/>";
		}//elenca tutti i film che contengono la parola cercata
	}else{
		echo "<b>\n Nessun film trovato in archivio</b>";//i tag si chiudono <b>.... </b>
		echo "<br>\n";
		echo "<a href=\"java-script:history.back();\">\n";
		echo "Ricerca nuovamente";
	}
}
//....
?>

p.s.
usa il tag php e, possibilmente attribuiscilo giusto
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

L'ho provato ma non funziona la ricerca delle parole intermedie al titolo. Ad esempio, se cerchi "altrimenti ci arrabiamo", e ti ricordi men oppure mente, oppure qualsiasi altra parola contenuto nel titolo, quello non me lo trova :( Per quanto riguarda il titolo completo, va perfettamente, tranne per il titolo "non c'è due senza quattro" mi dicie film non presente mentre c'è nel database. Però considera che probabilmente è stato memorizzato così: "non c'è due senza quattro".
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
effettivamente il LIKE %pinco% cerca tutti i titoli che iniziano o finisco con "pinco" (non se in mezzo)
prova a sostituire la select che ti ho postato con
PHP:
//...
 $query_2 = " SELECT * FROM film WHERE titolofilm REGEXP '$titolofilm' ";//cerca la parola/e p.s. togli i %
//...
e dai un occhio a quest'articolo
https://www.mrw.it/mysql/articoli/espressioni-regolari-query-mysql_852.html
poi per quanto riguarda il secondo problema ricordati che è "meglio prevenire che reprimere" quindi quando inserisci un titolo fai in modo che venga scritto come poi puoi cercarlo (es con lettere tutte minuscole)
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Io ho fatto così:

PHP:
<?PHP

require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");

$titolofilm = $_POST['titolofilm'];//!!!!!controlli sull'inviio!!!
//$query = " SELECT * FROM film WHERE titolofilm='$titolofilm' ";

$query = " SELECT * FROM film WHERE titolofilm LIKE '%$titolofilm%' ";
$res = mysql_query($query);
if($res && mysql_num_rows($res)>0){
    while ($riga = mysql_fetch_array($res)) {//non ti dovrebbe servire il while in uanto il titolo dovrebbe essere unico ?
    echo $riga['titolofilm']. " - ". $riga['tipodvd']. " - ".$riga['data'];
    echo "<brZ> <brZ> <brZ/>";//??? cosa è il <brZ> ???
    }
} else{//NON triovata corridpondenza esatta
    $query_2 = " SELECT * FROM film WHERE titolofilm LIKE '%$titolofilm%' ";//cera la parola/e
    $res_2=mysql_query($query_2);
    if($res && mysql_num_rows($res_2)>0){
        while ($riga = mysql_fetch_array($res)) {
        echo $riga['titolofilm']. " - ". $riga['tipodvd']. " - ".$riga['data'];
        echo "<brZ> <brZ> <brZ/>";
        }//elenca tutti i film che contengono la parola cercata
    }else{
        echo "<b>\n Nessun film trovato in archivio</b>";//i tag si chiudono <b>.... </b>
        echo "<br>\n";
        echo "<a href=\"java-script:history.back();\">\n";
        echo "Ricerca nuovamente";
    }
}
?>

E funziona perfettamente, in pratica ho sostituito la query 2 con la query principale e se tu digiti le parole che ti ricordi di un dato film, quindi mettiamo caso "altrimenti ci arrabbiamo", e ti ricordi la parola "men", e la digiti, te la trova. Mi sai spiegare il perkè sostituendola query funziona ???
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Mi sai spiegare il perkè sostituendola query funziona ???
ho fatto un piccolo errore di copia incolla, non vorrei dirti quale perchè fare il debag è quasi importante come conoscere php (forse anche di più)
prima di guardare in fondo prova a cercarlo :)




p.s.
quando scrivi del php per il codice usa il tag php (a sx del pulsante code e html)



PHP:
if([B]$res [/B]&& mysql_num_rows($res_2)>0){
doveva essere $res_2
 
Ultima modifica di un moderatore:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Non so se hai letto l'email che ti ho inviato prima. Comunque, c'è un piccolo problema. Quando digito per intero un fil con l'apostrofo tipo: l'ultimo samurau o non c'è due senza quattro (sono un patito di bud spence & terence hill), mi dice film non presente in archivio. mentre ovviamente c'è. Inoltre se digito le parole di mezzo come "l'ult" o "non" mi trova i suddetti film come mai secondo te ??? Po' esse per l'errore tuo di digitura ^????? Un ultima cosa, il <brZ> è stato n errore mio di digitura volevo scrivere <br>. Ma io ho adoperato i tag del php il simbolo cancelletto giusto ????
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un po' (con l'apostrofo) di studio di mysql non ti farebbe male.
quando nel form di ricerca o per inserire inserisci delle parole con l'apostrofo, mysql (ignorante perchè non conosce l'italiano) lo interpreta come un apice che divide la stringa.
quindi, in breve, è importante inserire con addslashes e poi leggere con stripslashes es.
PHP:
<?php
//es. per l'insert
$stringa=addslashes("pinco de'pallis");//diventa "pinco de\'pallis" qundi lo gnocco mysql capisce che non è un apice che divide la stringa
//es. di lettura
echo stripslashes($stringa);// toglie lo slash e in uot avrai pinco de' pallis
?>
poi
Ma io ho adoperato i tag del php il simbolo cancelletto giusto ????
i tag php sono <?php //tutto lo script ?> o parli dei tag di formattazione del testo quando scrivi i post, in tal caso sono
[ PHP]//tutto lo script [ /PHP]
il simbolo # può andare bene per altro (es. js), per l'atml puro usa i tag <> e, più a dx, php(nota ho messo lo spazio perche altrimenti non li vedi)
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Si, intendevo i tag per racchiudere il codice, in genere adopero sempre il simbolo #: potrebbe essere stata una svista i simboli "<>". Che squl fosse un po' gnurantello lo sapevo, perchè ci lavoro da parecchio con visual basic. però ho optato in questa maniera:

PHP:
$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);
$autoreprinc = mysql_real_escape_string ($_POST['autoreprinc']);

Scusami ho sempre sbagliato allora adoperando con il cancelletto. Eeheheheh me ne sono accorto ora. Mi hanni fato inserire questa stringa per i caratteri speciali: mysql_real_escape_string E sembra che funzioni anche se nle database va a scrivere tutti i suoi simboli. Inoltre volevo sapere, come posso indicarli nella ricerca il numero di film che ha trovato con quell'autore o titolo di film (se per sbaglio ci sono doppioni) ?????
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

La domanda è semplice. Mi piacerebbe indicare nella ricerca, oltre ad aver trovato il film anche il quantitativo cioè se c'è ne sono 5 magari perkè sono stati inseriti a memoria e quindi sbagliati, ecc. e anche dello stesso autore, quindi se io digito nelò campo di ricerca anche il nome dell'autore principale, ad esempio bud spencer, lui mi tirerà fuori che ci sono magari 5 film con lui.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il problema, secondo me, andrebbe diviso in due parti
1. numero di record con lo stesso titolo di film
questo non dovrebbe succedere, inserire e crere due record (o più) es. con il titlo "altrimenti ci arrabbiamo" non dovrebbe essere possibile
questo può essere risolto in fase di inserimento prima verificando se il titolo è giò stato immesso con una query di select con whwre titolo=titolo_immesso
e con mysql_num_rows verificare
se mysql_num_rows == 0 : inserisco, altrimenti NO
2. se nella tabella esiste anche il campo (es.) attore, nel form di ricerca metti oltre a quello del titolo anche quello per cercarlo.
poi dove fai la ricerca ti costruisci il WHERE che ti serve mettere nella query
esempio:
presumo che nella tabella ci sia un campo chiamato attore
PHP:
<?php
//.....
$wh=" WHERE 1=1 ";
if($_POST['titolo'] !=""){
	$wh = $wh." AND titolo='".$_POST['titolo']."'";
}
if($_POST['attore'] !=""){
	$wh = $wh." AND attore='".$_POST['attore']."'";
}
$query ="SELECT * FROM tabella".$wh;
/*in funzione dei post vuoti o no la query puo diventare
"SELECT * FROM tabella WHERE 1=1" entrambi i post vuoti: cerca tutti i titoli esistenti
"SELECT * FROM tabella WHERE 1=1 AND titolo='altrimenti ci arrabbiamo'" cerca solo il film
"SELECT * FROM tabella WHERE 1=1 AND attore='bud'" cerca tutti i film con bud
"SELECT * FROM tabella WHERE 1=1 AND titolo='altrimenti ci arrabbiamo' AND attore='bud'" se bud non c'è o titolo non c' ricerca fallita else presenta
*/
//qui usando sempre mysql_num_roes poi ricavarti quanti film hai trovato
//....
?>
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Innanzi tutto grazxie dei consigli e buona domenica. Secondo poi. la mia tabella chiamata "film", contengo 4 campi che sono:

1) Attore Principale

2) Titolo Film

3) Tipo DvD (Originalte, Tv , Sky)

4) Data

Io ovviamente all'inizio avevo sottovalutato il campo attore principale. Anzi proprio non l'avevo considerato. Invece ieri mi sono reso conto che serviva. Perchè sui dvd originali, c'è sempre scritto l'attore principale. Ora proverò la soluzione ch emi hai dato e ti farò sapere. Quindi tu pensi meglio mettere una verifica prima all'inserimento dei film giusto ??? Tutto sommato credo che tu abbia ragione. Ci sentiamo dopo per l'esetio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho visto la tabella, secondo me manca un campo importante:
id int(12) autoincrement primarykey
è il campo che identifica i vari record e può servirti inoltre per ulteriori collegamenti
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

mi sa che ho di nuovo bisogno del tuo aiuto, se puoi ovviamente. Innanzi tutto, vorrei capire come poter eliminare gli errori notice, ora posto l'errore. mi hanno detto che non lo devo considerare, perchè non è un errore importante, però mi da fastidio all'occhio e un buon programmatore, secondo me deve eliminare anche gli errori non importanti, o sbaglio ???? L'errore è il seguente:


Notice: Undefined index: attoreprinc in C:\xampp\htdocs\Archivio\cerca 2.php on line 6

Perchè da una parte me lo da e da un'altra no ??? La riga interessate a cui segnala l'errore è la seguente:

PHP:
$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);        //da errore notice ecc ecc.

Che differenza c'è con questa riga qua ????

PHP:
$attoreprinc = mysql_real_escape_string ($_POST['attoreprinc']);

La prima riga che ti ho segnato, mi da l'errore per intenderci quella riguardante 8titolofilm), invece la seconda, liscio come l'olio nessun errore. Chi ci capisce è bravo. bah. Mi puoi dare delle spiegazioni per favore ??? Grazie. Scusa rettifico, entrambi danno errore notice.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
la differenza potrebbe essere non tanto nella riga, ma dal nome. es.
se nel form di ricerca hai scritto
<input name="totolo" type="text" id="totolo">
cioè totolo al posto di titolo
nella $_POST non trova l'indice 'titolo'.
ricordati una cosa importante:
php indica l'errore dove si inceppa, ma l'errore può (anzi è facile) nascere alcune righe ed anche pagine prima.

comunque prova a mettere il solito var_dump

PHP:
var_dump($_POST['titolofilm']);
$titolofilm = mysql_real_escape_string ($_POST['titolofilm']);        //da errore notice ecc ecc.
e verifica/posta cosa riporta
 
Discussioni simili
Autore Titolo Forum Risposte Data
P [PHP] ricerca dati PHP 1
R [PHP] Prendere dati da moduli di ricerca esterni PHP 4
P Problema non mi esegue la ricerca dati PHP 23
R Problema nel $_POST di dati per ricerca su DB PHP 12
M Ricerca dati nel file txt Java 16
E ricerca dati nel DB mysql. PHP 16
abulafia [postgres+php]interfaccia grafica per inserimento e ricerca dati PHP 0
F access ricerca record con apostrofo. MS Access 0
C Ricerca Prodotti Woocommerce Javascript 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
G Menù a tendina di ricerca con query PHP 1
R Problema query con ricerca id numerico PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
F Visualizzazione motore di ricerca SEO e Posizionamento 2
B Stringa sql per ricerca su più campi Database 1
F Funzione Glob - ricerca file contenente una parola PHP 1
P Ricerca campo data PHP 1
L titolo del sito nella pagina di ricerca di google SEO e Posizionamento 2
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
L Ricerca valore mysql e incremento PHP 73
E Problema motore di ricerca FULL_TEXT PHP 0
motleyrulez Ricerca filtro con Ajax PHP 1
Shyson [CSS] Posizionare casella di ricerca HTML e CSS 3
P Query di ricerca profonda MySQL 0
T Query per ricerca ritardo evento MS Access 7
B Campo ricerca domini HTML e CSS 4
V Ricerca volontari questionario tesi - Ricambio Offerte e Richieste di Lavoro e/o Collaborazione 0
L Ricerca sviluppatori PHP tempo indeterminato Milano Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
L [PHP] Ricerca su search bar esterna PHP 1
D Ente di Formazione accreditato in Regione Lazio ricerca Front End Developer Offerte e Richieste di Lavoro e/o Collaborazione 3
N [WordPress] Ricerca tema WordPress 6
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
Federico.Marcelo Alla ricerca di scrittori post guest Offerte e Richieste di Lavoro e/o Collaborazione 0
ANDREA20 [PHP] motore di ricerca nel sito PHP 11
O [PHP] Ricerca record tramite post PHP 7
GraceHawk [MS Access] Findfirst per ricerca record MS Access 1
T [PHP] Ricerca nel database PHP 2
A [Javascript] Mostrare un marker se è vicino al risultato di ricerca con google maps Javascript 3
V Semplice barra di ricerca con filtro categorie prodotti E-Commerce 0
A Ricerca con collegamento in altro sito web Discussioni Varie 0
C [PHP] Ricerca multipla, evitare if PHP 4
F [WordPress] Plugin Ricerca per e-commerce Woocommerce WordPress 1
M [OFFRO][RETRIBUITO] Milano IT Consulting SRL - Ricerca 1 Consulente PHP Offerte e Richieste di Lavoro e/o Collaborazione 0
D [ASP] Motore di ricerca interno su 2 tabelle Classic ASP 3
A [MySQL] Ricerca in PMA MySQL 0
andreas88 Da .htm a .php, perdo le mie posizioni su Google ricerca? SEO e Posizionamento 9
P Google risultati di ricerca inappropriati SEO e Posizionamento 1

Discussioni simili