Aggiornare valori in mysql (classifica)

mateky

Utente Attivo
7 Feb 2011
36
0
0
Ho creato questo form:


HTML:
<html>
<head>

<title></title>
</head>
<body>


<form name="classifica" action="aggiungiclassifica.php" method="post">

<select name="squadra">
<option value="Juventus">Juventus</option>
<option value="Inter">Inter</option>
<option value="Napoli">Napoli</option>
<option value="Roma">Roma</option>
</select>
<select name="punti"> 


<option value="1">+1</option>
<option value="3">+3</option>
<option value="0">0</option>


<input type="submit" value="aggiorna punti">
</select>
</form>



</body>
</html>


Poi, nella paggina "aggiungiclassifica.php" ho scritto questo script:

PHP:
<?php

$db = mysql_connect('localhost','mateky','');
if($db == FALSE)
die('Errore: impossibile connettersi al database!'); 
if(!mysql_select_db('my_mateky'))
die('Errore: impossibile accedere al database!');


{
$ris = mysql_query("INSERT INTO classifica (squadra,punti) VALUES('".$_POST['squadra']."','".$_POST['punti']."')");


if(!$ris)
die('Errore: impossibile aggiungere i punti nel database!');
}


mysql_close($db);
?>

e nel mysql, ho creato la tabella "classifica" con questi valori:

id int(11) NOT NULL,
squadra varchar(50),
punti int(50)

poi ho inserito manualmente nel database i valori delle squadre (juventus, inter, roma, napoli) e 0 punti di default a tutti, ma ogni volta che attraverso il form cerco di aggiornare i punti nel database, mi dà l'errore che ho impostato nello script:

Errore: impossibile aggiungere i punti nel database!
 
Ultima modifica di un moderatore:

Alessio Gebbia

Nuovo Utente
29 Nov 2014
21
0
0
24
Sicilia
Prova ad usare un "update set" al posto di un "insert into" così aggiorni il record punti che già era presente dato che di default dovrebbe essere 0
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Prova con:
PHP:
$ris = mysql_query("INSERT INTO classifica (squadra,punti) VALUES('".$_POST['squadra']."',".$_POST['punti'].")");
 

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Ciao,
se non ho capito male, il DB già esiste e contiehe 4 record (uno per squadra) con 3 campi ciascuno (id, squara e punti).
INSERT inserisce un nuovo record al DB, ma tu devi aggiornare (UPDATE) un record già esistente. La quiery quindi dovrebbe essere:

$query="UPDATE 'nomeDB'.'classifica' SET 'punti'='$punti' WHERE 'squadra'='$squadra' ";

dove $squadra e $punti sono due vartiabili d'appoggio dove, per comodità, recupererai i valori passati dal form.
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Teoricamente dovresti fare questo.. Ma com'è al momento è comunque incompleto perchè hai bisogno di indicare nell'input id un valore identificativo per il record da modificare nel db..

aggiungiclassifica.php
PHP:
<?php 
// Modifichi i dati con un UPDATE 
include 'connection.php';
  try
  {
    $sql = 'UPDATE prodotti SET
       	squadra = :squadra,
	    punti = :punti
      WHERE id = :id';
    $s = $pdo->prepare($sql);
	$s->bindValue(':id', $_POST['id']);
	$s->bindValue(':squadra', $_POST['squadra']);
	$s->bindValue(':punti', $_POST['punti']);
    $s->execute(); 
  }
  // nel caso qualcosa vada storto ti da un errore..
  catch (PDOException $e)
  {
    $error = 'Errore durante update.';
    exit();
  }
// torna alla pagina di provenienza quella del form per intenderci.. o puoi mettere il link che ti pare
  header("location: ".$_SERVER["HTTP_REFERER"].""); 
  exit();

// Fine modifica
?>

HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>
<form name="classifica" action="aggiungiclassifica.php" method="post">

<select name="squadra">
<option value="Juventus">Juventus</option>
<option value="Inter">Inter</option>
<option value="Napoli">Napoli</option>
<option value="Roma">Roma</option>
</select>

<select name="punti"> 
<option value="1">+1</option>
<option value="3">+3</option>
<option value="0">0</option>
</select>
<!-- per fare un aggiornamento dei dati devi però avere l'id o un altro dato che identifichi esattamente la riga che vuoi modificare 
una cosa di queste, come vedi sotto.. questo è un input nascosto che serve poi a capire quale record vuoi modificare.. -->
<input type="hidden" name="id" value="<?php echo $squadra['id']; ?>"> 

