Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 43 di 43

Discussione: Problemi con database di AlterVista

  1. #31
    Guest

    Predefinito

    Ho provato a mettere ciò che hai scritto in cima alla pagina ed effettivamente funziona, deve essere un problema di MySQL si allora...
    Magari nel passaggio da un file all'altro? boh non ne ho idea

    EDIT: Ho provato a far printare il testo di quel record in cima all'index, e mi viene fuori lo stesso errore... mentre con la tua prova funziona correttamente.
    Ultima modifica di competenzepertutti : 23-10-2015 alle ore 21.35.18

  2. #32
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    L'header dove lo posizioni? Se hai degli include con output deve stare prima. Devi inserirlo sia nella pagina html cioè dove fai la richiesta ajax e data.php e se la risposta è in una pagina differente allora anche li. prova così
    Codice PHP:
    error_reporting(E_ALL | E_NOTICE | E_STRICT | E_DEPRECADED);
    ini_set("display_errors" , "stdout");
    ini_set("display_startup_errors" , 1);
    header('Content-type: text/html; charset=UTF-8');
    ps. modifica il $_POST['msg'] come detto precedentemente. Il problema è che quei dati sono letti sempre in iso-8859-1 mentre se fossero letti in utf-8 sarebbero ok!!
    EDIT: Se i dati sono salvati in utf-8 dentro mysql, prova a prelevarli e stampare su una pagina diversa (header,select). Se i dati sono diversi da utf-8 vuole dire che mysql prende i dati utf-8 e li modifica in iso-8859-1 solo per la visualizzazione.
    Ultima modifica di darbula : 24-10-2015 alle ore 15.30.44

  3. #33
    Guest

    Predefinito

    Ho provato a mettere il codice che mi hai fornito prima di qualsiasi cosa, in pratica il mio file inizia così:

    Codice PHP:
    <?php
    error_reporting
    (E_ALL | E_NOTICE | E_STRICT | E_DEPRECADED);
    ini_set("display_errors" , "stdout");
    ini_set("display_startup_errors" , 1);
    header('Content-type: text/html; charset=UTF-8');

    Se i dati sono salvati in utf-8 dentro mysql, prova a prelevarli e stampare su una pagina diversa (header,select). Se i dati sono diversi da utf-8 vuole dire che mysql prende i dati utf-8 e li modifica in iso-8859-1 solo per la visualizzazione.
    Io penso sia la seconda ipotesi...

  4. #34
    Guest

    Predefinito

    Secondo me ci vorrebbe una risposta da qualche amministratore che sappia bene come funziona MySQL qui su altervista, visto che in locale (ho la versione più nuova sia di PHP che di MySQL) funziona tutto alla perfezione...

  5. #35
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Ho fatto uno script di testo, e funziona correttamente.

    Se ti va di provarlo, il codice che ho fatto è questo:
    Codice PHP:
    <?php
    header
    ('Content-type: text/html; charset=UTF-8');

    $mysqli = new mysqli('localhost', 'alemoppo', '', 'my_alemoppo');

    $mysqli->query('CREATE TABLE IF NOT EXISTS charsettest (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    testo VARCHAR(255)
    )'
    );

    if(isset(
    $_POST['insert']))
    if(!
    $mysqli->query('INSERT INTO charsettest (testo) VALUES (\''.$mysqli->escape_string($_POST['insert']).'\')'))
    echo
    $mysqli->error;
    ?><!doctype html>
    <head>
    <title> test charset</title>
    </head>

    <body>
    Contenuto attuale: <br>
    <textarea>
    <?php
    $q
    = $mysqli->query('SELECT * FROM charsettest');
    while(
    $r = $q->fetch_assoc())
    echo
    $r['testo'].PHP_EOL;
    ?>
    </textarea><br>
    <label for="testo">Nuovo contenuto:</label>
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST">
    <input type="text" name="insert" value="" id="testo">
    <input type="submit" value="invia">
    </form>
    </body>
    </html>
    Ciao!

  6. #36
    Guest

    Predefinito

    Ho provato a fare copia e incolla del tuo codice ed è vero, appaiono correttamente ma se vai a guardare nel database vedi che ti ha inserito questi caratteri: Ã*èìòù€ invece che àèìòù€...
    Io ho bisogno che di scrivere le lettere così come sono, in modo che 1 lettera corrisponda ad 1 solo carattere nel database, visto che ho la necessità di limitare a numero esatto i caratteri massimi.
    Prova a sostituire nel database "Ã*èìòù€ " con "àèìòù€" e dimmi se ti funziona.

  7. #37
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    se non erro sulla sinassi select,creazione tabelle,insert si puo specificare il charset. cmq. così viene creata una tabella e il campo testo in latin1_swedish_ci.
    Citazione Originalmente inviato da competenzepertutti Visualizza messaggio
    Io ho bisogno che di scrivere le lettere così come sono.
    https://dev.mysql.com/doc/refman/5.0/en/char.html ciò non è esatto tu non limiti i caratteri ma i bytes che sono uguali in entrambi i casi. à in utf-8 è due bytes.prova con questo se puoi dopo la connessione a mysql.
    Codice PHP:
    mysqli_set_charset($con,"utf8")
    (a me funziona la visuale in utf-8 del script proposto prima). però sono convinto che quando si crea la insert/select si può specificare il charset. dunque dopo aver creato da phpmyadmin la tabella e il campo in utf8_general_ci prova così.
    Codice PHP:
    <?php
    header
    ('Content-type: text/html; charset=UTF-8');

    $mysqli = new mysqli('localhost', 'alemoppo', '', 'my_alemoppo');
    $mysqli->set_charset("utf8");

    $mysqli->query('CREATE TABLE IF NOT EXISTS charsettest (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    testo VARCHAR(255)
    )'
    );

    if(isset(
    $_POST['insert']))
    if(!
    $mysqli->query('INSERT INTO charsettest (testo) VALUES (\''.$mysqli->escape_string($_POST['insert']).'\')'))
    echo
    $mysqli->error;
    ?><!doctype html>
    <head>
    <title> test charset</title>
    </head>

    <body>
    Contenuto attuale: <br>
    <textarea>
    <?php
    $q
    = $mysqli->query('SELECT * FROM charsettest');
    while(
    $r = $q->fetch_assoc())
    echo
    $r['testo'].PHP_EOL;
    ?>
    </textarea><br>
    <label for="testo">Nuovo contenuto:</label>
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST">
    <input type="text" name="insert" value="" id="testo">
    <input type="submit" value="invia">
    </form>
    </body>
    </html>
    Ultima modifica di darbula : 25-10-2015 alle ore 22.35.29

  8. #38
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Avete provato come funziona? :) ps. scusate il doppio post. ma visto che il problema è stato risolto deve essere ben visibile.

  9. #39
    Guest

    Predefinito

    Ieri non ho avuto modo di provarlo, oggi lo provo e ti faccio sapere.

  10. #40
    Guest

    Predefinito



    Tutto sto casino e basta metterlo subito dopo la connessione :S

    Ho risolto con questo:
    Codice PHP:
    $mysqli = new mysqli('localhost', 'alemoppo', '', 'my_alemoppo');
    $mysqli->set_charset("utf8");
    Grazie mille per l'aiuto darbula ^^

  11. #41
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    prego l'ho fatto con piacere.. Ma il merito al 99% va ad alemoppo, ti ha accolto sin da subito, ti ha illustrato che l'inviò è in utf-8 da ajax, ha creato il codice esempio. Io ho solo cambiato una virgola!! Non importa se ho trovato la soluzione.. Per me il merito l'ho a alemoppo. Grazie!!! ps. se vuoi utf8 puoi racchiuderlo in apici singoli (in script più complessi guadagni in termine di prestazioni)
    Ultima modifica di darbula : 26-10-2015 alle ore 15.30.58

  12. #42
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ma il merito al 99% va ad alemoppo, ti ha accolto sin da subito, ti ha illustrato che l'inviò è in utf-8 da ajax,
    Ti stai confondendo con karl94, ma ok.

    Ciao!

  13. #43
    Guest

    Predefinito

    Perché c'è una netta differenza tra ' e "? Non lo sapevo!
    Ecco forse perché vedevo che utilizzavano sempre quelli singoli.

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •