Visualizzazione risultati 1 fino 10 di 10

Discussione: Problema nel caricare una tabella da PHPMyAdmin in JSON

  1. #1
    Guest

    Predefinito Problema nel caricare una tabella da PHPMyAdmin in JSON

    Buon giorno a tutti, ho un problema che non riesco proprio a risolvere! Inizialmente pensavo fosse dovuto al mio codice java, ma oggi ho provato uno script PHP diverso e ho notato che il problema è proprio nella risposta del mio database. Sostanzialmente non mi riesco a caricare tutte le colonne ma qualcosa a "caso".

    il mio script PHP è il seguente
    Codice PHP:
    <?php
    $host
    ='localhost';
    $uname='la mia username';
    $pwd=' la mia password del database';
    $db="il mome del mio database";

    $select=$_REQUEST['id'];
    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");

    $r=mysql_query($select,$con);

    while(
    $row=mysql_fetch_array($r))
    {
    $flag[]=$row;
    }

    print(
    json_encode($flag));
    mysql_close($con);
    ?>
    quindi quando vado ad "eseguirlo" la risposta è la seguente:

    [{"newsId":"1","newsTitle":"Celiachia al femminile: ecco i sintomi da non sottovalutare.","newsDescription":"","newsBody":nu ll,"newsSource":"http:\/\/www.today.it","newsDate":"2015-09-19"},{"newsId":"2","newsTitle":null,"newsDescripti on":null,"newsBody":null,"newsSource":"http:\/\/www.elle.it","newsDate":"2015-08-30"}]

    Che non riesco proprio a capire perchè carica cose così saltuariamente

    Spero in un vostro aiuto

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

    Predefinito

    In che tabella hai i dati salvati? cos'è
    Codice:
    $select=$_REQUEST['id'];
    sintassi
    Codice:
    $r=mysql_query("SELECT nome_colonna1,nome_colonna2,nome_colonna3 FROM mia_tabella where nome_colonna = 1",$con);
    se l'id è diverso da un numero va racchiuso tra apici singoli. Spero che sia questo il problema.
    Ultima modifica di darbula : 23-09-2015 alle ore 14.26.08

  3. #3
    Guest

    Predefinito

    I dati salvati sono in una unica tabella chiamata 'news'. Dove ci sono 5 colonne: ID - title - description - body - source - date.

    Codice PHP:
    $select=$_REQUEST['id'];
    è l'inizializzazione della mia query per richiamare tutte le colonne dove è presente un id, quindi sarà sempre "positiva".

    Ma adesso provo come hai detto tu ;)

  4. #4
    Guest

    Predefinito

    Ho provato come hai detto tu, ma la risposta JSON è sempre la stessa:

    [{"0":"1","ID":"1","1":"Celiachia al femminile: ecco i sintomi da non sottovalutare.","title":"Celiachia al femminile: ecco i sintomi da non sottovalutare.","2":"","description":"","3":null," body":null,"4":"http:\/\/www.today.it","source":"http:\/\/www.today.it","5":"2015-09-19","date":"2015-09-19"}]

    e ovviamente ha selezionato solo la riga con ID = 1

    facendo così:
    Codice PHP:
    $r=mysql_query("SELECT ID, title, description, body, source, date FROM news WHERE ID = 1",$con);

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

    Predefinito

    come salvi i dati su mysql? quando finisco di lavorare lo provo

  6. #6
    Guest

    Predefinito

    Come salvo in che senso?

    faccio prima a farti vedere lo screen:


    che ha questo contentuto:
    Ultima modifica di notizieappandroid : 23-09-2015 alle ore 17.05.34

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

    Predefinito

    aspetta questa funzione
    Codice PHP:
    mysql_fetch_array
    o usi
    Codice PHP:
    mysql_fetch_assoc($r)
    o
    Codice PHP:
    mysql_fetch_array($r,MYSQL_ASSOC)
    crea un doppio array
    Codice PHP:
    $row[0]
    e
    Codice PHP:
    $row['ID']
    che sono uguali, cmq le colonne sono 6. ps. ovviamente poi fai la stampa di $row diretta senza while per recuperare una singola riga da una o più colonne al termine sia che recuperi una o più righe (in questo caso usa il while) utilizza anche mysql_free_result(). Infine sei hai tempo passa a mysqli. Non capisco perché body accetta valori null visto che hai impostato no null.
    Ultima modifica di darbula : 24-09-2015 alle ore 00.44.25

  8. #8
    Guest

    Predefinito

    Provo a seguire le tue direttive, sperando di averci capito qualcosa! ahahah Grazie dell'aiuto.

    Ho fatto qualcosa del genere, dimmi se va bene:
    Codice PHP:
    <?php
    $host
    ='localhost';
    $uname='Username per accedere nel database';
    $pwd='Password del database';
    $db='Nome del database';

    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");

    $r=mysql_query("SELECT ID, title, description, body, source, date FROM news",$con);

    $row = mysql_fetch_array($r,MYSQL_ASSOC);
    print(
    json_encode($row));

    while(
    $row)
    {
    $flag[]=$row;
    }

    print(
    mysql_free_result($flag));

    print(
    json_encode($flag));
    mysql_close($con);
    ?>
    Il risultato è il seguente:
    {"ID":"1","title":"Celiachia al femminile: ecco i sintomi da non sottovalutare.","description":"","body":null,"sour ce":"http:\/\/www.today.it","date":"2015-09-19"}
    Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 36 bytes) in /membri/notizieappandroid/visualizza.php on line 17
    Ultima modifica di notizieappandroid : 24-09-2015 alle ore 11.11.10

  9. #9
    Guest

    Predefinito

    Credo che sia il JSON a dare dei problemi, perchè non riesce a recuperare un tot di caratteri. Infatti ho usato anche MySQLi

    Codice PHP:
    <?php
    $mysqli
    = mysqli_connect("", " ", "", "");
    if (
    mysqli_connect_errno($mysqli)) {
    echo
    "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    if (!(
    $stmt = $mysqli->prepare("SELECT * FROM news"))) {
    echo
    "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }

    if (!
    $stmt->execute()) {
    echo
    "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    if (!(
    $res = $stmt->get_result())) {
    echo
    "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    for (
    $row_no = 0; $row_no <= $res->num_rows; $row_no++) {
    $res->data_seek($row_no);
    echo
    json_encode($res->fetch_assoc());
    }

    $res->close();

    ?>
    e il risultato è sempre lo stesso:

    {"ID":1,"title":"Celiachia al femminile: ecco i sintomi da non sottovalutare.","description":"","body":null,"sour ce":"http:\/\/www.today.it","date":"2015-09-19","syncsts":0}{"ID":2,"title":null,"description" :null,"body":null,"source":"http:\/\/www.elle.it","date":"2015-08-30","syncsts":0}null

    con un null in più alla fine ahahaha

  10. #10
    Guest

    Predefinito

    Grazie darbula dell'aiuto. Ho risolto, cercando un po in rete, aggiungendo questa riga prima della query:

    Codice PHP:
    mysql_query('SET CHARACTER SET utf8');
    Più in generale lo script è questo:

    Codice PHP:
    <?php
    $host
    ='host del database';
    $uname='username per accedere nel database';
    $pwd='password del database';
    $db='nome del database';

    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");

    mysql_query('SET CHARACTER SET utf8');
    $r=mysql_query("SELECT ID, title, description, body, source, date FROM news",$con);

    while(
    $row = mysql_fetch_array($r,MYSQL_ASSOC))
    {
    $flag[]=$row;
    }

    print(
    json_encode($flag));
    mysql_close($con);
    ?>
    Ultima modifica di notizieappandroid : 24-09-2015 alle ore 16.41.34

Regole di scrittura

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