- Home
- Categorie
- Coding e Sistemistica
- Coding
- La tabella non si aggiorna
-
Ciao,
non ho riletto tutti i post, sto guardando solo gli ultimi... vediamo se riassumo beneHai eseguito la query:
update rubrica set promotore='' where id='7'
ed il risultato è stato:
Righe interessate: 0 (La query ha impiegato 0.0002 sec)Hai eseguito la query:
SELECT * FROM rubrica where id='7' ```ed il risultato è stato: Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec) Quindi, ricapitolando, il record con ID 7 è presente nel database e viene trovato, ma la query di aggiornamento non sembra aggiornarlo. Domanda: Che valore ha il campo "promotore" per il record con ID=7 ? Perchè mysql_affected_rows() ti segnala il numero di record effettivamente modificati. Ovvero, se modifici un record inserendo per i campi valori che ha già, nessuna riga viene modificata e il risultato è appunto 0. Alessandro
-
Grazie Magicale per il tuo interessamento.
Purtroppo esiste questo problema.
Se tutti i campi del form vengono riempiti, l'inserimento dei dati nel database funziona benissimo.
Il problema si ha quando si tenta di modificare uno qualsiasi dei dati che hai visto.
A quel punto il risultato è che non viene modificato quel campo da te digitato nuovamente (cioè per esempio voglio cambiare il nome dell'azienda perchè ha cambiato ragione sociale) ma tutti i valori presenti in quella riga (cioè in quel ID) vengono cancellati .... tranne il numero di ID.Quindi se tenti di inserire nuovamente i dati, anche parzialmente, non si ottiene alcun aggiornamento.
Pertanto, per rispondere alla tua domanda, non c'è alcun valore nel campo "promotore" .... ma neanche in tutti gli altri.
-
Ciao,
ho creato sul mio db locale una tabella con gli stessi campi. Ho creato una pagina copiando l'ultima versione del codice che ti ha postato Thedarkita e l'ho testata. L'unica cosa che posso dirti è che accade quanto presumevo: funziona tutto correttamente.Non so che altro dirti. L'unico controllo che mi viene di suggerirti è fare un
[php]var_dump($_REQUEST);[/php]
subito prima o dopo dell'echo della query. Giusto per verificare che i dati arrivino correttamente alla pagina.Alessandro
-
Alessandro,
grazie per il tuo aiuto.
Non riesco a capire perchè a me non funziona.
Ho aggiunto la riga di codice che hai suggerito e questo è il risultato:update rubrica set promotore='', nome_azienda='', settore='',
città
='', indirizzo='', nome_contatto='', telefono='', email='', sede_estero='', azioni='', progressione='', risultato_finale='', note='' where id='8'1array(16) { ["id"]=> string(1) "8" ["Promotore"]=> string(5) "pippo" ["Nome_azienda"]=> string(5) "Apple" ["Settore"]=> string(11) "Informatica" ["Città"]=> string(9) "Cupertino" ["Indirizzo"]=> string(15) "1 Infinite Loop" ["Nome_contatto"]=> string(10) "Steve Jobs" ["Telefono"]=> string(16) "001 212 555 4433" ["Email"]=> string(15) "[email protected]" ["Sede_estero"]=> string(14) "California USA" ["Azioni"]=> string(8) "azione 1" ["Progressione"]=> string(8) "azione 2" ["Risultato_finale"]=> string(8) "azione 3" ["Note"]=> string(4) "note" ["confirm"]=> string(1) "1" ["PHPSESSID"]=> string(32) "a7157b78fcd4e275f0c13751de9ca0fa" } Modificati: 0 recordsCome vedi i dati che ho messo nel form ci sono ma nell'output non si vede nulla e comunque ciò che ho postato appena qui spra è un errore ....
guardate, io vi ringrazio ancora per la pazienza ma a questo punto mi affido alla vostra clemenza ....
-
Beh... direi che almeno ora il problema è diventato evidente
L'inghippo è nei nomi dei campi della tabella.
Li hai scritti con l'iniziale maiuscola e quando li recuperi con mysql_fetch_field() vengono letti esattamente come li hai scritti, ovvero con, appunto, l'iniziale maiuscola.
Di conseguenza il name dei campi input ha l'iniziale maiuscola e quando li recuperi facendo ad esempio:
[PHP]
$promotore=$_REQUEST['promotore'];
[/PHP]
non viene letto alcun dato, perchè in realtà esso si trova in
[PHP]
$promotore=$_REQUEST['Promotore'];
[/PHP]Hai due possibili modi per correggere:
- sul database: editare tutti i nomi dei campi della tabella togliendo l'iniziale maiuscola (è quello che ti consiglio di fare)
- sul codice php: modificare la lettura dei dati mettendo l'iniziale maiuscola alle chiavi dell'array $_REQUEST
Alessandro
-
FANTASTICO ALESSANDRO !!!
Hai ragione!
Ho sostituito le iniziali maiuscole con le minuscole nel database e funziona!
Inoltre ho rimossovar_dump($_REQUEST);
perchè altrimenti mi dava una risposta strana e finalemnte la tabella si aggiorna !!!
YAHOOO!!!!!
Se posso approfittare della tua cortesia adesso vorrei risolvere gli ultimi due problemi e poi il risultato è perfetto:
-
Alla pagina dove viene mostrata la tabella ci si arriva tramite una pagina di login dove bisogna inserire username e password.
Purtroppo ci si accede anche digitando direttamente l'url di quella pagina, by-passando così la pagina di login.
Domanda:
è possibile fare in modo che se si digita direttamente l'url della pagina contenente la tabella, si abbia una risposta del tipo "Non sei autorizzato ad accedere direttamente a questa pagina. Clicca qui per fare il login" e rimandare l'utente obbligatoriamente alla pagina di login?
Naturalmente se ci si arriva "una volta che hai già fatto il login" quella risposta non deve esserci... -
le caselle della tabella hanno una larghezza determinata dalla lunghezza del titolo.
Per esempio, "nome_azienda" ha una casella più larga di "indirizzo" però l'indirizzo è solitamente più lungo di un nome di azienda.
Ovviamente se al posto di "indirizzo" ci metto "indirizzo_della_azienda" la casella mi si allarga ma questo comporterebbe rifare il codice di parecchie pagine.
Domanda:
c'è modo di allargare le dimensione della casella senza dovere mettere mano al nome della casella stessa?
Grazie ancora e confido ancora una volta nel tuo preziosissimo aiuto
-
-
Ciao,
-
Sì. Puoi ad esempio memorizzare in una variabile di sessione il dato Loggato/NonLoggato e controll'arlo nelle pagine a cui puoi accedere solo dopo il login. Se in una di quelle pagine risulta non loggato fai u redirect alla pag di login.
-
Non ho capito a cosa ti riferisci con "casella"
-
-
Grazie per la tua risposta Alessandro e scusa per il ritardo nella mia replica ma ero in ferie (ora sono purtroppo finite, sigh!).
Ho provato a rispondere tramite il mio iPhone ma non funziona.In ogni caso:
-
hai ragione... detta così ha un senso logico e a parole è semplice ma, come ho già premesso, non sono un mago del PHP ed è già tanto se sono arrivato a fare il codice di cui abbiamo parlato finora.
Qualche suggerimento pratico? (ovvero ... ti sto chiedendo in modo spudorato se mi potresti dare il pezzo di codice adatto ...) -
per casella intendo quella che insieme alle altre formano la griglia dell'output, dove sono contenuti tutti i dati inseriti tramite il form.
Ho notato che, a parte quella relativa all'indirizzo e-amil del cliente, per tutte le altre colonne della griglia la larghezza è determinata dalla lunghezza del titolo.
Sarebbe invece possibile determinare la larghezza indipendentemente dalla lunghezza del titolo?
-
-
Alessandro,
ancora in vacanza?
Non credo ..... hai qualche risposta per me, per favre?
-
Ciao,
mi ero perso il tuo post di agosto.- Tutte le pagine devono "iniziare" la sessione prima di qualsiasi tipo di output.
[php]
session_start();
[/php]
Quando effettui il login salvi una o più variabili di sessione in con i dati che ti possono servire.
Ad esempio:
[php]
$_SESSION['user_logged'] = true;
$_SESSION['user_id'] = ... ;
...
[/php]All'inizio delle pagine "private" devi controllare le variabili di sessione verificando che l'utente sia loggato.
Ad esempio:
[php]
<?php
session_start();if (!$_SESSION['user_logged'])
{
//Utente non loggato. Redirect alla pagina di login o altra pagina
header("Location: login.php");
exit;
}//Tutto il resto della pagina...
?>
[/php]- Resto confuso.. ma... se ti riferisci alle celle della tabella puoi dimensionarle con l'attributo width
<td width="100"> ... </td>
Alessandro
- Tutte le pagine devono "iniziare" la sessione prima di qualsiasi tipo di output.