Query di inserimento dati nel Database
05/09/2012 19:03:43 e modificato da leoblacksoul il 05/09/2012 19:08:53
eldiabolo ha scritto:
L'Html non fa differenza tra maiuscole e minuscole se si tratta di parole chiavi quindi non era sicuramente quello il problema. Mancava unicamente un oggetto da far agganciare all'if contenente il codice di update dati.
HTML no, ma PHP certamente sì. Se mi scrivi
<input name="Note_Fato" />
e in php scrivi
$_POST['note_fato']
non credo che possa funzionare XD
Il campo hidden è buona pratica, ma non è fondamentale, il form avrebbe funzionato se l'utente avesse cliccato sul tasto submit.
Nel mentre, nel mio script ho corretto due gravi problemi di sicurezza dello script, consiglio a raccoon di usare quello che ho postato.
05/09/2012 19:11:23
leoblacksoul ha scritto: [quote]eldiabolo ha scritto:
L'Html non fa differenza tra maiuscole e minuscole se si tratta di parole chiavi quindi non era sicuramente quello il problema. Mancava unicamente un oggetto da far agganciare all'if contenente il codice di update dati.
HTML no, ma PHP certamente sì. Se mi scrivi
<input name="Note_Fato" />
e in php scrivi
$_POST['note_fato']
non credo che possa funzionare XD[/quote]
Ehhh... hai ragione, m'era sfuggito. Questo è l'esempio lampante del perché ho iniziato a rispondere a questo 3d suggerendo di usare sempre caratteri minuscoli ovunque proprio per evitare di non sbagliare proprio le parti sensibili. Come volevasi dimostrare :)
Ne approfitto quindi per ribadire.. scrivete tutto minuscolo sempre così non incappate in sviste o errori di questo tipo.
In questo caso proprio con l'ultima modifica riportata avrebbe ridato errore per questo motivo quindi sarebbe stato da risolvere ci siamo risparmiati un ulteriore passaggio di modifica ed errore. ;)
Raccoon facci sapere se funziona con tutte le ultime modifiche!
05/09/2012 19:12:50
@leoblacksoul: ho provato con le modifiche che mi hai suggerito ma non funziona ed anzi, non mi stampa neppure i dati della cella Esterno nella textarea ._.
@eldiabolo: ho sistemato quello che mi hai detto, ma niente. Comincio a pensare di aver sbagliato qualcosa io o di aver fatto male le modifiche. Le uniche cose che ho cambiato sono le maiuscole, nel dubbio, ma non credo sia determinante, specie perchè le ho messe tutte uguali..
A questo punto ti incollo il codice attuale della pagina, magari ho scritto male qualcosa:
<?
if (isset($_POST['Esterno'])){
//prendi il post della text area chiamata note_fato e gli
//aggiungi direttamente gli slash per filtrare l'input dati
$note_fato= addslashes($_POST['note_fato']);
$query_update = "UPDATE Personaggio SET Esterno = '".$note_fato."' WHERE Nome = '".$pg."' ";
$result_update = mysql_query($query_update ) or die ("errore critico nella query salvataggio dati");
} ?>
if ( ($_SESSION['Admin_S']==1)||($_SESSION['Master_S']==1)||($_SESSION['Master_S']==2)) {
//carichi i dati, così se sono stati appena modificati
//dall'operazione precedente vengono caricati già aggiornati
$query_load = "SELECT Personaggio.Esterno FROM Personaggio WHERE Nome = '".$pg."' ";
$result_load=mysql_query($query_load) or die("errore caricamento dati<br><br>".$query_load."<br><br>".mysql_error());
//controlli se sono stati trovati dati quindi
//se il result è maggiore di 0 righe caricate
if (mysql_num_rows($result_load) > 0) {
//passi i dati all'array, io utilizzo questo metodo non è
//obbligatorio ma mi trovo più comodo ed è più leggibile poi il codice
$array_load=mysql_fetch_array($result_load);
$note_fato=$array_load['Esterno'];
}else{
//dichiari e iniziliazzi in ogni casi i dati della variabile
//delle note del fato, se ci sono li carichi altrimenti la dichiari vuota.
$note_fato="";
}
//stampi a video la text area e ci metti la stampa unita della
//variabile caricata in precedenza "$note_fato" tra i tag della
//text area così ti riporta i dati che avevi sul database
echo '
<form onSubmit="return Conferma();" action="scheda1prova.php" method=Post>
<tr><td>
NOTE FATO
<textarea cols=47 rows=15 name="note_fato">'.$note_fato.'</textarea>
<input type="hidden" name="Esterno" value="save" />
<input type="submit" name="Submit" value=" Aggiungi Note " style="color:white;background:red">
</td></tr>
</form>';}
?>
</table>
<script language="JavaScript">
function Conferma(){
if (confirm('Sei sicuro?'))
return true;
else
return false;
}
</script>
<? $rs->close; ?>
05/09/2012 19:24:49
<?php
if ( ($_SESSION['Admin_S']==1)||($_SESSION['Master_S']==1)||($_SESSION['Master_S']==2)) {
if (isset($_POST['esterno'])){
//prendi il post della text area chiamata note_fato e gli
//aggiungi direttamente gli slash per filtrare l'input dati
$note_fato= addslashes($_POST['note_fato']);
$query_update = "UPDATE Personaggio SET Esterno = '".$note_fato."' WHERE Nome = '".$pg."' ";
$result_update = mysql_query($query_update ) or die ("errore critico nella query salvataggio dati");
}
//carichi i dati, così se sono stati appena modificati
//dall'operazione precedente vengono caricati già aggiornati
$query_load = "SELECT Personaggio.Esterno FROM Personaggio WHERE Nome = '".$pg."' ";
$result_load=mysql_query($query_load) or die("errore caricamento dati<br><br>".$query_load."<br><br>".mysql_error());
//controlli se sono stati trovati dati quindi
//se il result è maggiore di 0 righe caricate
if (mysql_num_rows($result_load) > 0) {
//passi i dati all'array, io utilizzo questo metodo non è
//obbligatorio ma mi trovo più comodo ed è più leggibile poi il codice
$array_load=mysql_fetch_array($result_load);
$note_fato=$array_load['Esterno'];
}else{
//dichiari e iniziliazzi in ogni casi i dati della variabile
//delle note del fato, se ci sono li carichi altrimenti la dichiari vuota.
$note_fato="";
}
//stampi a video la text area e ci metti la stampa unita della
//variabile caricata in precedenza "$note_fato" tra i tag della
//text area così ti riporta i dati che avevi sul database
echo '
<tr><td>
<form onSubmit="return Conferma();" action="scheda1prova.php" method="post">
NOTE FATO
<textarea cols="47" rows="15" name="note_fato">'.htmlentities($note_fato).'</textarea>
<input type="hidden" name="esterno" value="save" />
<input type="submit" value="Aggiungi Note" style="color:white;background:red" />
</form>
</td></tr>';
}
?>
</table>
<script type="text/javascript">
function Conferma(){
return confirm('Sei sicuro?');
}
</script>
Così?
05/09/2012 19:25:57
Hai un "?>" in più, che chiudono il codice PHP e quindi passano il codice al webserver invece che al server php, mi pare di vedere. Ti riporto tutto il codice. Rimetto tutto minuscolo anche il nome "esterno" del post e dell'oggetto input hidden. Tutto ciò che si può mettere minuscolo insomma apparte i nomi db e campo nella query perchè quelli sono impostati così sul tuo db per il momento in caso andrebbe cambiato tutto troppo ora non vale la pena ormai. ;)
<?
if (isset($_POST['esterno'])){ /*sostituito con la e minuscola, sia qui che poi sotto nel codice html sottostante*/
//prendi il post della text area chiamata note_fato e gli
//aggiungi direttamente gli slash per filtrare l'input dati
$note_fato= addslashes($_POST['note_fato']);
$query_update = "UPDATE Personaggio SET Esterno = '".$note_fato."' WHERE Nome = '".$pg."' ";
$result_update = mysql_query($query_update ) or die ("errore critico nella query salvataggio dati");
}
/*qui c'era un "?>" di troppo*/
if ( ($_SESSION['Admin_S']==1)||($_SESSION['Master_S']==1)||($_SESSION['Master_S']==2)) {
//carichi i dati, così se sono stati appena modificati
//dall'operazione precedente vengono caricati già aggiornati
$query_load = "SELECT Personaggio.Esterno FROM Personaggio WHERE Nome = '".$pg."' ";
$result_load=mysql_query($query_load) or die("errore caricamento dati");
//controlli se sono stati trovati dati quindi
//se il result è maggiore di 0 righe caricate
if (mysql_num_rows($result_load) > 0) {
//passi i dati all'array, io utilizzo questo metodo non è
//obbligatorio ma mi trovo più comodo ed è più leggibile poi il codice
$array_load=mysql_fetch_array($result_load);
$note_fato=$array_load['Esterno'];
}else{
//dichiari e iniziliazzi in ogni casi i dati della variabile
//delle note del fato, se ci sono li carichi altrimenti la dichiari vuota.
$note_fato="";
}
//stampi a video la text area e ci metti la stampa unita della
//variabile caricata in precedenza "$note_fato" tra i tag della
//text area così ti riporta i dati che avevi sul database
echo '
<form onSubmit="return Conferma();" action="scheda1prova.php" method=Post>
<tr><td>
NOTE FATO
<textarea cols=47 rows=15 name="note_fato">'.$note_fato.'</textarea>
<input type="hidden" name="esterno" value="save" />
<input type="submit" name="Submit" value=" Aggiungi Note " style="color:white;background:red">
</td></tr>
</form>';}
?>
</table>
<script language="JavaScript">
function Conferma(){
if (confirm('Sei sicuro?'))
return true;
else
return false;
}
</script>
<? $rs->close; ?>
Non vedo altro mi pare ok, se non funziona ancora.. che errore ti da? una schermata bianca? un messaggio? o cosa?
05/09/2012 19:37:23
Provati entrambi, ma niente.
In pratica, provo a scrivere nuovi dati nella textarea, clicco sul pulsante "Aggiungi Note", mi appare la finestra di conferma, clicco su Ok e la pagina..torna come prima, mostrando nella textarea gli stessi dati che c'erano prima nella cella (i dati che ho inserito io manualmente). Insomma, nessun nuovo dato viene caricato, aggiunto, aggiornato nè niente. E' come se non funzionase l'Update
05/09/2012 19:45:46
Prova un po' a sistemare questa riga anche:
<form onSubmit="return Conferma();" action="scheda1prova.php" method="post">
05/09/2012 19:55:02
Niente, continua a non mandare i dati..
05/09/2012 19:58:01
E ti estrae però i dati e li visualizza nella textbox? o da problemi anche li?
a questo punto immagino sia sbagliata la chiamata al file php probabilmente. Com'è l'indirizzo del sito di questa pagina con questo script? (anche se ci vuole l'autenticazione non importa è solo per vedere com'è composto l'URL).
05/09/2012 20:03:45
eldiabolo ha scritto: E ti estrae però i dati e li visualizza nella textbox? o da problemi anche li?
a questo punto immagino sia sbagliata la chiamata al file php probabilmente. Com'è l'indirizzo del sito di questa pagina con questo script? (anche se ci vuole l'autenticazione non importa è solo per vedere com'è composto l'URL).
Nella textarea vengono stampati solo i dati che già c'erano, cioè quelli che io ho inserito manualmente. Sia svuotando manualmente la cella sia lasciandola così, comunque l'update non va..
La pagina che sto usando come prova è questa, ed è relativa ad un pg a caso, che deve essere cancellato.
http://lword.altervista.org/scheda1prova.php?pg=Ghita
In generale, la pagina è:
http://lword.altervista.org/scheda1prova.php
..non credo abbia bisogno di autenticazione, ma sicuramente non vedrai il form, se non sei Admin o Master
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
New Orleans ↗
World of Tanks ↗
World of the Sea Battle ↗
Project Entropy ↗
Enlisted ↗
State of Survival ↗
CRSED: F.O.A.D. ↗
The Coven ↗
Neverness to Everness ↗