Aggiornare tabella tramite form

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao, ho un tabella fatta con taglio td e tr con dei punteggi che periodicamente aggiorno. Ogni punteggio è relativo ad un utente. Quello che volevo realizzare era una pagina con una sorta di form dove ad ogni utente io inserivo un punteggio che andava a sommarsi al punteggio che è già in tabella è mi dava il.risultato. Infine dopo averlo fatto per ogni utente, circa 5 o 6, metterli in ordine numerico dal più alto al più basso rispettando ovviamente il legame utente-->punteggio.

Secondo voi come posso fare? Quello che non so come realizzare è la faccenda della somma ed inserimento o sostituzione in tabella.

Qualcuno ha idea?

Ps: tutto ciò è per non farlo manualmente, capisco che faccio prima, ma è un modo per imparare qualcosa di diverso e inventarmi qualcosa.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Nel sito le pagine sono tutte in php e mi appoggio ad un db Mysql. Il problema però è che i punteggi adesso sono scritti manualmente e quindi degli utenti non ho traccia nel db. Così come dei punteggi.

Inviato dal mio C6903 utilizzando Tapatalk
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quello che ho capito gli utenti sono pochi (5 o 6) quindi secondo me ti conviene procedere così
ti fai una tabella utenti del tipo
id int(6) autoincrement prymarykey
utente varchar(20)//o altri campi se nome cognome ecc..
punteggio int(6) default 0

ti fai un form per l'insert degli utenti e il loro punteggio che hai attualmente (manina manina)
inseriti gli utenti col loro punteggio ti fai un form per uppare (ti conviene una <select> con i nomi e id, da selezionare) e un campo col il punteggio da aggiungere
poi fai la querry di up tipo
PHP:
$q="UPDATE utenti SET punteggio=punteggio+$punteggio WHERE id=$id";
per vederli in ordine ti basta fare una query del tipo
PHP:
$q="SELECT * FROM utenti ORDER BY punteggio";
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie borgo! Gentilissimo, di lavoro ne ho parecchio dato il pochissimo tempo che ho a disposizione. Faccio delle prove e vediamo cosa ne esce. Intanto Grazie!!:fonzie:
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ecco qua il mi lavoro. Non sarà perfetto, ma penso di essere sulla buona strada.
PHP:
<?php
if(isset($_POST['senddata'])){
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		//Filtro dati con $mysqli
		$nome     		= $mysqli->trim($_POST['id']);
		$punteggi		= $mysqli->trim($_POST['punteggi']);

			//Controllo se è presente la tabella ed i suoi campi altrimnti li creo
			$ragazzi = $mysqli->query('CREATE TABLE IF NOT EXISTS ragazzi
           (id int(2),
			nome VARCHAR(10),
    		cognome VARCHAR(10),
    		punteggio int(6),
    		PRIMARY KEY (id))');
			if(!$ragazzi){
				echo 'Errore nella creazione della tabella ragazzi';
			} else {
				TRUE;
			}
		
		if(	$update = $mysqli("UPDATE ragazzi SET punteggio=punteggio+$punteggi WHERE id=$id")){
			if($ordinati = $mysqli("SELECT * FROM ragazzi ORDER BY punteggio")){
				echo "Aggiornamento ed ordinamento riuscito!";
			} else {
				echo "Ordinamento mancato!";
			}
		} else {
			echo "Aggiornamento non riuscito!";
		}
		
	}//Chiusura REQUEST METHOD

} else {
	?>
          <div class="form_admin content_2">
          <form id="jform" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">
		<fieldset>
        <legend>Ragazzi</legend>
        <?php
	if($result = $mysqli->query("SELECT id,nome,cognome,punteggio FROM ragazzi")){
			while ($row = $result->fetch_assoc())
			{
			echo '<input class="wrong" type="text" name="id[]" value="'. $row['nome'].' '.$row['cognome'].'" disabled>';
			echo '<input class="wrong" type="text" name="punteggio" value="'. $row['punteggio'].'" disabled>';
			echo '<input class="wrong" type="number" name="punteggio[]" value=""  min="0"><br><br>';
			}
	}
	?>
      </fieldset>
        <p></p>
<p class="cont-button">
       	  <input type="hidden" name="senddata" value=""/>
					<button type="submit" id="send" name="invia">Inserisci</button>
   					<button type="reset" class="send" onclick="reset()">Reset</button>
					</p>
            </form>
          </div><!--Chiusura form_admin-->
</div><!--content_2-->
<?php
}
?>

