Visualizzazione dei risultati da 1 a 8 su 8

Discussione: query con apice

  1. #1

    query con apice

    Salve,

    Ho un problemuccio su una query e non ho la più pallida idea di come risolverlo.

    Praticamente sto creando un sito di annunci (compravendita informatica), ed ho problemi a gestire l'url di una regione, la Valle d'Aosta che contiene un apice, e come tutti sappiamo ciò crea immensi problemi con MySQL in quanto la query fallisce a meno che non venga fatta con doppio apice.

    Adesso dato il database così composto:https://www.dropbox.com/s/du1weqi2tv...aseregioni.png

    Cosa posso fare affinchè l'url di ricerca della valle d'aosta funzioni correttamente?

    Per capire meglio l'errore che si genera lascio il dominio del sito tecnomercatino.it, senza link per evitare spam inutile, basta cliccare su valle d'aosta sull'homepage e si palesa subito l'errore. Se si sostituisce nella barra degli indirizzi "valle d'aosta" con ''valle d''aosta" tutto funziona (tranne un paio di errori di stampa facilmente risolvibili).

    Il problema è che far generare in automatico il link a "valle d''aosta" è un casino in quanto uso un CMS e i link se li autogenera attingendo al nome delle regioni nel database.

    Ho notato che alcuni siti di annunci famosi gestiscono l'url della valle d'aosta come valle-d-aosta... ma non saprei come farlo sul mio sito

    Qualsiasi aiuto è ben accetto^^

    Grazie in anticipo.

    PS: se servono spezzoni di codice o altri screenshot per capire meglio il problema fatemi sapere

  2. #2
    quando generi il link devi raddoppiare l'apice. dato che non ci hai detto con quale linguaggio hai fatto il sito non possiamo darti suggerimenti pratici (ma il concetto l'hai capito, quindi...)

  3. #3
    Per linguaggio intendi se è in PHP o ASP o altro no?
    Il sito è in PHP, utilizza la versione 5.4, sì il concetto l'ho capito, ma ci sono un po' di problemini a metterlo in atto, proprio a causa dell'utilizzo di un CMS xD (OSclass).

    Dovrei andare a modificare direttamente le funzioni che generano i link, e ciò non è proprio semplicissimo, almeno per le mie scarse conoscenze di PHP javascript e SQL xD

    EDIT: Ma se volessi completamente stravolgere il sistema di generazione dei link, e fare in modo che il link sia valle-d-aosta, devo inserire valle-d-aosta nel database e poi operare dei strcasecmp e far stampare al posto di valle-d-aosta --> valle d'aosta no?
    Oppure c'è un metodo più elegante di fare ciò? xD

  4. #4
    il database in questo caso non c'entra niente, è tutta questione di linguaggio. puoi provare a chiedere direttamente ai produttori del CMS, oppure provare a fare da te cimentandoti con gli script in PHP che stanno dietro al CMS (in questo caso ti conviene prima identificare qual è lo script che genera i link, poi postare nella sezione PHP)


  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non so se serva. Anche Oracle ha bisogno di una attenzione particolare per certi caratteri. In una vecchia tabella Oracle di Regioni, ho trovato infatti la regione Val d`Aosta, scritta usando il carattere 96 invece dell'apice (carattere 39).
    A me non piace come sistema, ma forse risolve il problema

    Pietro

  6. #6
    raddoppiare gli apici risolve il problema, non puoi stare a cambiare ogni apice ' con `...

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    raddoppiare gli apici risolve il problema, non puoi stare a cambiare ogni apice ' con `...
    beh! sono perfettamente d'accordo. E ti posso assicurare che non ho mai avuto fastidi da tutti quei carattere particolari tipo apice, percento, parentesi quadra e altro...

    Però è pur vero che ho trovato quella soluzione da una collega che, forse, l'ha appresa in un corso...

    Perciò, magari provvisoriamente, forse potrebbe essere utile.
    Pietro

  8. #8
    Ok ho trovato diciamo una soluzione abbastanza indolore

    In realtà come diceva optime è più un problema di php, e infatti tale soluzione la trovate anche qui: http://forum.html.it/forum/showthrea...=&pagenumber=2

    La riposto qui per comodità, ovviamente funziona sul CMS che uso io, ovvero OSclass, comunque potete prendere spunto

    Praticamente bisogna andare a modificare questa funzione:


    Codice PHP:
    function osc_region_url(); 
    che è contenuta in OC-includes/osclass/helpers/hlocation.php

    e implementarla così:

    Codice PHP:
    function osc_region_url()  
        { 
            if ( 
    osc_rewrite_enabled() ) { 
                
    $url osc_base_url(); 
                if( 
    osc_get_preference('seo_url_search_prefix') != '' ) { 
                    
    $url .= osc_get_preference('seo_url_search_prefix') . '/'
                } 
                
    $url .= osc_sanitizeString(osc_region_name()) . '-r' osc_region_id(); 
                return 
    $url
            } else { 
                return 
    osc_search_url( array( 'sRegion' => osc_region_id() ) ); 
            } 
        } 
    Piccola descrizione (le funzioni osc_region_id() e osc_region_name() prendono ID e nome dal database), se servono ve le posto^^

    Praticamente la query viene eseguita per ID e non più per nome, e poi viene generato un friendly url così composto /nomeregione r-IDregione/

    Inoltre visto che se avete questo problema 100 su 100 avrete anche un problema sulla ricerca( cercando province o regioni con l'apostrofo non ve le trova) vi posto anche il codice che ho usato per ovviare al problema:

    Andate in oc-content/themes/ilvostrotema/search.php

    trovate qualcosa di simile a questo

    Codice PHP:
    <div class="row one_input"> 
                                    <h6><?php _e('City''italia'); ?></h6> 
                                    <input type="text" id="sCity" name="sCity" value="<?php echo  osc_search_city(); ?>" /> 
                                </div>
    E sostituitelo con questo:


    Codice PHP:
    <div class="row one_input"> 
                                    <h6><?php _e('City''modern'); ?></h6> 
                                    <?php 
                                            $aRegions 
    Region::newInstance()->getByCountry('IT'); 
                                            if(
    count($aRegions) > ) {  
                                            echo 
    '<select name="sCity" id="sCity">'."\n" 
                                                
    .'<option value="">Tutte le Province</option>'."\n"
                                            foreach(
    $aRegions as $region) { 
                                            echo 
    '<optgroup label="'.$region['s_name'].'">'."\n"
                                                
    $aCities City::newInstance()->getByRegion($region['pk_i_id']); 
                                              foreach(
    $aCities as $city)           
                                            echo 
    '<option value="'.$city["pk_i_id"].'">'.$city["s_name"]."</option>\n"
                                          echo 
    "</optgroup>\n"
                                            } 
                                            echo 
    "</select>\n"
                                          } 
                                        
    ?> 
                                </div>
    Se avete usato una rollover map come ho fatto io dovete andare a modificare i singoli link alle regioni

    In teoria altri problemi (almeno per regioni e province non dovrebbe darvene)

    Se vi servono dei file con funzioni che vengono usate qui chiedete pure, intanto non sono un mistero per nessuno, il CMS è opensource

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.