salve a tutti, sono nuovo e ho appena finito di leggere la parte riguardante come fare per modificare dei campi di una tabella del database nella guida sul php-mysql.
l'esempio che è presente nella guida permette di creare un file.php che mi permette di modificare i dati che ho inserito al momento dell'iscrizione. riporto il codice per maggiore chiarezza.
l'ho semplificato perchè il mio dubbio prevede un file dove io devo modificare i dati di un solo campo, esempio il campo attività.
Codice PHP:
<?php
// richiamo il file di configurazione
require 'config.php';
// richiamo lo script responsabile della connessione a MySQL
require 'connect.php';
if($_POST && isset($_GET['id']))
{
aggiorna_record();
}
elseif(isset($_GET['id']))
{
mostra_record();
}
else
mostra_lista();
function mostra_lista()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '[b]'.htmlentities($_GET['msg']).'[/b]
';
// preparo la query
$query = "SELECT nome FROM prova_utenti";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
echo '
<table border="1">
<tr>
<th>Nome</th>
<th></th>
</tr>';
while ($row = mysql_fetch_assoc($result))
{
$nome = htmlspecialchars($row['nome']);
// preparo il link per la modifica dei dati del record
$link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr>
<td>$nome</td>
<td><a href=\"$link\">modifica</a></td>
</tr>";
}
echo '</table>';
// libero la memoria di PHP occupata dai record estratti con la SELECT
mysql_free_result($result);
// chiudo la connessione a MySQL
mysql_close();
}
function aggiorna_record()
{
// recupero i campi di tipo "stringa"
$nome = trim($_POST['nome']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$nome = stripslashes($nome);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($nome);
// recupero gli altri campi del form
$attivita = intval($_POST['attivita']);
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori
if(!$nome)
{
$messaggio = urlencode("Non hai inserito il nome");
header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
exit;
}
// preparo la query
$query = "UPDATE prova_utenti SET
nome = '$nome',
attivita = $attivita,
WHERE id = $id";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
// chiudo la connessione a MySQL
mysql_close();
$messaggio = urlencode('Aggiornamento effettuato con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
function mostra_record()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '[b]'.htmlentities($_GET['msg']).'[/b]
';
$id = intval($_GET['id']);
// preparo la query
$query = "SELECT nome,attivita FROM prova_utenti WHERE id = $id";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
// controllo che la SELECT abbia restituito un record
// l'id passato via GET potrebbe essere stato manipolato
if(mysql_num_rows($result) != 1) {
die("l'ID passato via GET è errato");
}
list($nome,$attivita) = mysql_fetch_row($result);
$nome = htmlspecialchars($nome);
?>
<form name="form_registrazione" method="post" action="">
<label>nome:
<input name="nome" type="text" value="<?echo $nome?>" />
</label>
<label>attività:
<select name="attivita">
<option value="0">:: seleziona ::</option>
<option value="1" <?if($attivita==1) echo 'selected="selected"'?>>studente</option>
<option value="2" <?if($attivita==2) echo 'selected="selected"'?>>lavoratore</option>
<option value="3" <?if($attivita==3) echo 'selected="selected"'?>>disoccupato</option>
</select>
</label>
</p>
<input name="invia" type="submit" value="Invia" />
</p>
</form>
<?
}
?>
vorrei sapere però, se io volessi modificare il campo attività. ma solo in determinati casi, come faccio?
mi spiego meglio.
il mio intento sarebbe quello di inserire una variabile numerica (che per esempio vale 500) e ogni utente possiede già un'altra variabile numerica, che varia a seconda dell'utente.
a questo punto vorrei verificare che:
-se l'utente nel campo attività è impostato come studente possa modificarlo solo con LAVORATORE. però la modifica sia possibile solo dopo che ho controllato che che la variabile numerica dell'utente sia maggiore della variabile numerica 500. altrimenti dia errore con messaggio visualizzato "variabile numerica insufficiente".
-se l'utente nel campo attività è impostato come lavoratore possa modificarlo solo con DISOCCUPATO. e la modifica sia possibile solo dopo che ho controllato che che la variabile numerica dell'utente sia maggiore della variabile numerica 500. altrimenti dia errore con messaggio visualizzato "variabile numerica insufficiente".
- se l'utente nel campo attività è impostato come DISOCCUPATO, non sia possibile fare nessuna modifica e mi dia un messaggio "modificato al massimo".
- nei casi in cui uno studente voglia passare a disoccupato o altri passaggi non citati sopra mi dia un messaggio di errore "operazione non consentita".
è possibile creare un codice del genere?
grazie mille per la vostra pazienza e disponibilità
quindi