modifica campo non funziona

  • Creatore Discussione Creatore Discussione lelemkop
  • Data di inizio Data di inizio

lelemkop

Utente Attivo
2 Lug 2013
55
0
6
Ciao a tutti, sono nuovo sia di programmazione che del forum.
Vengo subito al problema che sto incontrando.
I miei genitore hanno un piccolo negozietto di autoricambi e volevo creare un db con mysql e php dove tener presente tutti i clienti e le loro auto.
Ho provato a creare due tabelle relazionate, ma ho desistito per una serie di ragioni.
Quindi avevo pensato di creare un'unica tabella dove inserire prima i dati del cliente e successivamente modificare/aggiungere dati nei campi prescelti.
Vi posto le pagine php.
inserisci.php
PHP:
<?php
session_start();
isset($_SESSION['check'])  ?  $check =  $_SESSION['check']  :  $check = '';
$caso = microtime();
$str = <<<FORM
<html><body>
<form method = "POST" action = "$_SERVER[PHP_SELF]">

<input type="text" name="cognome" id="cognome"  placeholder="'Cognome'" style="width: 500px;"/>
<input type="text" name="nome" id="nome"  placeholder="'Nome'" style="width: 500px;"/>
<input type="text" name="telefono" id="telefono"  placeholder="'Telefono'" style="width: 500px;"/>
<input type="text" name="operatore" id="operatore"  placeholder="'Operatore'" style="width: 500px;"/>
<input type="submit" value="Aggiungi">
<a href="http://192.168.0.9/cerca.php">CERCA</a>
<a href="http://192.168.0.9/tabella1.php">tabella</a>
</body></html>
FORM;
if(isset($_POST['cognome'], $_POST['nome']) AND $_POST['cognome']!='' AND $_POST['nome']!='')
  {
          if($check === MD5(serialize($_POST)) ) {
                  echo "<br />Dati gia immessi - ciao ciao";
                  echo $str;
                  exit;
                  } else {

                  
	  $cognome = trim($_POST['cognome']);
		  $nome = trim($_POST['nome']);
		  $telefono = trim($_POST['telefono']);
                  $operatore = trim($_POST['operatore']);

$tipologia= strtoupper ($tipologia);
$cognome = strtoupper($_POST['cognome']);
$nome = strtoupper($_POST['nome']);
$telefono = strtoupper($_POST['telefono']);
$operatore = strtoupper($_POST['operatore']);

                  require "conn.php";
                  mysql_select_db('prova');

                  mysql_query("INSERT INTO interventi (cognome,nome,telefono,operatore)
                               VALUES ( NOW(), '$cognome','$nome','$telefono','$operatore')");
                  $num = mysql_affected_rows();

                     if($num == 1)  {
                       echo "<br />Dati inseriti<br />";
                       $_SESSION['check'] = MD5(serialize($_POST));
                       echo $str;
                       exit;
                       }
                            else  {
                                  echo "<br />Dati NON inseriti - Riprova";
                                  echo $str;
                                  exit;
                                   }
                 }

 }  
else {
        echo $str;
      }
?>

stampo tutto a video trmaite tabella.php
<html>

  <head>
   <title>Test</title>
<link rel="stylesheet" type="text/css" href="tabella.css">
  </head>

  <body bgcolor="white">
<?php
include 'conn.php';
 

echo '<br><br>';
echo "<span style=\"color: black; allign: center; font-size: 36pt\">SCHEDE IN ATTO</span>";
$sql = "SELECT * FROM clienti order by id";
$res = mysql_query($sql) or die(mysql_error());
 
echo '
<table border="0" cellpadding="10" cellspacing="0">
<tr>
<td><b>id</b></td>
<td><b>cognome</b></td>
<td><b>nome</b></td>
<td><b>telefono</b></td>
<td><b>operatore</b></td>
<td><b>auto</b></td>
<td><b>targa</b></td>
<td></td>
<td></td>
</tr>
 
	';
 
while ($row = mysql_fetch_array($res))
{
	echo '
<tr>
<td>' . $row['id'] . '</td>
<td>' . $row['cognome'] . '</td>
<td>' . $row['nome'] . '</td>
<td>' . $row['telefono'] . '</td>
<td>' . $row['operatore'] . '</td>
<td>' . $row['auto'] . '</td>
<td>' . $row['targa'] . '</td>
<td><a href="auto.php?id=' . $row['id'] . '">[Aggiungi Auto]</a></td>
<td><a href="salva.php?id=' . $row['id'] . '">[Chiudi]</a></td>
</tr>
 
		';
}
 
echo '</table>
 
';
?>
 </body>

  </html>
Come vedete ci sono due campi in più (Auto e targa) che vorrei inserire successivamente
Vorrei modificare tutto tramite la pagina auto.php
PHP:
<html>
<body>
<form action="tabella1.php" method="POST">
Auto:<input size='16'  name ='auto' style="width: 250px;"/>
Targa:<input size='16'  name ='targa' style="width: 250px;"/>
<input type="submit">
</form>
</body>
</html>
<?
$con=mysqli_connect("localhost", "root", "", "prova");
if (mysqli_connect_errno())
{
echo "connessione fallita".mysqli_connect_errno();
}
$id="$_GET[id]";
$auto = strtoupper($_POST['auto']);
$targa = strtoupper($_POST['targa']);
$sql="SELECT id FROM clienti";
$sqlins = " UPDATE clienti SET auto = '$auto', targa=$targa' where id='" . $_GET["id"] . "'";
if (!mysqli_query($con,$sql))
{
die ('Errore: '.mysqli_error($sql));
}
echo "Connesso";
mysqli_close($con);
?>
Il mio problema è che le prime due pagine lavorano egregiamente mente auto.php non mi modifica i campi auto e targa.
Dove sbaglio???
Grazie
 
Ultima modifica di un moderatore:
Ciao,
Prima di tutto una cosa quasi totalmente estetica e per risparmio di caratteri...
Questo:
PHP:
isset($_SESSION['check'])  ?  $check =  $_SESSION['check']  :  $check = '';
lo puoi scrivere anche cosi
PHP:
$check =  isset($_SESSION['check'])  ?  $_SESSION['check']  : '';

<html>
<body>
<form action="tabella1.php" method="POST">
Auto:<input size='16' name ='auto' style="width: 250px;"/>
Targa:<input size='16' name ='targa' style="width: 250px;"/>
<input type="submit">
</form>
</body>
</html>
<?
$con=mysqli_connect("localhost", "root", "", "prova");
if (mysqli_connect_errno())
{
echo "connessione fallita".mysqli_connect_errno();
}
$id="$_GET[id]";
$auto = strtoupper($_POST['auto']);
$targa = strtoupper($_POST['targa']);
$sql="SELECT id FROM clienti";
$sqlins = " UPDATE clienti SET auto = '$auto', targa=$targa' where id='" . $_GET["id"] . "'";
if (!mysqli_query($con,$sql))
{
die ('Errore: '.mysqli_error($sql));
}
echo "Connesso";
mysqli_close($con);
?>
Il mio problema è che le prime due pagine lavorano egregiamente mente auto.php non mi modifica i campi auto e targa.
Dove sbaglio???
Grazie

Non ho capito... questa è la pagina auto.php??
 
PHP:
<html>
<body>
<form action="tabella1.php" method="POST">
Auto:<input size='16' name ='auto' style="width: 250px;"/>
Targa:<input size='16' name ='targa' style="width: 250px;"/>
<input type="submit">
</form>
</body>
</html>

l'action del form ti manda sulla pagina tabella1.php, mentre tu il codice dell'upload ce l'hai su auto.php
inoltre io aggiungerei un campo hidden che si popola con l'id. Es:
PHP:
<html>
<body>
<form action="" method="POST">
Auto:<input size='16' name ='auto' style="width: 250px;"/>
Targa:<input size='16' name ='targa' style="width: 250px;"/>
<input type="hidden" name="id" value="<?php echo intval($_GET['id'); ?>" />
<input type="submit">
</form>
</body>
</html>

Inoltre se vuoi lasciare tutto sulla stessa pagina metti un controllo... Per esempio:
PHP:
//controllo se è stato inviato qualcosa
if(isset($_POST['auto']) || (isset($_POST['targa'])):


$con=mysqli_connect("localhost", "root", "", "prova");
if (mysqli_connect_errno())
{
echo "connessione fallita".mysqli_connect_errno();
}
//$id="$_GET[id]";
$id=intval($_POST['id']); //le virgolette esterne non servono, servono quelle interne! intval prende solo i numeri da quello che gli si passa
$auto = strtoupper($_POST['auto']);
$targa = strtoupper($_POST['targa']);
//$sql="SELECT id FROM clienti"; // a cosa serve??
$sqlins = " UPDATE clienti SET auto = '$auto', targa='$targa' where id= $id"; // mancava un ' a targa, hai valorizzato la variabile $id, usiamola.
if (!mysqli_query($con,$sqlins )) //penso che dobbiamo eseguire sqlins  non sql. correggimi se sbaglio
{
die ('Errore: '.mysqli_error($sqlins ));
}
echo "Connesso";
mysqli_close($con); // questo non serve.. php lo chiude automaticamente ma se vuoi lasciarlo non cambia nulla

//chiudo il controllo
endif;

Ho messo un po' di commenti.
Dimmi se funziona
 
Ultima modifica:
Grazie per le risposte e soprattutto per i commenti.

if(isset($_POST['auto']) || (isset($_POST['targa'])):

mi da questo errore

Parse error: syntax error, unexpected ':' in /var/www/auto.php on line 13
ho provato a mettere anche ; ma mi da lo steso errore.
 
c'era una parentesi di troppo. errore mio
PHP:
if(isset($_POST['auto']) || isset($_POST['targa'])):
 
Ti devo fare i complimenti.
Funziona tutto e soprattutto me l'hai spiegato come se lo spiegassi ad un bambino di 4 anni ( cit. Philadelfia).
Ti ringrazio ancora...
 

Discussioni simili