Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [PHP] query sql

  1. #1

    [PHP] query sql

    ciao,sentite ho un problema,io ho una pagina cerca.php:
    Codice PHP:
    <?
    //includioma la connessione con mysql
    include("config.php.inc");
    //cominciamo,la variabile ocntiene il link nell'url della pagina ad esempio per dividere html e php,esempio
    //cerca.php = il form per la ricerca cerca.php?pagina=risultati = la pagina dei risultati
    $pagina $_GET[pagina];
    if (
    $pagina == NULL)
    {
    //ecco la pagina di ricerca
    echo "
    [b]
    <table align=\"center\">
    <tr>
    <form action=\"cerca.php?pagina=risultati\" method=\"post\">
    <center>[b]Motore di ricerca Template[/b]</center>
    <td>
    <div align=\"left\">
    Seleziona lo stile su cui cercare:</td>
    <td>
    <select name=\"stile\">
    <option value=\"Tech\">Tech</option>
    <option value=\"Clean\">Clean</option>
    <option value=\"Portal\">Portal</option>
    <option value=\"Commercial\">Commercial</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>
    Scegli per quale campo cercare:
    </td>
    <td>
    <select name=\"campo\">
    <option value=\"nome\">Nome</option>
    <option value=\"autore\">Autore</option>
    <option value=\"tema\">Tema</option>
    <option value=\"tutti\">Tutti</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>
    query di ricerca:
    </td>
    <td>
    <input type=\"text\" name=\"parola\">
    </td>
    </tr>
    <tr>
    <td>
    <input type=\"submit\" value=\"cerca\">
    </td>
    </tr>
    </div>
    </table>
    [/b]"
    ;
    }
    if(
    $pagina == risultati)
    {
    //funzione per scrivere rosso
    function rosso($testo)
    {
    $testo "<font color=\"FF0000\">$testo</font>";
    return 
    $testo;
    }
    //settiamo le informazioni ricevute ed eseguiamo le query necessarie
    $stile $_POST[stile];
    $campo $_POST[campo];
    $parola $_POST[parola];
    //settati i parametri settiamo la query
    if ($campo == tutti)
    {
    $query "SELECT id FROM articoli WHERE stile = '%$stile%' && nome LIKE '%$parola%' || autore LIKE '%$parola%' || tema LIKE '%$parola%'";
    }
    else 
    {
    $query "SELECT id FROM articoli WHERE stile = '%$stile%' && '$parola' LIKE '%$campo%'";
    }
    $result mysql_query($query);
    if (
    mysql_num_rows($result) == NULL)
    {
    echo 
    "Spiacente nessun risultato ottenuto per il tuo criterio di ricerca";
    unset(
    $row);
    unset(
    $row2);
    }
    while (
    $row mysql_fetch_array($result))
    {
    $query2 "SELECT * FROM articoli WHERE id = '$row[id]'";
    $result2 mysql_query($query2);
    while (
    $row2 mysql_fetch_array($result2))
    {
    print 
    "[b]Nome:".rosso($row2[nome])."
    Autore:"
    .rosso($row2[autore])."
    Stile:"
    .rosso($row2[stile])."
    Tema:"
    .rosso($row2[tema])."
    ________________________
    [/b]"
    ;
    }
    }
    }
    ?>
    primo problema: la query non funziona se si cerca per i campi singolarmente tipo nome,tema,autore, secondo problema:
    quando un utente seleziona stile la query dovrebbe cercare
    i campi simili alla query sui campi nome o tema o autore dove però lo stile è scelto prima dall'utente!
    il problema è che la query fa tutto un susseguirsi di or mentre vorrei che stile fosse stile e che l'or sia solo per i campi nome,autore,tema!

  2. #2
    Metti le parentesi nella query attorno alle tre condizioni che riguardano i tre campi nome,autore,tema...

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    parentesi tipo:
    Codice PHP:
    $query "SELECT id FROM articoli WHERE stile = '%$stile%' && (nome LIKE '%$parola%') || (autore LIKE '%$parola%') || (tema LIKE '%$parola%')"
    cosi?

  4. #4
    potresti rispondermi per piacere?che devo finire un lavoraccio e questa query è fondamentale!

  5. #5
    Con calma, mica sono al tuo servizio...

    Quel che intendevo era:

    Codice PHP:
    $query "SELECT id FROM articoli WHERE stile = '%$stile%' && (nome LIKE '%$parola%' || autore LIKE '%$parola%' || tema LIKE '%$parola%')"
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    scusa m aè un intero giorno che sto lavorando e sono molto stanco volevo chiudere la giornata in bellezza senza pormi il problema domani non intendevo pressarti!

  7. #7
    Ok, scuse accettate, ma l'hai provata?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    si e per la ricerca dei 3 cmapi su uno degli stili selezioanti va però la ricerca sui campi singoli tipo cerca per nome autore o tema no il link è questo http://area51.portalewebmasters.com/jack/cerca.php

  9. #9
    Codice PHP:
    <html>
        <head>
            <title>Ricerca</title>
        </head>
        <body bgcolor="white">
    <?
    //includiamo la connessione con mysql
    include("config.php.inc");

    //funzione per scrivere rosso
    function rosso($testo)
    {
    $testo "<font color=\"FF0000\">$testo</font>";
    return 
    $testo;
    }
    //cominciamo, la variabile contiene il link nell'url della pagina ad esempio per dividere html e php, esempio
    //cerca.php = il form per la ricerca cerca.php?pagina=risultati = la pagina dei risultati
    $pagina $_GET["pagina"];
    switch (
    $pagina):
         case(
    NULL):
            
    //ecco la pagina di ricerca
    ?>
    [b]
    <table align="center">
    <tr>
    <form action="cerca.php?pagina=risultati" method="post">
    <center>[b]Motore di ricerca Template[/b]</center>
    <td>
    <div align="left">
    Seleziona lo stile su cui cercare:</td>
    <td>
    <select name="stile">
    <option value="Tech">Tech</option>
    <option value="Clean">Clean</option>
    <option value="Portal">Portal</option>
    <option value="Commercial">Commercial</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>
    Scegli per quale campo cercare:
    </td>
    <td>
    <select name="campo">
    <option value="nome">Nome</option>
    <option value="autore">Autore</option>
    <option value="tema">Tema</option>
    <option value="tutti">Tutti</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>
    query di ricerca:
    </td>
    <td>
    <input type="text" name="parola">
    </td>
    </tr>
    <tr>
    <td>
    <input type="submit" value="cerca">
    </td>
    </tr>
    </div>
    </table>
    [/b]
    <?
            
    break;
         case(
    "risultati"):
            
    //settiamo le informazioni ricevute ed eseguiamo le query necessarie
            
    $stile mysql_escape_string($_POST[stile]);
            
    $campo mysql_escape_string($_POST[campo]);
            
    $parola mysql_escape_string($_POST[parola]);
            
    //settati i parametri settiamo la query
            
    if ($campo=="tutti"):
                
    $query "SELECT id FROM articoli WHERE stile = '%".$stile."%' && nome LIKE '%".$parola."%' || autore LIKE '%".$parola."%' || tema LIKE '%".$parola."%'";
            else:
                
    $query "SELECT id FROM articoli WHERE stile = '%".$stile."%' && '".$campo."' LIKE '%".$parola."%'";
            endif;
            
    $result mysql_query($query);
            if (
    mysql_num_rows($result) == NULL):
                echo 
    "Spiacente nessun risultato ottenuto per il tuo criterio di ricerca";
                unset(
    $row);
                unset(
    $row2);
            else:
                while (
    $row mysql_fetch_array($result)):
                    
    $query2 "SELECT * FROM articoli WHERE id = '$row[id]'";
                    
    $result2 mysql_query($query2);
                    while (
    $row2 mysql_fetch_array($result2)):
    ?>
                    [b]Nome:<?=rosso($row2[nome]);?>

                    Autore:<?=rosso($row2[autore]);?>

                    Stile:<?=rosso($row2[stile]);?>

                    Tema:<?=rosso($row2[tema]);?>

                    ________________________
    [/b]
    <?
                    
    endwhile;
                endwhile;
            endif;
            break;
    endswitch;
    ?>
         </body>
    </html>
    Ecco qui!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #10
    si la tua soluzione è sicurament emigliore dal codice e il resto però la ricerca per i campi singoli diversi da tutti non funziona epure la query è impostata bene!

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.