Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [Php - MySql] Form con più select

    Ciao a tutti!
    Sono alle prese con la realizzazione di un piccolo motorino di ricerca su un'unica graande tabella nel mio db.
    Il metodo di ricerca, nella mia ottica, deve avvenire per l'utente finale tramite form.
    Ho un form con una, due e con tre select.
    con il form da 1 select nessun problema.
    Ho problemi con il form con due select.

    Il mio form è questo:
    codice:
    <form method="post" action="cerca1a.php">
    <select name="urlA">
    <option value="vuoto" selected> 
    <option value="cognome">Cognome
    <option value="arco">Arco Cronologico
    <option value="attivita">Attività
    </select>
    
    <input type=text maxlength=30 size=15 name="chiave">
    
    
    <select name="urlB">
    <option value="vuoto" selected> 
    <option value="arco">Arco Cronologico
    <option value="provenienza">Provenienza
    <option value="attivita">Attività
    <option value="residenza">Residenza
    <option value="beni">Beni o Proprietà
    <option value="ordine">Ordine Religioso
    </select>
    
    <input type=text maxlength=30 size=15 name="chiave">
    
    
    <input type="submit" value="cerca"> 
    </form>
    Come faccio a dire nel Php di assocciare i valori selezionati e scritti nelle due select, di ricercarli nella tabellona del mio db che dicevo all'inizio?

    grasssie per qualsiasi suggerimento


  2. #2
    e' una cos ache si fa a livello query.
    Puoi postare il codice usato per l ricerca a 1 select?

  3. #3
    Originariamente inviato da quit10
    e' una cos ache si fa a livello query.
    Puoi postare il codice usato per l ricerca a 1 select?
    grazie per la risposta
    ecco il form con una select:
    codice:
    <form method="post" action="cerca1.php">
    <select name="url">
    <option value="vuoto" selected> 
    <option value="cognome">Cognome
    <option value="provenienza">Provenienza
    <option value="attivita">Attività
    <option value="residenza">Residenza
    <option value="beni">Beni o Proprietà
    <option value="ordine">Ordine Religioso
    </select>
    
    <input type="text" maxlength="30" size="15" name="chiave">
    
    <input type="submit" value="Cerca"> 
    </form>
    ecco qui il codice php sommariamente:
    Codice PHP:

    if($_POST['url'] == 'cognome' || $_POST['url'] == 'provenienza' || $_POST['url'] == 'attivita' || $_POST['url'] == 'residenza' || $_POST['url'] == 'beni' || $_POST['url'] == 'ordine') {

    //chiave da ricercare divisa da virgole
    $keys explode (","$chiave);

    //analisi della parola
    $query ""
    reset ($keys); 
    while (list(,
    $parola) = each ($keys)) { 
    $parola trim($parola); 

    //conteggio lettere
    $lunghezza strlen($parola);

    // :::::: COGNOME ::::::
    if($_POST['url'] == 'cognome') {
    $query .= "tabella.cognome LIKE '%$parola%' OR tabella.varianti LIKE '%$parola%' OR "

    $query .= "0";
    $query "SELECT * FROM tabellaWHERE " $query;
    $result mysql_query($query$db)
    or die( 
    "Errore: " mysql_error() );

    //conto il numero di record trovati
    $numrows mysql_num_rows($result);
    ...
    ...
    ... 
    credo che la chiave nel form con due select debba essere diversa, esempio "chiaveA" e "chiaveB", e quindi anche nello script dovrebbero esserci due keys (keysA e keysB)????

    grazie

  4. #4
    nessuno sa darmi qualche suggerimento??

    grazie

  5. #5
    Non sono un genio delle query, ma a mio parere è sufficiente cercare le key in due tabelle espresse dai valori di select.
    Ad esempio con un codice simile:
    Codice PHP:
    <?php
    $keys
    =explode(",",$_POST['chiaveA'].",".$_POST['chiaveB']);//Creo un array con tutte le parole chiave di entrambi i campi
    while (list(,$parola) = each ($keys)) {
    $parola trim($parola);
    $query=mysql_query("SELECT * FROM  tabella WHERE tabella.".$_POST['urlA']." LIKE '$parola' AND tabella.".$_POST['urlB']." LIKE '$parola'");
    }

  6. #6
    Originariamente inviato da quit10
    Non sono un genio delle query, ma a mio parere è sufficiente cercare le key in due tabelle espresse dai valori di select.
    Ad esempio con un codice simile:
    Codice PHP:
    <?php
    $keys
    =explode(",",$_POST['chiaveA'].",".$_POST['chiaveB']);//Creo un array con tutte le parole chiave di entrambi i campi
    while (list(,$parola) = each ($keys)) {
    $parola trim($parola);
    $query=mysql_query("SELECT * FROM  tabella WHERE tabella.".$_POST['urlA']." LIKE '$parola' AND tabella.".$_POST['urlB']." LIKE '$parola'");
    }

    grazie per la risposta e il suggerimento

    ancora non mi torna del tutto
    ho modifcato come segue:
    Codice PHP:
    // verifico che i campi siano compilati entrambi
    if (($_POST['urlA']=='') || ($_POST['urlB']=='')) {
    echo 
    "Devi riempiere tutti i campi";
    } else {

    //prendo le due KEYS A e B
    $keys=explode(",",$_POST['chiaveA'].",".$_POST['chiaveB']);//Creo un array con tutte le parole chiave di entrambi i campi 
    while (list(,$parola) = each ($keys)) { 

    $parola trim($parola); 

    $query="SELECT * FROM  tabella WHERE tabella.".$urlA." LIKE '$parola' AND tabella.".$urlB." LIKE '$parola'"
    $result mysql_query($query$db)
    or die( 
    "Errore: " mysql_error() );

    //conteggio lettere
    $lunghezza strlen($parola);

    //se lunghezza<4
    if ($lunghezza <4) {
    echo 
    "I criteri di ricerca non sono stati rispettati.


    Ricorda che devi immettere almeno una parola con un minimo di 4 lettere"
    ;
    } else {

    //conto il numero di record trovati
    $numrows mysql_num_rows($result);
    //controllo field vuoto
    if ($numrows==AND $lunghezza>=4) {
    //Stampo il numero di record trovati
    echo "Nessun risultato trovato per il termine $parola";
    }

    //controllo field vuoto
    if ($numrows!==AND $lunghezza>=4) {
    //Stampo il numero di record trovati
    echo 
    ...
    ...

    while (
    $row mysql_fetch_array($result)) {
    //stampo il risultato
    echo
    ...
    ... 

    mi dice che non ci sono dati!!

  7. #7
    c'è qualcuno che saprebbe illuminarmi?


  8. #8
    UP


  9. #9
    Che significa "non ci sono dati"? Puoi postare l'errore preciso?

  10. #10
    ecco come ho ridotto lo script...
    e non mi rende alcun risultato

    Codice PHP:
    //chiavi da ricercare 
    $keyA explode (","$_POST['chiaveA']);
    $keyB explode (","$_POST['chiaveB']);

    $urlA=($_POST['urlA'] == 'cognome' || $_POST['urlA'] == 'arcocronos' || $_POST['urlA'] == 'attivita');
    $urlB=($_POST['urlB'] == 'arcocronos' || $_POST['urlB'] == 'provenienza' || $_POST['urlB'] == 'attivita' || $_POST['urlB'] == 'residenza' || $_POST['urlB'] == 'beni' || $_POST['urlB'] == 'ordineR');

    if ((
    $urlA=='') || ($urlB=='')) {
    echo 
    "Devi riempiere tutti i campi";
    } else {

    $query2 "SELECT * FROM persone WHERE '$urlA'='%$keyA%' AND '$urlB'='%$keyB%'";
    $result2 mysql_query($query2$db)
    or die( 
    "Errore: " mysql_error() );

    //conto il numero di record trovati
    $numrows2 mysql_num_rows($result2);
    if (
    $numrows2=0) { 
    echo 
    "NADA"
    } else { 
    echo 
    "Ci sono $numrows2 record"
    }
    //realizzo un ciclo WHILE
    while ($row2 mysql_fetch_array($result2)) {
    //stampo il risultato
    echo "<table width=\"100%\" border=\"0\" align=\"center\">
    <tr><td width=\"5\" valign=\"top\">Personaggio: </td><td align=\"left\" valign=\"top\"><a href=\"personaggioscheda.php?id="
    .$row2['id']."\">" $row2['nome'] . "" .strtoupper($row2['cognome']). "</a></td></tr></table>
    "
    ;
    }



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.