- Home
- Categorie
- Coding e Sistemistica
- Coding
- problema php+ajax
-
problema php+ajax
Buongiorno a tutti, è il mio primo post qui sul forum e spero che non sia l'ultimo.
Sto cercando di fare una cosa un pò particolare che non ho mai fatto prima. La mia esperienza come sviluppatore web è poca ma ho fatto già qualche sito in precedenza.
Come sempre però mi voglio complicare la vita e percorrere la strada più difficile. Mi spiego:Sto realizzando un sito in cui vengono caricate e visualizzate informazioni riguardanti un artista compresa un immagine che dovrà rimanere sul database. ho già realizzato il codice ma putroppo quando richiamo l'immagine non riesco a visualizzarla. Ho scritto il codice in due pagine a parte per cercare meglio l'errore, ma anche così non capisco il problema.
Vi posto il codice:Questa è la pagina dove dovrei visualizzare l'immagine (mostra.php)
<html><head> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script src="../js/jquery-latest.js"></script> <script> $(document).ready(function(e) { onload = function() { $.ajax({ cache: false, type: 'POST', data: {"id" : "1"}, url: 'carica.php', success: function(a) { console.debug(a); $("#prova").append(a); }, error: function(e) { console.debug(e); } }); } }); </script> </head> <body> <div id="prova"></div> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,48,new Date().getTime(),"","","","",""]);</script> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,52,new Date().getTime(),"","","","",""]);</script> </body> </html>(il sito aggiunge in automatico uno script al body che io non ho. quindi quello non consideratelo)
questa invece è la pagina in cui carico l'immagine dal db (carica.php)
<?php <?php mysql_connect('localhost','root','') or die (mysql_error()); mysql_select_db('altraprova') or die (mysql_error()); $id = $_POST['id']; $query = "SELECT * FROM tabella_file WHERE id = " . $id; $risultato = mysql_query($query); $tmp = mysql_fetch_array($risultato); header("Content-Type: " . $tmp["tipo"]); echo $tmp["dati"]; ?>Quando apro la pagina mostra.php escono dei caratteri strani come se non prendesse il comando header Content-Type per la codifica. Non sò come risolvere. qualcuno ha idee?
-
@niciz said:
Buongiorno a tutti, è il mio primo post qui sul forum e spero che non sia l'ultimo.
Sto cercando di fare una cosa un pò particolare che non ho mai fatto prima. La mia esperienza come sviluppatore web è poca ma ho fatto già qualche sito in precedenza.
Come sempre però mi voglio complicare la vita e percorrere la strada più difficile. Mi spiego:Sto realizzando un sito in cui vengono caricate e visualizzate informazioni riguardanti un artista compresa un immagine che dovrà rimanere sul database. ho già realizzato il codice ma putroppo quando richiamo l'immagine non riesco a visualizzarla. Ho scritto il codice in due pagine a parte per cercare meglio l'errore, ma anche così non capisco il problema.
Vi posto il codice:Questa è la pagina dove dovrei visualizzare l'immagine (mostra.php)
> <html><head> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> <script src="../js/jquery-latest.js"></script> <script> $(document).ready(function(e) { onload = function() { $.ajax({ cache: false, type: 'POST', data: {"id" : "1"}, url: 'carica.php', success: function(a) { console.debug(a); $("#prova").append(a); }, error: function(e) { console.debug(e); } }); } }); </script> </head> <body> <div id="prova"></div> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,48,new Date().getTime(),"","","","",""]);</script> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,52,new Date().getTime(),"","","","",""]);</script> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,80,new Date().getTime(),"","","","",""]);</script> </body> </html> >``` (il sito aggiunge in automatico uno script al body che io non ho. quindi quello non consideratelo) questa invece è la pagina in cui carico l'immagine dal db (carica.php)<?php
<?php
mysql_connect('localhost','root','') or die (mysql_error());
mysql_select_db('altraprova') or die (mysql_error());$id = $_POST['id']; $query = "SELECT * FROM tabella_file WHERE id = " . $id; $risultato = mysql_query($query); $tmp = mysql_fetch_array($risultato); header("Content-Type: " . $tmp["tipo"]); echo $tmp["dati"];?>
Quando apro la pagina mostra.php escono dei caratteri strani come se non prendesse il comando header Content-Type per la codifica. Non sò come risolvere. qualcuno ha idee?
-
Ho notato che la password non è stata impostata e che deve essere "root".
La password è obbligatoria se stai lavorando in uno spazio web di sviluppoo installato in ambiente Windows anche se la connessione al database MySQL è diretta. -
$id devi passarlo così: id='".$id."'; $id deve essere contenuto i virgolette singole e concatenato (.) al resto del testo circondando .$id. con virgolette doppie, in alternativa poi scrivere id=$id
-
Per quanto riguarda la variabile $tmp e il codice associato non saprei dire ma credo che sia errata quella riga.
Prova a cercare qualcosa nel web meglio se nei siti americani.
-
-
@antoniog2 said:
- Ho notato che la password non è stata impostata e che deve essere "root".
La password è obbligatoria se stai lavorando in uno spazio web di sviluppoo installato in ambiente Windows anche se la connessione al database MySQL è diretta.
-
$id devi passarlo così: id='".$id."'; $id deve essere contenuto i virgolette singole e concatenato (.) al resto del testo circondando .$id. con virgolette doppie, in alternativa poi scrivere id=$id
-
Per quanto riguarda la variabile $tmp e il codice associato non saprei dire ma credo che sia errata quella riga.
Prova a cercare qualcosa nel web meglio se nei siti americani.
Ciao, grazie per la risposta. Pensavo non rispondesse più nessuno e quasi non seguivo più il post.
-
Non mi è mai capitato di avere problemi di quel tipo, e la connessione al db sono sicuro che avviene. infatti se apro la pagina "carica.php" riesco a visualizzare correttamente l'immagine.
-
Non ho capito dove intendi. comuqnue per fare una prova ho lasciato invariata la pagina "mostra.php" e in "carica.php" ho messo $id=1;
-
Il codice con $tmp dovrebbe essere corretto. Anche perchè, come già scritto sopra, aprendo la pagina "carica.php" riesco a visualizzare l'immagine
Il problema resta solo nella pagina "mostra.php" in cui non riesco a visualizzare la foto ma vedo tanti simboli strani. In pratica non riesce a capire che tipo di dati gli sto passando e li considera caratteri normali anzichè un immagine.
- Ho notato che la password non è stata impostata e che deve essere "root".
-
@niciz said:
Ciao, grazie per la risposta. Pensavo non rispondesse più nessuno e quasi non seguivo più il post.
-
Non mi è mai capitato di avere problemi di quel tipo, e la connessione al db sono sicuro che avviene. infatti se apro la pagina "carica.php" riesco a visualizzare correttamente l'immagine.
-
Non ho capito dove intendi. comuqnue per fare una prova ho lasciato invariata la pagina "mostra.php" e in "carica.php" ho messo $id=1;
-
Il codice con $tmp dovrebbe essere corretto. Anche perchè, come già scritto sopra, aprendo la pagina "carica.php" riesco a visualizzare l'immagine
Il problema resta solo nella pagina "mostra.php" in cui non riesco a visualizzare la foto ma vedo tanti simboli strani. In pratica non riesce a capire che tipo di dati gli sto passando e li considera caratteri normali anzichè un immagine.
Per quanta riguarda il punto 2 riguardando il codice forse ho preso un abbaglio io.
Non riesco a capire a cosa ti serve AJAX in mostra.php.
Sei sicuro che data: {"id" : "1"}, sia corretto? Credo che "id" sia definito in modo errato e che debba essere "#id". Non capisco se tale riga è codificata in modo corretto.Mi spiace credo che a questo punto non so aiutarti.
-
-
@antoniog2 said:
Per quanta riguarda il punto 2 riguardando il codice forse ho preso un abbaglio io.
Non riesco a capire a cosa ti serve AJAX in mostra.php.
Sei sicuro che data: {"id" : "1"}, sia corretto? Credo che "id" sia definito in modo errato e che debba essere "#id". Non capisco se tale riga è codificata in modo corretto.Mi spiace credo che a questo punto non so aiutarti.
Questo era solo una prima parte del codice. In seguito avrei voluto caricare una serie di immagini in maniera asincrona (e quindi con ajax). ma credo che dovrò affrontare la problematica in un altro modo.
Grazie mille per l'aiuto!
-
@niciz said:
Questo era solo una prima parte del codice. In seguito avrei voluto caricare una serie di immagini in maniera asincrona (e quindi con ajax). ma credo che dovrò affrontare la problematica in un altro modo.
Grazie mille per l'aiuto!Non credo che ti convenga usare AJAX per caricare le immagini con un modulo impostato con enctype="multipart/form-data" gestisci facilmente le immagini e se imposti uno script nel pannello di amministrazione puoi anche scegliere di approvare le immagini prima che vengano mostrate ai visitatori.
Io ho sviluppato un sito di annunci gratuiti dove però attivo il profilo dell'utente e gli consento di caricare tutte le immagini che vuole dalla sua area riservata ma poi dal pannelo di amministrazione posso scegliere quali immagini mantenere pubblicate e presenti nel db.
Con la programmazione ad oggetti viene fuori un programma niente male.Senti, desideravo porti una domanda OT rispetto al tuo argomento.
Io sto incontrando difficoltà con l'aggiornamento dell'email dell'utente se utilizzo la seguente query:"UPDATE login SET email='".$ne."' WHERE username_login='".$username."'"
Nel form ho 3 campi: username, email, nuovaemail.
A email passo l'email attuale mentre nuovaemail è la email che la deve sostituire.
Nella pagina ho impostato session_start() e alla pagina passo username che è $_GET['u'];Con la stessa query ho ottenuto il cambio della password.
Se imposto un cookie potrei riuscire a realizzare il cambio dell'indirizzo email?
Ai qualche consiglio da darmi in merito?
-
@antoniog2 said:
Non credo che ti convenga usare AJAX per caricare le immagini con un modulo impostato con enctype="multipart/form-data" gestisci facilmente le immagini e se imposti uno script nel pannello di amministrazione puoi anche scegliere di approvare le immagini prima che vengano mostrate ai visitatori.
Io ho sviluppato un sito di annunci gratuiti dove però attivo il profilo dell'utente e gli consento di caricare tutte le immagini che vuole dalla sua area riservata ma poi dal pannelo di amministrazione posso scegliere quali immagini mantenere pubblicate e presenti nel db.
Con la programmazione ad oggetti viene fuori un programma niente male.Senti, desideravo porti una domanda OT rispetto al tuo argomento.
Io sto incontrando difficoltà con l'aggiornamento dell'email dell'utente se utilizzo la seguente query:"UPDATE login SET email='".$ne."' WHERE username_login='".$username."'"
Nel form ho 3 campi: username, email, nuovaemail.
A email passo l'email attuale mentre nuovaemail è la email che la deve sostituire.
Nella pagina ho impostato session_start() e alla pagina passo username che è $_GET['u'];Con la stessa query ho ottenuto il cambio della password.
Se imposto un cookie potrei riuscire a realizzare il cambio dell'indirizzo email?
Ai qualche consiglio da darmi in merito?
Il mio interessamento per ajax in questa problematica ormai è puramente a scopo personale, visto che per il sito che sto realizzando ho deciso di utilizzare un altro metodo funzionante. Grazie comunque per il supporto

per la tua domanda:
Credo che i cookie siano un ottima alternativa alle session, ma da usare solo nel caso in cui quest'ultime non si possono usare. io ho sempre preferito le session. come mai tu vuoi cambiare?
Comunque non credo che ci siano grosse differenze nella gestione.Hai gia provato e hai riscontrato problemi?