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

    [PHP + MYSQL] Help me...

    Ciao a tutti,
    ho un 'piccolo' problema...

    Sto facendo un progetto per la gestione del magazzino della scuola, da questo sito i docenti possono cercare e riservare i vari articoli presenti (gessi, spugne, mappette, pennarelli, ecc) ora:
    Ho creato la pagina cerca_articolo.php nella quale l'utente ha la possibilità di cercare gli articoli in base al codice (edit) oppure in base al nome (edit) oppure in base alla descrizione (edit) oppure in base alla categoria (listbox); una volta che l'utente inserisce i campi che vuole le variabili vengono passate a articolo_trovato.php che cerca in base ai criteri immessi.
    Ora vorrei riuscire a perfezionare la mia ricerca facendo si che riconosca anche gli spazi:

    es. (di come funziona ora)

    tab_articolo (codiceArt int, nome varchar(20));
    insert into tab_articolo (codiceArt, nome, descrizione) values (5,'fogli A4');


    cerca_articolo.php

    criterio di ricerca Nome: fo
    criterio di ricerca Nome: f
    criterio di ricerca Nome: g


    articolo_trovato.php
    Articoli trovati: fogli A4



    es. (di come vorrei che funzionasse)

    tab_articolo (codiceArt int, nome varchar(20));
    insert into tab_articolo (codiceArt, nome, descrizione) values (5,'fogli A4');


    cerca_articolo.php
    criterio di ricerca Nome: fo a ('fo' SPAZIO 'a' -> 'fo' di fogli ed 'a' di A4)

    articolo_trovato.php
    Articoli trovati: fogli A4



    Il problema è che quando io provo la seconda ricerca (fo a) mi dice che non trova risultati...
    il codice che ho implementato per la ricerca è il seguente:



    Codice PHP:
      $where "1"
      if(isset(
    $txt_codart)){
        if(
    TRIM($txt_codart)!=""){
          
    $where $where.(" AND articolo.codart LIKE '%$txt_codart%' ");
        }
      }

      if(isset(
    $txt_nome)){
        if(
    TRIM($txt_nome)!=""){
          
    $where $where.(" AND articolo.nome LIKE '%$txt_nome%' ");
        }
      }

      if(isset(
    $txt_descriz)){
        if(
    TRIM($txt_descriz)!=""){
          
    $where $where.(" AND articolo.descriz LIKE '%$txt_descriz%' ");
        }
      } 

      if (!(
    $sel_categoria=='*')){
        
    $where $where " AND categoria.codcat=".$sel_categoria
      }

      
    $select="SELECT articolo.codart,articolo.nome,articolo.descriz
                  FROM articolo 
                  INNER JOIN categoria 
                  ON articolo.codcat=categoria.codcat 
                  WHERE "
    .$where." group by articolo.codart"


    Qualcuno sa aiutarmi a riuscire a fare una ricerca più corretta?
    Grazie mille!!!!!


    Salutoni
    Sve87

  2. #2
    up
    PHP THE BEST

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    4

    Re: [PHP + MYSQL] Help me...

    Originariamente inviato da sve87
    Ciao a tutti,
    ho un 'piccolo' problema...

    Sto facendo un progetto per la gestione del magazzino della scuola, da questo sito i docenti possono cercare e riservare i vari articoli presenti (gessi, spugne, mappette, pennarelli, ecc) ora:
    Ho creato la pagina cerca_articolo.php nella quale l'utente ha la possibilità di cercare gli articoli in base al codice (edit) oppure in base al nome (edit) oppure in base alla descrizione (edit) oppure in base alla categoria (listbox); una volta che l'utente inserisce i campi che vuole le variabili vengono passate a articolo_trovato.php che cerca in base ai criteri immessi.
    Ora vorrei riuscire a perfezionare la mia ricerca facendo si che riconosca anche gli spazi:

    es. (di come funziona ora)

    tab_articolo (codiceArt int, nome varchar(20));
    insert into tab_articolo (codiceArt, nome, descrizione) values (5,'fogli A4');


    cerca_articolo.php

    criterio di ricerca Nome: fo
    criterio di ricerca Nome: f
    criterio di ricerca Nome: g


    articolo_trovato.php
    Articoli trovati: fogli A4



    es. (di come vorrei che funzionasse)

    tab_articolo (codiceArt int, nome varchar(20));
    insert into tab_articolo (codiceArt, nome, descrizione) values (5,'fogli A4');


    cerca_articolo.php
    criterio di ricerca Nome: fo a ('fo' SPAZIO 'a' -> 'fo' di fogli ed 'a' di A4)

    articolo_trovato.php
    Articoli trovati: fogli A4



    Il problema è che quando io provo la seconda ricerca (fo a) mi dice che non trova risultati...
    il codice che ho implementato per la ricerca è il seguente:



    Codice PHP:
      $where "1"
      if(isset(
    $txt_codart)){
        if(
    TRIM($txt_codart)!=""){
          
    $where $where.(" AND articolo.codart LIKE '%$txt_codart%' ");
        }
      }

      if(isset(
    $txt_nome)){
        if(
    TRIM($txt_nome)!=""){
          
    $where $where.(" AND articolo.nome LIKE '%$txt_nome%' ");
        }
      }

      if(isset(
    $txt_descriz)){
        if(
    TRIM($txt_descriz)!=""){
          
    $where $where.(" AND articolo.descriz LIKE '%$txt_descriz%' ");
        }
      } 

      if (!(
    $sel_categoria=='*')){
        
    $where $where " AND categoria.codcat=".$sel_categoria
      }

      
    $select="SELECT articolo.codart,articolo.nome,articolo.descriz
                  FROM articolo 
                  INNER JOIN categoria 
                  ON articolo.codcat=categoria.codcat 
                  WHERE "
    .$where." group by articolo.codart"


    Qualcuno sa aiutarmi a riuscire a fare una ricerca più corretta?
    Grazie mille!!!!!


    Salutoni
    Sve87
    Ciao, é un problema di sintassi nella stringa $where, infatti cosi com'é stata scritta il simbolo % non viene preso in considerazione..

    Riassumendo tramite un semplice esempio:

    Sintassi errata:
    $teststring = "Ge T";
    $query = 'SELECT * FROM tbl_users WHERE tbl_users.sFName LIKE '%$teststring%'';
    Risultato: la query non troverà nulla

    Sintassi corretta:
    $teststring = "Ge T";
    $query = 'SELECT * FROM tbl_users WHERE tbl_users.sFName LIKE "%'.$teststring.'%"';
    Risultato: la query troverà tutti gli utenti che iniziano con "Ge" e "T"


    Prima del simbolo "$" e alla fine della variabile dovrebbe essere messo un "."

    Quindi il codice corretto dovrebbe essere più o meno cosi:

    Codice PHP:
      $where "1"
      if(isset(
    $txt_codart)){
        if(
    TRIM($txt_codart)!=""){
          
    $where $where.(" AND articolo.codart LIKE "%'.$txt_codart.'%"'");
        }
      }

      if(isset(
    $txt_nome)){
        if(
    TRIM($txt_nome)!=""){
          
    $where $where.(" AND articolo.nome LIKE "%'.$txt_nome.'%"'");
        }
      }

      if(isset(
    $txt_descriz)){
        if(
    TRIM($txt_descriz)!=""){
          
    $where $where.(" AND articolo.descriz LIKE "%'.$txt_descriz.'%"'");
        }
      } 

      if (!(
    $sel_categoria=='*')){
        
    $where $where " AND categoria.codcat=".$sel_categoria
      }

      
    $select="SELECT articolo.codart,articolo.nome,articolo.descriz
                  FROM articolo 
                  INNER JOIN categoria 
                  ON articolo.codcat=categoria.codcat 
                  WHERE "
    .$where." group by articolo.codart"
    Buona serata

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 © 2024 vBulletin Solutions, Inc. All rights reserved.