Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126

    Estrarre solo una frase presente in un campo

    Salve a tutti.
    Ho la classica query:
    Codice PHP:
    "SELECT * FROM v3_azienda WHERE produce LIKE '%IGP%'" 
    che mi ricerca quelle aziende che nel campo "produce" hanno prodotti a marchio IGP. E fin qui nessun problema.

    Esistono però alcune aziende che, oltre ai prodotti IGP, producono anche alto.

    Nella info bubble che raccoglie tutte le informazioni aziendali, vorrei che comparisse solo il prodotto IGP e non tutto il resto del catalogo.
    Esiste una query specifica, o devo rassegnarmi e rifare il DB?

    Grazie

  2. #2
    Ciao,
    se il catalogo è inserito tutto nel singolo campo "produce" la vedo complicata.
    Se i singoli prodotti del catalogo sono separati, ad esempio, da una virgola (o punto e virgola) puoi scomporre in un array tramite la funzione explode() di php la stringa ottenuta con la query.
    Visualizzi quindi solo gli elementi dell'array che contengono il testo IGP.

    L'ideale tuttavia sarebbe avere una tabella per le aziende ed una tabella per il catalogo prodotti.

    Alessandro
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Grazie Magicale.
    Hai ragione, purtroppo tutto questo carrozzone l' ho ereditato ed essendo corposo, l'idea di rifare il DB mi inquieta non poco.

    I prodotti, comunque, sono divisa da una virgola. Provo ad usare la funzione che mi hai suggerito.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Probabilemente sono io che ignoro sicuramente la sintassi corretta per l'uso di explode ()

    Questo è quello che ho combinato:

    Codice PHP:
    $query "SELECT * FROM v3_azienda WHERE produce LIKE '%IGP%'";
    $result mysql_query($query);
    $produce explode(',',$row['produce']); 
    $prod1 $row['IGP']; 
    if (!
    $result) {
    die(
    'Query invalida: ' mysql_error());
    }

    header("Content-type: text/xml");

    echo 
    '<markers>';

    while (
    $row = @mysql_fetch_assoc($result)){

    echo 
    '<marker ';
    echo 
    'name="' parseToXML($row['denom']) . '" ';
    echo 
    'address="' parseToXML($row['indirizzo']) . '" ';
    echo 
    'comune="' parseToXML($row['comune']) . '" ';
    echo 
    'lat="' $row['Latitudine'] . '" ';
    echo 
    'lng="' $row['Longitudine'] . '" ';
    echo 
    'type="' $row['tipologia'] . '" ';
    echo 
    'produce="' $row['prod1'] . '" ';
    echo 
    '/>';

    ed ovviamente non funziona.

  5. #5
    Prova così:

    Codice PHP:
    function findIGP($produce_row) {
    $prodotti=array();
    $produce explode(',',$produce_row); 
    foreach(
    $produce as $p)
    {
    if (
    strpos($p,"IGP")!==false$prodotti[]= $p;
    }
    return 
    implode(",",$prodotti);
    }

    $query "SELECT * FROM v3_azienda WHERE produce LIKE '%IGP%'"
    $result mysql_query($query); 

    if (!
    $result) { 
    die(
    'Query invalida: ' mysql_error()); 


    header("Content-type: text/xml"); 

    echo 
    '<markers>'

    while (
    $row = @mysql_fetch_assoc($result))

    echo 
    '<marker '
    echo 
    'name="' parseToXML($row['denom']) . '" '
    echo 
    'address="' parseToXML($row['indirizzo']) . '" '
    echo 
    'comune="' parseToXML($row['comune']) . '" '
    echo 
    'lat="' $row['Latitudine'] . '" '
    echo 
    'lng="' $row['Longitudine'] . '" '
    echo 
    'type="' $row['tipologia'] . '" '
    echo 
    'produce="' findIGP($row['produce']) . '" '
    echo 
    '/>';
    }

    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Fantastico Magicale!
    Grazie mille...

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Immagino che questa sia la chiave:

    Codice PHP:
    if (strpos($p,"IGP")!==false$prodotti[]= $p
    Nel caso i termini sono due o più, come si adatta?

  8. #8
    In maniera molto grezza, così:

    Codice PHP:
    if (strpos($p,"termine1")!==false || strpos($p,"termine2")!==false || strpos($p,"termine3")!==false$prodotti[]= $p
    Alessandro
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Rustica ma funzionante....grazie ancora!

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.