Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Ricerca tra tabelle diverse di un unico DATABASE

    Salve a tutti,
    sto cercando di creare un piccolo script che mi permetta di realizzare ricerche in diverse tabelle di un unico DB.
    Ho 6 tabelle le quali hanno come chiave primaria "struttura". Ho provato a fare il lavoretto artigianalmente predisponendo nel form un <select> con name="database_name".
    Nella query della pagina dei risultati (results.html - sto implementando anche il mod_rewrite!) ho riportato la variabile $database_name così: SELECT * FROM $database_name WHERE etcetera etcetera.
    Il problema è proprio qui. Se seleziono nel <select> la prima opzione, inserendo la chiave di ricerca (name="input") il db risponde. Nel caso in cui inserisca la medesima chiave e nel <select> le opzioni successive, mi da errore.

    Per essere più chiaro posto il codice:

    Codice PHP:
    Questo il codice del form

    <form action="results.html" method="post">

    <
    input type="text" size="20" name="input" value="Cerca Struttura..."><select name="database_name">
    <
    option value="hotel">Hotel Residence</option>
    <
    option value="camping">Camping Villaggi</option>
    <
    option value="bed_breakfast">Bed Breakfast</option>
    <
    option value="agriturismo">Agriturismo</option>
    <
    option value="case">Case Vacanze</option>
    <
    option value="ristoranti">Ristoranti,Pizzerie,Pub</option>
    </
    select>
    <
    input type="submit" value="Cerca"> </form
    A questo punto scegliendo Hotel & Residence, con opportuna chiave, mi risponde correttamente dandomi il risultato che deve. Se però scegliessi ad esempio Camping & Villaggi mi da errore!

    Questo il codice della pagina results.html (gli indirizzi delle pagine sono statici perchè sto cercando di implementare il mod_rewrite!)

    Codice PHP:
    Questo il codice di results.html

    <? include("connessioni.inc.php");
    if (
    trim($input)=="" OR trim($input)=="Cerca Struttura...")
    echo
    "<h3>Attenzione: nessuna chiave da cercare inserita. Torna indietro.</h3>";
    else
    $db mysql_connect($db_host$db_user$db_password);
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $keys explode (", "$input);
    $query "";
    reset($keys);
    while (list(,
    $parola) = each ($keys))
    {
    $parola trim($parola);
    if (
    $parola != "")
    $query .="intestazione LIKE '%$parola%' OR descrizione LIKE '%$parola%'";
    }
    $query"SELECT * FROM $database_name WHERE " $query;
    $result mysql_query($query$db);
    #####################L'ERRORE ME LO DA A QUESTA RIGA
    while ($row mysql_fetch_array($result))
    {
    echo 
    "<div><a href=\"scheda_$database_name/$row[struttura].html\">$row[intestazione]</a> $row[categoria]</h1>


    $row[descrizione]</p></div>"; }

    mysql_close();
    ?>
    Mi auguro di essere stato chiaro. C'è qualcuno di buon cuore che mi fa sapere cosa sbaglio? E' mezza giornata che ci sto sbattendo la testa !
    www.palinuroculturaevacanze.it - Il portale di Palinuro.

    www.discotecasestosenso.it - Fashon Club Discoteca di Palinuro

    www.holzofenpizzapietro.de - Die gute italienische pizza von 3 generationem!

  2. #2
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    mi sembra che l'errore a occhio e croce sia nel fatto chese non setti il database viene eseguita la query usando come parametro

    $query= "SELECT * FROM $database_name WHERE " . $query;

    Mentre se selezioni un db non va più perchè non si prende il parametro che passi

    Mi fai vedere come ti prendi $input?!
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  3. #3
    Originariamente inviato da flessciato
    mi sembra che l'errore a occhio e croce sia nel fatto chese non setti il database viene eseguita la query usando come parametro

    $query= "SELECT * FROM $database_name WHERE " . $query;

    Mentre se selezioni un db non va più perchè non si prende il parametro che passi

    Mi fai vedere come ti prendi $input?!
    Capisco, ma non dovrebbe darmi errore con $database_name? Perchè la variabile non viene esplicitata direttamente ma se la dovrebbe ricavare dal select del form

    Invece quando la variabile $database_name è = hotel funziona...se passa a "camping" non funziona più.

    Infine: $input è una variabile che passo dal form! Input corrisponde alla chiave che devo trovare...invece di chiamarla $chiave, l'ho chiamata $input...
    www.palinuroculturaevacanze.it - Il portale di Palinuro.

    www.discotecasestosenso.it - Fashon Club Discoteca di Palinuro

    www.holzofenpizzapietro.de - Die gute italienische pizza von 3 generationem!

  4. #4
    up...c'è nessuno....?!
    www.palinuroculturaevacanze.it - Il portale di Palinuro.

    www.discotecasestosenso.it - Fashon Club Discoteca di Palinuro

    www.holzofenpizzapietro.de - Die gute italienische pizza von 3 generationem!

  5. #5
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    dipende come è impostata la gestione degli errori. In questo caso comunque l'errore non si presenta perchè ottieni una stringa vuota, o meglio... la query ti da un risultato vuoto.

    Quando tu cerchi un parametro con la select trovi il campo di testo e NON la select perchè il primo valore della select non viene selezionato (quinid non passi niente alla variabile concatenata) quindi viene usata solo "la prima parte" della variabile $query. Se invece selezioni un valore della select ottieni un errore perchè la stringa non viene concatenata con quel valore, ed è per questo che ottieni un risultato nullo.

    Detto questo dovresti, come già richiesto, farmi vedere come "catturi" gli $input che userai nella query... cioè devi farmi vedere tutto lo script (senza i parametri di connessioni) perchè la "cattura" delle variabili la fai con un file incluso che è dentro a connessioni.inc.php (lerrore credo sia li).

    Input da solo non è mica un array, per intenderci. Tu lo passi come tale
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  6. #6
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    intanto, per curiosità, stampa la query in chiaro e vediamo cosa passa....
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  7. #7

    ecco gli script...

    Questi i parametri di connessione:

    Codice PHP:
    Qui il file connessioni.inc.php
    <?
    // parametri del database
    $db_host "localhost";
    $db_user "";
    $db_password "";
    $db_name "strutture";
    ?>
    Qui sotto il codice con il form da cui traggo $input:
    Codice PHP:
    Form

    <form action="results.php" method="post">

    <
    input type="text" size="20" name=[B]"input"[/Bvalue="Cerca Struttura..."><select name="database_name">
    <
    option value="hotel">Hotel Residence</option>
    <
    option value="camping">Camping Villaggi</option>
    <
    option value="bed_breakfast">Bed Breakfast</option>
    <
    option value="agriturismo">Agriturismo</option>
    <
    option value="case">Case Vacanze</option>
    <
    option value="ristoranti">Ristoranti,Pizzerie,Pub</option>
    </
    select>
    <
    input type="submit" value="Cerca"> </form 
    Infine, lo script con la query che dovrebbe darmi il risultato:
    Codice PHP:
    Query e script per risultato

    <? include("connessioni.inc.php");
    if (
    trim($input)=="" OR trim($input)=="Cerca Struttura...")
    echo
    "<h3>Attenzione: nessuna chiave da cercare inserita. Torna indietro.</h3>";
    else
    $db mysql_connect($db_host$db_user$db_password);
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $keys explode (", "$input);
    $query "";
    reset($keys);
    while (list(,
    $parola) = each ($keys))
    {
    $parola trim($parola);
    if (
    $parola != "")
    $query .="intestazione LIKE '%$parola%' OR descrizione LIKE '%$parola%'";
    }
    $query"SELECT * FROM $database_name WHERE " $query;
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    {
    if (
    $row[intestazione] == "$result")
    echo
    "Nessun risultato trovato.";
    else
    echo 
    "<div><a href=\"scheda_$database_name.php?struttura=$row[struttura]\">$row[intestazione]</a> $row[categoria]</h1>


    $row[descrizione]</p></div>"; }

    mysql_close();
    ?>
    ORA RISPIEGO IL PROBLEMA: Se nella pagina col form scrivo una cerca parola nell'input, e seleziono dal select la prima opzione che è "Hotel e Residence", nella pagina dei risultati mi da quello che cerco.
    Se invece dal form nel select seleziono un'altra opzione, ad esempio "Casa Vacanza", allora mi da errore: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in cartella/file.php on line 27
    www.palinuroculturaevacanze.it - Il portale di Palinuro.

    www.discotecasestosenso.it - Fashon Club Discoteca di Palinuro

    www.holzofenpizzapietro.de - Die gute italienische pizza von 3 generationem!

  8. #8
    ennesimo up...
    www.palinuroculturaevacanze.it - Il portale di Palinuro.

    www.discotecasestosenso.it - Fashon Club Discoteca di Palinuro

    www.holzofenpizzapietro.de - Die gute italienische pizza von 3 generationem!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.