[PHP] Update non trasferisce condizione where

darione78

Nuovo Utente
22 Giu 2018
4
0
1
Buongiorno a tutti.
Sono a chiedervi aiuto perchè ormai da troppi giorni non riesco ad andare avanti.
In pratica in un'istruzione di aggiornamento su una tabella di un db non risco a applicare una condizione where dinamica. Quindi se creo una variabile $id non funziona se invece nel codice scrivo il valore dell'id allora l'update funziona. Uso un mac con MAMP e SequelPro per la gestione del db, mentre per i codice uso dreamweaver.
PHP:
<?
include('../Connections/Conn.php');

$id = intval($_POST['id']);
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$dataN=$_POST['dataN'];
$sex=$_POST['sex'];
$note=$_POST['note'];


echo  $_POST['id'];
echo "</br>";
echo  $_POST['nome'];
echo "</br>";
echo  $_POST['cognome'];


?>

<form action="formUpdClienti.php" method="post">
<input type="hidden" name="id"C value="<? echo $id; ?>" />
        <div class="input-group">
            <label>Nome</label>
            <input type="text" name="nomeC" value="<? echo $nome; ?>" />   
        </div>
        
        <div class="input-group">
            <label>Cognome</label>
            <input type="text" name="cognomeC" value="<? echo $cognome; ?>"/>
        </div>
        
        <div class="input-group">
            <label>Data Nascita</label>
            <input type="text" name="dataNC" value="<? echo $dataN; ?>"/>
        </div>
        
        <div class="input-group">
            <label>Sesso</label>
            <input type="text" name="sexC" value="<? echo $sex; ?>"/>
        </div>
        
    <div class="input-group">
      <label>Note</label>
            <input type="text" name="noteC" value="<? echo $note; ?>"/>
        </div>
        
        <div class="input-group">
            <? //if ($edit_state = false): ?>
                <button type="submit" name="save" class="btn">Salva</button>
            <? //else: ?>
                <button type="submit" name="update" class="btn">Modifica</button>
            <? //endif ?>
            
        </div>
<?


$id = intval($_POST['idC']);
$nome=$_POST['nomeC'];
$cognome=$_POST['cognomeC'];
$dataN=$_POST['dataNC'];
$sex=$_POST['sexC'];
$note=$_POST['noteC'];

if(isset($_POST['update'])){
    
$idcc=$_GET['idCliente'];

$updCliente = mysql_query("UPDATE Clienti SET Nome='$nome' ,Cognome='$cognome',Data_nascita='$dataN',sesso='$sex',Note='$note' WHERE idCliente=$idcc");
}
?>
HTML:
<?
include('../Connections/Conn.php');

$qryCl = mysqli_query($Conn, "SELECT * FROM Clienti");



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Elenco Clienti</title>
</head>

<body>

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Cognome</th>
            <th>Data Nascita</th>
            <th>Sesso</th>
            <th>Note</th>
            <th>Action</th>
        </tr>       
    </thead>
    <tbody>
    
      <? while($row = mysqli_fetch_array($qryCl)) { ?>
          <tr>
            <td><? echo $row['idCliente'] ?></td>
            <td><? echo $row['Nome']; ?></td>
            <td><? echo $row['Cognome']; ?></td>
            <td><? echo $row['Data_nascita']; ?></td>
            <td><? echo $row['sesso']; ?></td>
            <td><? echo $row['Note']; ?></td>
            <td><a href="formClienti.php?idCliente=<? echo $row['idCliente']; ?>" >Modifica</a></td>
        </tr>
      <? } ?> 
    </tbody>
</table>

</body>
</html>
 
non so se ho capito quello che vuoi fare,
se non lo avessi capito scusami e butta tutto nel "cestino"
se ho capito hai un po' da lavorare, sia sulla logica dei trattamenti sia sul codice,
ho diviso il codice in 3 pagine

la prima, elenca i clienti ed attiva la pagina successiva se un cliente deve essere modificato
pagina1.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Elenco Clienti</title>
</head>
<body>
<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Cognome</th>
            <th>Data Nascita</th>
            <th>Sesso</th>
            <th>Note</th>
            <th>Action</th>
        </tr>       
    </thead>
    <tbody>
    <?
    include('../Connections/Conn.php');
    $qryCl = mysqli_query($Conn, "SELECT * FROM Clienti");
    while($row = mysqli_fetch_array($qryCl))
    {
        echo "<tr>"
           . "<td>" . $row['idCliente']    . "</td>"
           . "<td>" . $row['Nome']         . "</td>"
           . "<td>" . $row['Cognome']      . "</td>"
           . "<td>" . $row['Data_nascita'] . "</td>"
           . "<td>" . $row['sesso']        . "</td>"
           . "<td>" . $row['Note']         . "</td>"
           . '<td><a href="pagina2.php?idCliente=' . $row['idCliente'] . '">Modifica</a></td>'
           . "</tr>";
    }
    ?>
    </tbody>
</table>
</body>
</html>

la seconda, gestisce l'inserimento o la modifica dei dati del cliente
pagina2.php
PHP:
<?
include('../Connections/Conn.php');

if(empty($_GET['idCliente']))
{
    // lo script è richiamato per un nuovo inserimento,
    // si devono azzerare i campi in modo da inizializzarli e visualizzarli successivamente vuoti
}
else
{
    $id = intval($_GET['idCliente']);

    // lo script è richiamato per una modifica,
    // bisogna leggere dal db i dati del cliente selezionato
    // oppure passarli nel link come già fatto per "idCliente"
    // in ogni caso valorizzare i campi come ricevuti dal db o dalla GET in modo da visualizzarli
}
?>
<form action="pagina3.php" method="post">
    <input type="hidden" name="id"C value="<? echo $id; ?>" />
        <div class="input-group">
            <label>Nome</label>
            <input type="text" name="nomeC" value="<? echo $nome; ?>" />   
        </div>
        <div class="input-group">
            <label>Cognome</label>
            <input type="text" name="cognomeC" value="<? echo $cognome; ?>"/>
        </div>
        <div class="input-group">
            <label>Data Nascita</label>
            <input type="text" name="dataNC" value="<? echo $dataN; ?>"/>
        </div>
        <div class="input-group">
            <label>Sesso</label>
            <input type="text" name="sexC" value="<? echo $sex; ?>"/>
        </div>
        <div class="input-group">
            <label>Note</label>
            <input type="text" name="noteC" value="<? echo $note; ?>"/>
        </div>
        <div class="input-group">
            <? //if ($edit_state = false): ?>
                <button type="submit" name="save" class="btn">Salva</button>
            <? //else: ?>
                <button type="submit" name="update" class="btn">Modifica</button>
            <? //endif ?>
            
        </div>
</form>

la terza pagina inserisce o modifica i dati nel db
pagina3.php
PHP:
<?
include('../Connections/Conn.php');

// questo script riceve i dati da trattare inviati dalla pagina precedente

$id = intval($_POST['idC']);
$nome=$_POST['nomeC'];
$cognome=$_POST['cognomeC'];
$dataN=$_POST['dataNC'];
$sex=$_POST['sexC'];
$note=$_POST['noteC'];

if(isset($_POST['update'])){
    
$updCliente = mysql_query("UPDATE Clienti SET Nome='$nome' ,Cognome='$cognome',Data_nascita='$dataN',sesso='$sex',Note='$note' WHERE idCliente=$idcc");

}
?>

come detto,
devi controllare la logica inserimento/modifica
devi gestire il passaggio delle variabili tra gli script
devi verificare tutti i nomi dei campi "html" che siano gli stessi usati da "php"

buon lavoro
 

Discussioni simili