<input type="submit" value="aggiorna punti">
</form>
</body>
</html>
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Dimenticavo la connessione al db..

PHP:
<?php
if(__FILE__ == $_SERVER['SCRIPT_FILENAME'])
{
    exit('Accesso diretto negato!') ;
}
try
{
	$pdo = new PDO('mysql:host=TUOHOST;dbname=NOMEDB', 'USERNAME', 'PASS');
}

catch (PDOException $e)
{
	$output = 'impossibile connettersi al server database: ' . $e->getMessage();
	include 'paginachevisualizzaerrore.php';// anche se non esiste si connette ugualmente.. comunque è una semplice pagina con un echo $output ; tutto qui.. 
	exit();
}
 

mateky

Utente Attivo
7 Feb 2011
36
0
0
se invece di modificare voglio aggiungere? visto che clicco sul +3, vorre che aggiungesse +3 nella tabella.
Mi hanno suggerito di fare così:

$ris = mysql_query("UPDATE classifica SET punti = (punti + '".$_POST['punti']."') WHERE squadra =". $_POST['squadra']) or die (mysql_error());


però mi dice "impossibile aggiungere dati nel db", forse perchè devo aggiornare quella riga nel form per il riconoscimento dell'id?
 

mateky

Utente Attivo
7 Feb 2011
36
0
0
anzi l'errore preciso è:

Unknown column 'Juventus' in 'where clause'

però ho scritto esattamente i nomi delle squadre rispettando le maiuscole (sia nel db che nel forum che nello script php)
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Allora con le istruzioni seguenti andrai ad aggiungere alla alla tabella classifica una riga.. ok? Riempiendo le colonne squadra e punti ( 1, 3, 0 ).

PHP:
<?php 
// includiamo la connessione.. senza doverla riscrivere ogni volta..
include 'connection.php';
// proviamo a fare l'inserimento..
  try
  {
    $sql = 'INSERT INTO classifica SET
			squadra = :squadra,
			punti = :punti';
    $s = $pdo->prepare($sql);
	$s->bindValue(':squadra', $_POST['squadra']);
	$s->bindValue(':punti', $_POST['punti']);
    $s->execute();
  } 
  // Se qualcosa va storto segnalo l'errore..
  catch (PDOException $e)
  {
    $error = 'Error adding product: ' . $e->getMessage();
    include 'eventualepaginavisualizzaerrore.php';
    exit();
  }
?>

Per quanto riguarda l'html possiamo eliminare a questo punto l'id dal form, perchè si tratta di un inserimento ex novo .
Per questo verrebbe:

HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>
<form name="classifica" action="aggiungiclassifica.php" method="post">

<select name="squadra">
<option value="Juventus">Juventus</option>
<option value="Inter">Inter</option>
<option value="Napoli">Napoli</option>
<option value="Roma">Roma</option>
</select>

<select name="punti"> 
<option value="1">+1</option>
<option value="3">+3</option>
<option value="0">0</option>
</select>

<input type="submit" value="aggiorna punti">
</form>
</body>
</html>

Saluti Giacomo
 
Discussioni simili
Autore Titolo Forum Risposte Data
D Aggiornare valori in tempo reale sulla stessa pagina Javascript 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
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
L aggiornare 2 campi di una tabella insieme PHP 6
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
C [PHP] scrivere o aggiornare record in tabella PHP 7
T Aggiornare una tabella db richiamando da file php PHP 3
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 Aggiornare una tabella db richiamando da file php PHP 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 Aggiornare tabella db con php PHP 10
giancadeejay [PHP] Aggiornare un valore del database tramite form PHP 26
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
L [PHP] Sommare campi e aggiornare tabella PHP 14
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
P Aggiornare Tabella con form ma senza Mysql HTML e CSS 0
P Aggiornare tabella tramite form PHP 17
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
M Aggiornare grafico con i dati inseriti in tabella PHP 0
A aggiornare pagina1 da link di pag2 Javascript 1
K Aggiornare solo una parte di Layout Sviluppo app per Android 0
G Aggiornare colonna tabella automaticamente in MysQl PHP 2
C Aggiornare casella di testo MS Access 0
S Aggiornare campo in base a timestamp meno recente fra piu tabelle PHP 2

Discussioni simili