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

    Link da funzione explode

    Buon pomeriggio.
    Sono su questo codice:
    Codice PHP:
    require("config.inc.php");

    function 
    parseToXML($htmlStr

    $xmlStr=str_replace('<','&lt;',$htmlStr); 
    $xmlStr=str_replace('>','&gt;',$xmlStr); 
    $xmlStr=str_replace('"','&quot;',$xmlStr); 
    $xmlStr=str_replace("'",''',$xmlStr); 
    $xmlStr=str_replace("&",'&amp;',$xmlStr); 
    return 
    $xmlStr

    return 
    $xmlStr


    $connection=mysql_connect (localhost$db_user$db_password);
    if (!
    $connection) {
    die(
    'Non connesso : ' mysql_error());
    }

    $db_selected mysql_select_db($db_name$connection);
    if (!
    $db_selected) {
    die (
    'database non selezionato : ' mysql_error());
    }

    function 
    findDOP($produce_row) { 
    $prodotti=array(); 
    $produce explode(',',$produce_row); 
    foreach(
    $produce as $p

    if (
    strpos($p,"Pane di Altamura Dop")!==false || strpos($p,"Pane di Altamura DOP")!==false$prodotti[]= $p

    return 
    implode(",",$prodotti); 
    }

    $query "SELECT * FROM v3_azienda LEFT JOIN v4_anagrafica_comuni ON (v3_azienda.comune_v4=v4_anagrafica_comuni.id) WHERE produce LIKE '%Pane di Altamura DOP%'";
    $query2 "SELECT Latitudine,Longitudine FROM v4_anagrafica_comuni";
    $query3 "SELECT produce FROM v3_azienda";
    $result mysql_query($query);
    if (!
    $result) {
    die(
    'Query invalida: ' mysql_error());
    }

    header("Content-type: text/xml");
    $url'http://www.xxx.it/test/scheda_azienda.php?denom=';
    $url2'http://www.xxx.it/test/scheda_prodotto2.php?nome=';

    echo 
    '<markers>';

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

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

    echo 
    '</markers>'
    In queste condizioni, $url2 prende tutti i prodotti presenti alla voce "produce".
    Con la funzione explode sono riuscito a selezionare e far visualizzare solo il prodotto che mi interessa.
    Ciò che non riesco a fare è applicare questa selezione anche al $url2, ovvero predisporre un collegamento alla sola scheda del prodotto visualizzato.

    Grazie

  2. #2
    Non capisco bene... spiegati meglio.

    Vuoi una lista dei prodotti risultanti, ognuno separato e con il proprio link alla scheda del prodotto?

    Poi utilizzi il nome del prodotto come identificativo?
    Non utilizzi un ID numerico o un Codice?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Sull'errato uso del nome hai ragione, ma purtroppo ho ereditato questa "cosa" e me ne sto facendo una ragione.

    Il tutto gira in funzione di un posizionamento su GoogleMaps.
    In pratica lo script prende i dati che servono, azienda con i riferimenti e ciò che produce (in questo caso solo il "Pane di Altamura"), e li trascrive su un file XML.

    Le due stringhe:
    Codice PHP:
    $url'http://www.xxx.it/test/scheda_azienda.php?denom='
    $url2'http://www.xxx.it/test/scheda_prodotto2.php?nome='
    mi servono, appunto, per linkare l'azienda ed il prodotto alla propria scheda.

    Il punto è che $url2 mi genera un link inesistente, poichè non tutte le aziende nel campo "produce" hanno un solo prodotto
    (es.: http://www.xxx.it/test/scheda_prodot...20grano%20duro)

  4. #4
    Mah, il tuo script si va a prendere tutti i prodotti aggregati insieme; di conseguenza è rognoso starli a separare.

    Dovresti fare una explode su 'produce' e ciclare l'array risultante con un altro while, in modo da discriminare, ad ogni iterazione, un prodotto; metti quindi nel while quello che vuoi per ogni singolo prodotto.

    Ci vuole sì il while che scorre le aziende, ma poi fai la explode sui prodotti e fai un while anche su quelli e stampando separatamente i link (a quel punto nell'array hai i prodotti separati).

    Oppure cercherei un modo più furbo di scrivere la query, in modo che restituisca già la lista dei prodotti (magari ordinati per azienda). Li scorri tutti, controllando ogni volta l'azienda del prodotto, e quando cambia scrivi il nome e il link della nuova azienda.
    Ma mi pare di capire che non c'è una tabella di associazione tra prodotti e aziende.... ma i prodotti sono scritti direttamente nel campo 'produce' dell'azienda, separati da virgola.

    Con quella struttura del DB mi sa che ti trovi un monte di rogne... sono odiose le situazioni in cui ti devi lavorare sul codice di un incompetente...

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    Mi sta venendo da piangere.

    Man mano che vado avanti in questa cosa, scopro altre porcherie fatte, incasinamenti tra campi e tabelle...roba da mettersi le mani nei capelli!

  6. #6
    Con questa ottieni un array contenente i link ai singoli prodotti, credo...
    Codice PHP:
    function urlArray($produce_row$url) {
        
        
    $prodotti explode(','$produce_row);
        
        foreach(
    $prodotto as $p)
            
    $url2[] = str_replace('<PRODOTTO>'$p$url);
        
        return 
    $url2;
    }

    ...
    ..
    .

    header("Content-type: text/xml");
    $url'http://www.xxx.it/test/scheda_azienda.php?denom=';
    $url2'http://www.xxx.it/test/scheda_prodotto2.php?nome=';

    $url2 urlArray($row['produce'], $url2."<PRODOTTO>");


    echo 
    '<markers>';

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

    echo 
    '<marker ';
    echo 
    'name="  ' parseToXML($row['denom']) . '" ';
    echo 
    'coll="' parseToXML($url) . $row['denom'] . '" ';
    for(var 
    $i=1$i <= sizeof($url2); $i++)
        echo 
    "coll_pr$i=\"" parseToXML($url2) . "$row[produce]\" ";
    echo 
    'address="  ' parseToXML($row['indirizzo']) . '" ';
    echo 
    'comune="' parseToXML($row['comune']) . '" ';

    ....
    ...
    .. 
    Così ti ritrovi la lista di nodi coll_prN che ti indica i prodotti...

    Facci sapere se ti va bene....

  7. #7
    Originariamente inviato da BullFrog
    Mi sta venendo da piangere.
    Lo fa... non ti preoccupare

    Man mano che vado avanti in questa cosa, scopro altre porcherie fatte, incasinamenti tra campi e tabelle...roba da mettersi le mani nei capelli!
    Mi son capitate spesso situazioni simili.... è da suicidio, e tutte le sere arrivi con il mal di testa per capire cosa è stato fatto o come rimediare.
    Poi dopo una settimana ti abitui al codice e ti ci muovi meglio....

    Dai, almeno puoi giustificare eventuali ritardi scaricando la colpa addosso all'incompetenza di altri (se è stato fatto un prodotto rigido, non versatile e fuori dalle regole della normalizzazione non è colpa tua).

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.