Visualizzazione dei risultati da 1 a 5 su 5

Discussione: sql bucata.

  1. #1

    sql bucata.

    Ciao a tutti!
    ho un problema con questa sql:

    $query = "SELECT distinct products.codice as codice, products.id as id, products.descrizione_$lng as descrizione_$lng, products.foto as foto, products.famiglia as famiglia FROM products, families WHERE families.categoria='$categoria' AND products.status = '1' AND (products.descrizione_$lng LIKE '%$chiave%' or products.codice LIKE '%$chiave%') order by products.famiglia";

    dovrei cercare i prodotti con status 1 e di una categoria specifica che gli passo come parametro. tutto il resto è per avere i dettagli dalle 2 tabelle per comporre i risultati.
    Così comè estrapola dati da tutte le categorie.
    Qualche aiuto?


    tabella products:
    codice
    famiglia
    descrizione_ita
    descrizione_eng
    foto
    status

    tabella families:
    id
    nome_ita
    nome_eng
    categoria

  2. #2
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155
    Sei sicuro che la variabile $chiave contenga veramente qualcosa? In caso contrario la query estrarrebbe effettivamente tutto cio' che ha status = 1 ignorando le restanti condizioni.

    Prova a mettere una ECHO $query sotto l'inizializzazione della $query stessa e guarda che select compone e con che dati.

  3. #3
    hai ragione ma non è il solo problema.
    adesso anche mettendo qualcosa mi cicla un prodotto 27 volte. è come se gli "and" della query ampliassero la ricerca invece che limitarla.

    questo è la query stampata:
    SELECT products.codice as codice, products.id as id, products.descrizione_ita as descrizione_ita, products.foto as foto, products.famiglia as famiglia FROM products, families WHERE families.categoria='3' AND products.status = '1' AND (products.descrizione_ita LIKE '%aa%' or products.codice LIKE '%aa%') order by products.famiglia

    per la cronaca c'è un prodotto con "aa", status "1" e di categoria "3" che viene ciclato 27 volte.

    se riuscissi a vedere qualcos'altro di errato te ne sarei grato.

  4. #4
    non hai nessuna relazione tra le due tabelle. Non puoi fare una join simile.

    Ottieni un prodotto cartesiano. Devi definire una relazione tra un campo di products ed uno di families

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    piero.mac sei illuminante!

    ho aggiunto il legame tra le 2 tabelle (families.id=products.famiglia) e sembra funzionare bene
    anche se adesso faccio ancora altri test naturalmente.
    1000 Grazie a entrambi.


    Query funzionante:
    $query = "SELECT products.codice as codice, products.id as id, products.descrizione_$lng as descrizione_$lng, products.foto as foto, products.famiglia as famiglia FROM products, families WHERE families.id=products.famiglia and families.categoria='$categoria' AND products.status = '1' AND (products.descrizione_$lng LIKE '%$chiave%' or products.codice LIKE '%$chiave%') order by products.famiglia";

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.