Potrebbe andare?

Inoltre mi chiedevo i punteggi con la funzione order me li mette in modo crescente ma come faccio ad inserirli nella tabella tenendo lo stesso ordine? Quando mi mette in ordine crescente i valori questi lo sarannoanche nella tabella che io ho fatto?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Secondo voi dove sbaglio?
PHP:
	if(!isset($_POST['id'])){
			echo "EROORE 1 <br>";
		}
		
		if (empty($_POST['id'])) {
			echo "ERRORE 2";
		} else {
			$id	=	$_POST['id'];
		}
		
				
		if($update = $mysqli->query("UPDATE ragazzi SET punteggio =punteggio + $agg_punti WHERE id = '$id' ")){
etc etc
}

continua a darmi id undefined variable alla riga
PHP:
		if($update = $mysqli->query("UPDATE ragazzi SET punteggio =punteggio + $agg_punti WHERE id = '$id' ")){
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Aggiornamento, questo è il codice corretto, senza errori o avvisi solo che non riesco ad aggiornare il valore in tabella
PHP:
<?php
if(isset($_POST['invia'])){
	if($_SERVER['REQUEST_METHOD'] == 'POST'){

		//Controllo se è presente la tabella ed i suoi campi altrimnti li creo
		$ragazzi = $mysqli->query('CREATE TABLE IF NOT EXISTS ragazzi
           (id int(2),
			nome VARCHAR(10),
    		cognome VARCHAR(10),
    		punteggio int(6),
    		PRIMARY KEY (id))');
		if(!$ragazzi){
			echo 'Errore nella creazione della tabella ragazzi';
		} else {
			TRUE;
		}

		if(!isset($_POST['id']) || (empty($_POST['id'])) ){
			echo "EROORE 1 <br>";
		} else {
			$id	=	$_POST['id'];
		}

		$punteggio		= $_POST['punteggio'];
		$agg_punti		= $_POST['nuovi_punti'];

if($update = $mysqli->query("UPDATE ragazzi SET punteggio = punteggio + $agg_punti, aggiornato = NOW() WHERE id = '$id' ")){
				echo "<div class=\"tabella\">Dati aggiornati ed ordinati!</div>";
				echo "<meta http-equiv='Refresh' content='5; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
			} else {
			echo "Aggiornamento non riuscito!\"<br>";
			echo "Errore:" . $mysqli->error .".";
		}


	}//Chiusura REQUEST METHOD

}

Dove sbaglio? la somma è corretta. :incazz2::incazz2::dipser::dipser:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
così a naso e di corsa vedo alcune cose
all'id primarykey dagli anche l'autoincrement
quando fai il where all' $id non mettere gli apici
vedo che vuoi uppare il campo aggiornato, ma non lo vedo nella tabella che hai fatto
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao,
l'id è autoincrement ma non nel file php, quello l'homesso dopo
gli apici li ho messi in quanto mi dava errore di variabile indefinita
la colonna aggiornato è presente nel mi db ma non nel file php di controllo.

se lascio gli apici non ottengo errori ma non inserisco nulla nel db, se invece tolgo gli apici mi da questo errore:

Codice:
You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'pinco' at line 1.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao,
penso di aver risolto!
Il problema è che con POST prendo il value del tag con name id, e quel tag era il nome e cognome dell'utente. Quindi per mantenere quel tag input con nome e cognome ho creato un altro tag input nascosto che ha come name l'id dell'utente e value il suo id preso dal db. Fatto questo mi inserisce ed aggiorna correttamente la tabella. Qui di seguito il codice corretto. Se qualcuno mi potesse dare la conferma o eventualmente un altro modo di ottenrere l'aggiornamento della tabella lo apprezzerei molto.
PHP:
if($result = $mysqli->query("SELECT id,nome,cognome,punteggio,aggiornato FROM ragazzi ORDER BY punteggio DESC")){
			while ($row = $result->fetch_assoc())
			{
			echo '<input type="hidden" name="id" value="'.$row['id'].'">';
			echo '<input type="text" name="nome" value="'.$row['nome'].' '.$row['cognome'].'" readonly="readonly">';
			echo '<input type="text" name="punteggio" value="'. $row['punteggio'].'" readonly="readonly" >';
			echo '<input type="number" class="onlyNumber" name="nuovi_punti" value="0" min="0">';
			echo '<input type="time" name="data" value="'.$row['aggiornato'].'" readonly="readonly"><br><br>';
			}
	}

mentre questo è la parte dell'inserimento nel db
PHP:
$new_score= ($punteggio + $agg_punti);


		if($update = $mysqli->query("UPDATE ragazzi SET punteggio = $new_score, aggiornato = NOW() WHERE id = '$id' ")){
//			if($ordinati = $mysqli->query("SELECT * FROM ragazzi ORDER BY punteggio DESC")){
				echo "<p></p><div class=\"tabella\">Dati aggiornati ed ordinati!</div>";
				echo "<meta http-equiv='Refresh' content='5; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
			} else {
			echo "Aggiornamento non riuscito!\"<br>";
			echo "Errore:" . $mysqli->error .".";
		}

Se non ci sono correzioni direi di mettere il Risolto.
Grazie borgo!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto una cosa
perchè ogni volta crei o cerchi di creare la tabella?
la tabella basta crearla una volta sola
poi se ti da variabile indefinita vuol dire che la variabile non è stata valorizzata prima che tu cerchi di usarla
usa il var_dump per vedere, prima di fare l'up, se le variabili ci sono, in particolare l'id, perche deve essere un numero intero (quindi senza apici)
se con gli apici non ti da errore probabilmente vuol dire che la query diventa ... WHERE id='' cioè stringa vuota
inoltre quele è la riga 1? alla riga 1 vedo if(isset($_POST['invia'])){ che non c'entra nulla con mysql
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao
intanto una cosa
perchè ogni volta crei o cerchi di creare la tabella?
la tabella basta crearla una volta sola
poi se ti da variabile indefinita vuol dire che la variabile non è stata valorizzata prima che tu cerchi di usarla
usa il var_dump per vedere, prima di fare l'up, se le variabili ci sono, in particolare l'id, perche deve essere un numero intero (quindi senza apici)
se con gli apici non ti da errore probabilmente vuol dire che la query diventa ... WHERE id='' cioè stringa vuota
inoltre quele è la riga 1? alla riga 1 vedo if(isset($_POST['invia'])){ che non c'entra nulla con mysql

Per la tabella hai ragione devo eliminare quella parte di codice.
Per la variabile indefinita avevo scritto male io il codice.
L'errore che punta alla riga 1 era l'errore legato al valore che il POST prendeva dall'input con name=id che per errore mio e per mia incompetenza avevo assegnato un value (nome e cognome dell'user) e quindi non andava avanti.

Ribadisco che adesso funziona tutto, devo solo capire come usare il php all'interno delle tabelle table, td, tr, etc. ma questo è un altro discorso.

Grazie
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
In questa tabella dove funziona tutto vorrei che a fianco del nome utente ci fosse un numero crescente tipo
1) pinco pallo
2) panco pillo
etc.
Solo che non so come creare un elenco numerato limitato a gli utenti che appaiono nella tabella. Probabilmente con un ciclo foreach ma sono di difficile comprensione per me e non ne vengo fuori. Qualcuno saprebbe darmi qualche dritta? Altrimenti dovrò tenerli senza nnumero.

Grazie
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ragazzi, purtroppo mi sembrava troppo facile.
Ho provato la tabella cercando di aggiornare i dati solo dell'ultimo user, ma non del primo. Ed oviamente quando cerco di aggiornare i punti del primo o del secondo utente non mi aggiorna nulla, in quanto non mi prende i punti che inserisco nel form. Essendo un ciclo while dove ogni volta che cicla sovrscrive i valori dovrei usare forse un foreach? Del tipo "per ogni utente prendi il punteggio nuovo e sommalo al vecchio"? Come potrei impostarlo?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Provo a spiegarmi meglio in un form per ogni riga io ho un campo ID nascosto dove associo al value l'id dell'utente preso dal db, un campo nome uno con il punteggio preso dal database e un campo vuoto dove vado ad assegnare il nuovo punteggio, come faccio a legare tutti i dati per associare il punteggio di ogni utente e poter aggiornare il database. Il controllo lo faccio utilizzando l'ID e non il nome dell'utente. Dovrò usare probabilmente un ciclo foreach while ma non riesco a legare i valori presi dal form qualcuno mi può dare una mano
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ragazzi, nessuno che sa darmi un consiglio? Non dico il codice da copia ed incolla, ma semplicemente un consiglio, una dritta. :crying:
 
Discussioni simili
Autore Titolo Forum Risposte Data
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
L aggiornare 2 campi di una tabella insieme PHP 6
C [PHP] scrivere o aggiornare record in tabella PHP 7
T Aggiornare una tabella db richiamando da file php PHP 3
S Aggiornare una tabella db richiamando da file php PHP 3
giancadeejay Aggiornare tabella db con php PHP 10
L [PHP] Sommare campi e aggiornare tabella PHP 14
P Aggiornare Tabella con form ma senza Mysql HTML e CSS 0
M Aggiornare grafico con i dati inseriti in tabella PHP 0
G Aggiornare colonna tabella automaticamente in MysQl PHP 2
O Aggiornare tabella da altro MDB MS Access 3
M aggiornare il prezzo degli articoli da una seconda tabella MySQL 6
C aggiornare i record di una tabella??(access) MS Access 0
S Aggiornare percorso file collegati MS Access 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
M Aggiornare stesso campo in due tabelle PHP 0
Alex_70 Aggiornare campo da un altro campo PHP 16
M Aggiornare simultaneamente i campi di due tabelle collegate con id PHP 4
Leshabituelles Non riesco ad aggiornare PHP PHP 0
M [Javascript] Aggiornare like totali dopo click Javascript 0
S aggiornare valore di un elemento xml con php PHP 8
P [PHP] Intercettare ed aggiornare campi di un database PHP 5
Q Problema su come far aggiornare i campi su un database Mysql PHP 17
M [Javascript] [PHP] aggiornare pagina ogni ora Javascript 2
B [Javascript] Cambiare classe ed aggiornare relativi eventi Javascript 3
S [PHP]Aggiornare pagina in maniera trasparente... PHP 3
M [PHP] Aggiornare i dati dei record selezionati PHP 3
X come aggiornare codice php? PHP 5
ste80 [PHP] cancellare/aggiornare record DB PHP 24
WebDr [ASP] Aggiornare una pagina in un div da un altro div su pagina diversa Classic ASP 3
C Aggiornare App Html5 HTML e CSS 2
D [Javascript] aggiornare numero caratteri se campo già popolato Javascript 5
S [Javascript] Aggiornare solo un DIV una sola volta con un click di un bottone Javascript 9
Metazoo Recuperare variabile php da javascript senza aggiornare pagina PHP 5
Magenta [WordPress] Dati ftp per aggiornare in locale WordPress 10
giancadeejay [PHP] Aggiornare un valore del database tramite form PHP 26
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
F Aggiornare marker su mappa google con una funzione ajax richiamata al cambio di una select Ajax 2
N eseguire pagina php senza aggiornare la pagina Ajax 3
M Aggiornare Plesk e PHP su VPS Linux OVH Server Dedicati e VPS 3
garimpeiro Errore di sintassi si tenta di aggiornare file in formato dbf Programmazione 2
L Script per aggiornare pagina html Javascript 2
G Aggiornare immagine caricata nel DB Classic ASP 1
K mysql aggiornare campo Database 4
Marco_88 Aggiornare elemento DOM jQuery 9
J Aggiornare 2 tabelle PHP 3
R Aggiornare WP e riuscire poi a tornare indietro. WordPress 24
I come aggiornare il codice jQuery 1
P aggiornare div con un clic senza reload Ajax 2

Discussioni simili