Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [mySql] Problema campi contenenti apici. Come scrivere il record?

    Ciao ragazzi

    Ho realizzato una pagina PHP che legge da un database MySQL tutte le nazioni, regioni, province e città del mondo.

    Ho codificato tutto con UTF-8 (database, tabella, pagina PHP, codifica HTML) e ho pure messo mysql_set_charset('utf8') e anche mysql_query("SET NAMES 'UTF8'")...

    Riesco a leggere tutto correttamente, ma non riesco a scrivere il valore appena letto su un'altra tabella (anch'essa codificata con UTF-8) quando in mezzo al valore appena letto ci sono degli apici.

    Ecco degli esempi:
    'Ayn ad-Dafla
    'Ayn Tīmūšanat

    Ho provato a risolvere la cosa inserendo la funzione $regione=addslashes($regione); ma non cambia nulla.

    Qualcuno sa indicarmi dove sbaglio?
    Qualche suggerimento?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    http://php.net/manual/en/function.my...ape-string.php

    edit. C'è anche una pillola di luca200 a riguardo nella sezione php.

    http://forum.html.it/forum/showthrea...ostid=10166292

  3. #3
    Originariamente inviato da nicola75ss
    [url]http://php.net/manual/en/function.mysql-real-escape-string.php
    Ciao, grazie per la considerazione

    Ho appena usato la funzione da te suggerita ma non cambia nulla, mi da gli stessi risultati di addslashes...

    Ora provo a dare un'occhiata al resto...

    Eppure metto queste funzioni prima della query di scrittura!

    Dove sbaglio?!

  4. #4
    Originariamente inviato da nicola75ss
    C'è anche una pillola di luca200 a riguardo nella sezione php.

    http://forum.html.it/forum/showthrea...ostid=10166292
    Ho dato un'occhiata a quell'articolo, ho usato la funzione suggerita ma non cambia nulla...
    Altri suggerimenti?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Bisognerebbe vedere il codice che usi ma la discussione dovrebbe andare in php. Segnalala a un moderatore di sezione affinchè ti sposti visto che il crossposting è vietato.

  6. #6
    Che faccio? Posto il codice?
    E poi come faccio a contattare un moderatore?

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    State parlando di me ? [cit.]

    Sposto in php

  8. #8
    Eccoti accontentato

    Questo è il codice per la lettura del dato:

    codice:
    <meta http-equiv=”Content-Type” content=”text/html; charset="UTF-8" />
    
    <?php
    //Mi collego al database
    $connessione=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host");
    mysql_select_db($database,$connessione) or die ("Errore di connessione al database $database");
    
    //Dico a MySQL quale codifica usare per salvare i dati nel database
    mysql_set_charset('utf8');
    mysql_query("SET NAMES 'UTF8'");
    
    //Prelevo il nome della città
    $citta = "SELECT city FROM cities WHERE country='$nazione' ORDER BY city ASC";
    $result = mysql_query($citta,$connessione);
    while($citta = mysql_fetch_array($result))
    {
     echo "<option value='".$citta[0]."'>".$citta[0]."</option>";
    }
    echo '  </select>';
    ?>

    ...questo il codice per la scrittura del dato (che si trova in un'altra pagina, il dato arriva tramite POST):
    codice:
    <meta http-equiv=”Content-Type” content=”text/html; charset="UTF-8" />
    
    <?php
    //Mi collego al database
    $connessione=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host");
    mysql_select_db($database,$connessione) or die ("Errore di connessione al database $database");
    
    //Dico a MySQL quale codifica usare per salvare i dati nel database
    mysql_set_charset('utf8');
    mysql_query("SET NAMES 'UTF8'");
    
    $citta = addslashes($citta);
    $citta = mysql_real_escape_string($citta,$db);
    
    //Scrivo la cittÃ* scelta sulla tabella delle ricerche
    $update = mysql_query("UPDATE ricerca SET citta='$citta' WHERE id='$id_utente'");
    Come vedi ho usato sia addslashes e sia mysql_real_escape_string ma l'errore di salvataggio c'è sempre.

    Insomma, il campo viene salvato nel record ma non viene salvato per intero!
    Infatti se la città di chiama ad esempio Qal'eh-ye Naw verrà scritto nel db solo la parte prima dell'apice cioè Qal...

    Com'è possibile?
    Dove sbaglio?

    Grazie ancora per l'aiuto

  9. #9
    O usi addslashes() o usi mysql_real_escape_string().

    Poi in uscita il dato lo visualizzi con stripslashes().

  10. #10
    Originariamente inviato da Samleo
    O usi addslashes() o usi mysql_real_escape_string().

    Poi in uscita il dato lo visualizzi con stripslashes().
    Li ho messi entrambi quì sul forum, ma in realtà ho usato prima uno e poi l'altro: il risultato non è cambiato.

    La visualizzazione del dato non serve farlo con stripslashes perchè non ho degli slashe da togliere, ho invece degli apici che danno fastidio.
    (Infatti ho provato e non cambia nulla).

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.