Tranquillo.
Cambia questo header("Content-Type: application/json; charset=UTF-8"); in header("Content-Type: text/plain; charset=UTF-8");
Tranquillo.
Cambia questo header("Content-Type: application/json; charset=UTF-8"); in header("Content-Type: text/plain; charset=UTF-8");
Quindi lo script senza alcun echo non produce output, dobbiamo riscrivere i probabili errori e comunque creare una risposta json valida poiché il testo non è un json valido. (Sto pensando ad un problema di Output Control (buffer php per la funzione fetch_all se fosse vero è un bug php)).
Hai controllato se ti crea il file json senza alcun problema?
In quella select che non prevede valore dinamici non devi utilizzare i Prepared Statements https://dev.mysql.com/doc/apis-php/e...0and%20execute.
Comunque per bind_param le s indicano stringa e ne devo mettere quante sono le occorrenze per ogni occorrenza di una colonna o un valore ma la sintassi te la prepara la funzione prepare dove dovrai usare i placeholders il carattere punto interrogativo se valore o doppio punto interrogativo se colonna.
https://www.php.net/manual/en/mysqli...statements.php
Ultima modifica di darbula; 01-09-2020 a 22:12
Troppo strano
La cosa strana è che ,anche modificando header , se ho 10000 funziona, ma se aggiungo 1000000 pagina bianca
Codice PHP:
header("Content-Type: text/plain; charset=UTF-8");
$obj = json_decode($_GET["x"], false);
$conn = new mysqli("localhost", "root", "", "test");
$conn->set_charset("utf8");
$stmt = $conn->prepare("SELECT `dataOrdine`, nOrdine, `ImportoOrdine`, `importoWeb`, `documentoWeb`, `dataWeb`, `daRendere`, `piattaforma`, `tipoPagamento`, dataRimborso, importoRimborso, eshop, riferimento,ndocWeb, corriere FROM report_crediti WHERE (stato='Spedito' OR stato='Completato' OR stato='Ritirato') ORDER BY dataOrdine DESC LIMIT 1000000");
$stmt->bind_param("iiiiiiiiiiiii",$obj->table);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
//echo json_encode($user);
$json_data = json_encode($outp);
file_put_contents('../app-assets/data/ordini_def3.json', $json_data);
Mentre l'altro script stessa cosa pagina bianca :
Codice PHP:
error_reporting(-1);
header("Content-Type: text/plain; charset=UTF-8");
$obj = json_decode($_GET["x"], false);
$conn = new mysqli("localhost", "root", "", "test");
$conn->set_charset("utf8");
if(($result = $conn->query("SELECT dataOrdine, nOrdine, ImportoOrdine, importoWeb, documentoWeb, dataWeb, daRendere, piattaforma, tipoPagamento, dataRimborso, importoRimborso, eshop, riferimento, ndocWeb, corriere
FROM report_crediti WHERE (stato='Spedito' OR stato='Completato' OR stato='Ritirato') ORDER BY dataOrdine")) !== false) {
if(is_array(($outp = $result->fetch_all(MYSQLI_ASSOC)))) {
$json_data = json_encode($outp);
file_put_contents('ordini_def.json', $json_data);
} else {
echo 'not array';
}
} else {
printf("Error message: %s\n", $conn->error);
Ultima modifica di Werwolfe; 02-09-2020 a 00:18
La pagina bianca perché ti sembra un errore? Stai forse stampando qualcosa su schermo? Con il mio codice no e quindi funziona tutto perfettamente anzi se leggi qualcosa dovrebbe essere l'errore della query o fetch_all non è un array questo si che indica un errore.
Una risposta json non può essere vuota o del semplice testo ma bensì un'oggetto json.
Il file json dalla funzione file_put_contents viene creato ed è un'oggetto json valido? (Leggi il file con il tuo browser e dovrebbe dirtelo).
Non devi usare i Prepared Statements lì è senza.
Ultima modifica di Alhazred; 02-09-2020 a 09:25
Fatto, non da nessun errore boh
Ho provato la query e funziona, non riesco a capire.Codice PHP:
error_reporting(-1);
header("Content-Type: text/plain; charset=UTF-8");
$obj = json_decode($_GET["x"], false);
$conn = new mysqli("localhost", "root", "", "test");
$conn->set_charset("utf8");
if(($result = $conn->query("SELECT dataOrdine, nOrdine, ImportoOrdine, importoWeb, documentoWeb, dataWeb, daRendere, piattaforma, tipoPagamento, dataRimborso, importoRimborso, eshop, riferimento, ndocWeb, corriere
FROM report_crediti WHERE stato='Spedito' OR stato='Completato' OR stato='Ritirato' ORDER BY dataOrdine")) !== false) {
if(is_array(($outp = $result->fetch_all(MYSQLI_ASSOC)))) {
echo $json_data = json_encode($outp);
file_put_contents('ordini_def.json', $json_data);
echo 0;
} else {
echo 'not array';
}
} else {
printf("Error message: %s\n", $conn->error);
}
Cqm Grazie sempre per il supporto, ma come posso risolvere?
Sostituisci con questo.
header("Content-Type: application/json; charset=UTF-8");
Beh se lato server funziona probabilmente non viene creato un file json valido per questo motivo se lo stampi il browser ti segnala l'errore.
Discorso diverso se apri il file json ordini_def.json generato in un altro scrip php comprensivo di header e il browser non segnala errore... fai questo test e poi semmai il problema sarà il buffer php.
Ultima modifica di darbula; 02-09-2020 a 11:24
Sì, ma a questo punto devi anche mostrare il codice JS che usi per inviare la richiesta e recuperare la risposta del server, in modo da capire meglio come eseguire il debug.