Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Query di ricerca

  1. #1

    Query di ricerca

    Un'informazione :-)
    ho costruito una query di ricerca con la quale riesco a trovare dei risultati inserendo un termine o l'intera espressione ... questa qui:

    $select = 'SELECT DISTINCT id, denominazione, classe, ordinarie, interne, esterne, spezzoni';
    $from = ' FROM scuole2';
    $where = ' WHERE 1=1';
    $ordina = ' ORDER BY classe ASC';

    $searchtext3 = $_POST['searchtext3'];
    if ($searchtext3 != '') {
    // Specifica il testo da trovare
    $where .= " AND denominazione LIKE '%$searchtext3%'";}

    Solo che cerca il singolo termine o l'espressione esatta ... se inserisco due termini non mi restituisce alcun risultato anche se essi sono presenti nei campi in cui effettuo la query.
    Grazie per l'aiuto :-)

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Vediamo se ho capito.
    Nel campo di ricerca se viene inserito "casa bibicletta" tu vorresti trovare i campi in cui ci sono entrambe le parole, ma non necessariamente vicine e in questo ordine?

    In tal caso ti basta spezzare la stringa
    Codice PHP:
    $chiavi explode(" ",$_POST['searchtext3']);
    $where .= " AND ";
    foreach(
    $chiavi as $chiave)
    {
        
    $where .= "denominazione LIKE '%$searchtext3%' AND ";
    }
    $where substr($where,0,strlen($where)-4); //elimina l'ultimo AND che non serve 
    Occhio agli spazi nelle stringhe della query.

  3. #3
    E' esatto, proprio così ... hai interpretato bene. Provo.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Scusa, dentro la query devi mettere $chiave, non $searchtext3

  5. #5
    Mah ... è sempre uguale. Se inserisco due termini ... nisba
    Fatto così:

    $select = 'SELECT DISTINCT id, denominazione, classe, ordinarie, interne, esterne, spezzoni';
    $from = ' FROM scuole2';
    $where = ' WHERE 1=1';
    $ordina = ' ORDER BY classe ASC';

    $chiave = $_POST['chiave'];
    if ($chiave != '') {
    // Specifica il testo da trovare
    $chiavi = explode(" ",$_POST['chiave']);
    $where .= " AND ";
    foreach($chiavi as $chiave)
    {
    $where .= "denominazione LIKE '%$chiave%' AND ";
    }
    $where = substr($where,0,strlen($where)-4);

    ?>

    Dove sbaglio?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sei sicuro che ci sia un campo "denominazione" che contiene tutti i termini che cerchi?
    Nella query ci sono degli AND, quindi deve esserci almeno un campo che li contenga tutti, altrimenti metti OR al posto di AND

  7. #7
    OK adesso provo con Or perchè i termini ci sono

  8. #8
    Mah ... Niente.
    Provo a postare il codice originale:


    <?php

    // versione basic
    $select = 'SELECT DISTINCT id, denominazione, classe, ordinarie, interne, esterne, spezzoni';
    $from = ' FROM scuole2';
    $where = ' WHERE 1=1';
    $ordina = ' ORDER BY classe ASC';

    $searchtext3 = $_POST['searchtext3'];
    if ($searchtext3 != '') {
    // Specifica il testo da trovare
    $where .= " AND denominazione LIKE '%$searchtext3%'";}

    ?>


    <table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#E7EBEF">
    <tr>
    <th bgcolor="#CCCCCC" class="style2" style="width: 20%"><div align="center">
    Scuola</div></th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 15%">Classe di concorso</th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 15%"><div align="center">Cattedre ordinarie</div></th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 15%"><div align="center">Cattedre orario interne</div></th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 15%"><div align="center">Cattedre esterne</div></th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 10%"><div align="center">Spezzoni</div></th>
    <th bgcolor="#CCCCCC" class="style2" style="width: 10%"><div align="center">Opzioni
    </div>
    </th>
    </tr>
    <?php
    $ricerca1 = @mysql_query($select . $from . $where);
    if (!$ricerca1) {
    echo '</table>';
    exit('

    Errore nel cercare di reperire i dati nel database!
    '.
    'Error: ' . mysql_error() . '</p>');
    }
    while ($scuole2 = mysql_fetch_array($ricerca1)) {
    echo "<tr valign='top'>\n";
    $id = $scuole2['id'];
    $denominazione = ($scuole2['denominazione']);
    $classe = ($scuole2['classe']);
    $interne = ($scuole2['interne']);
    $ordinarie = ($scuole2['ordinarie']);

    $esterne = ($scuole2['esterne']);
    $spezzoni = ($scuole2['spezzoni']);

    echo "<td><center>$denominazione</center></td>\n";
    echo "<td><center>$classe</center></td>\n";
    echo "<td><center>$ordinarie</center></td>\n";
    echo "<td><center>$interne</center></td>\n";

    echo "<td><center>$esterne</center></td>\n";
    echo "<td><center>$spezzoni</center></td>\n";

    echo "<td>Edita | " .
    "Cancella</td>\n";
    echo "</tr>\n";
    }
    ?>
    </table>

    <?php $query = "select denominazione from scuole2";
    if ($denominazione == "")
    {
    echo"<p align='center'><font color='#FF0000'>Mi dispiace ma per la scuola da te selezionata non ci sono risultati.</p>";
    } else{ echo"";
    }
    ?>


    </fieldset>


    Nuova ricerca</p></td>
    </tr>

    </table>




    </td></tr></table>

  9. #9

  10. #10
    Risolto:

    $searchtext3 = $_POST['searchtext3'];
    if ($searchtext3 != '') //{
    // Specifica il testo da trovare
    //$where .= " AND denominazione LIKE '%$searchtext3%'";}
    {
    $search_strings = explode(' ', $searchtext3);

    foreach ($search_strings as $ss)
    $where .= " AND denominazione LIKE '%$ss%'";
    }


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.