Form per modifica record database

antonioantonio

Nuovo Utente
27 Set 2015
25
0
0
Ciao a tutti!....volevo chiedervi aiuto....

ho una pagina .php che visulizza, in pratica, in alto una sezione con un form da compilare,dove vengono fatte delle domande:
PHP:
<form method="post" runat="server" action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="on"> 
    <table class="table" align="center">
      <tr>
        <td align="center" colspan="8" class="registro"><h1>REGISTRO</h1></td>
    </tr>

      <tr class="lbl">  
         <td class="lbl"; align="center">DATA</td>
       </td>
	 <td class="lbl"; align="center">UTENTE
       </td>
	 <td class="lbl"; align="center">CATEGORIA
       </td>
	 <td class="lbl"; align="center">SOTTO<br>CATEGORIA
       </td>
         <td class="lbl"; align="center">STATO
       </td>
     </tr>
      <tr>   
         <td> <input type="text" id="data"  name="data" value="" size="10" autocomplete="on">
       </td>
	 <td> <input type="text" id="ut"  name="ut" value="" size="15" autocomplete="on">
       </td>
	 <td> <input type="text" id="cat"  name="cat" value="">
       </td>
	 <td> <input type="text" id="sotcat"  name="sotcat" value="" size="15" autocomplete="on">
       </td>
         <td> <select id="stato"  name="stato" value="">
		<option></option>
		<option>Aperta</option>
		<option>Chiusa</option>
		<option>Annullata</option>
	      </select>
       </td>
     </tr>
       <tr>
         <td class="lbl"; align="center"; colspan="8">DESCRIZIONE
       </td>
     </tr>
       <tr>
	 <td colspan="8"> <input type="text" class="desc" id="desc"  name="desc" value="" size="137" autocomplete="on">
       </td>
     </tr>
       <tr>
	 <td align="center"; colspan="8"><input type="submit" name="inserisci" value="Inserisci"></td>
     </tr>
   </table>
  </form>

Subito sotto vengono mostrate tutte le domande fatte, praticamente una select di tutte le righe presenti nella tabella del db:

PHP:
<table class="tableregistro" border=1 cellspacing=0 cellpadding=3>
<?php

$HOST = 'localhost';
 $USER = 'xxxxx';
 $PASSWORD = 'yyyyyyyy';
$connessione = mysql_connect("$HOST","$USER","$PASSWORD");//database connection
mysql_select_db("xxxyyyy");


$sql = "SELECT * FROM `Registro`\n"
    . "ORDER BY `Registro`.`id` DESC";
$result = mysql_query($sql);

while($r = mysql_fetch_array($result)) {

//Grazie ancora a n1k4r0 per avermi aiutato con la risoluzione di questo mio precedente problema

$d = explode("-", $r['data']);
$dataRelIta = $d[2]. "/" .$d[1] . "/" .$d[0];

echo "<tr bgcolor='#FF8C69'>
	  <td>".$r['id']."</td>".
	 "<td style='width: 80px;'>".$dataRelIta."</td>".
	 "<td>".$r['utente']."</td>".
	 "<td>".$r['categoria']."</td>".
	 "<td style='width: 80px;'>".$r['sottocategoria']."</td>".
	 "<td style='width: 400px;'>".$r['descrizione']."</td>".
	 "<td>".$r['stato']."</td>".
    </tr>";

}

mysql_close($connessione);
?>
</table>

Ora, per la modifica dei record (in pratica la modifica dello stato della domanda "Aperta,Chiusa,In corso, Annullata")

Ho creato una seconda pagina , speculare alla prima , dove però nella riga dove vengono mostrate le domande fatte, aggiungo un tasto 'Modifica'

modifica.php:

PHP:
$sql = "SELECT * FROM `Registro` WHERE stato = \"Aperto\"\n"
    . "ORDER BY `Registro`.`id` DESC";
$result = mysql_query($sql);

while($r = mysql_fetch_array($result)) {

$d = explode("-", $r['data']);
$dataRelIta = $d[2]. "/" .$d[1] . "/" .$d[0];

echo "<tr bgcolor='#FF8C69'><td>"."<input type='submit' name='Modifica' value='Modifica'>"."</td>".
	 "<td>".$r['id']."</td>".
	 "<td style='width: 80px;'>".$dataRelIta."</td>".
	 "<td>".$r['richiedente']."</td>".
	 "<td>".$r['reparto']."</td>".
	 "<td>".$r['categoria']."</td>".
	 "<td style='width: 80px;'>".$r['sottocategoria']."</td>".
	 "<td>".$r['operatore']."</td>".
	 "<td style='width: 400px;'>".$r['descrizione']."</td>".
	 "<td>".$r['stato']."</td>".
	 "<td>".$r['tempoimpiegato']."</td>
    </tr>";

La mia domanda è : Come faccio a fare in modo che alla pressione del tasto 'Modifica' il form sovrastante si autocompili con i dati presenti nel db....permettendo poi la modifica dello stato della richiesta?

Spero di essere stato chiaro...

Grazie a chi vorrà darmi una mano
 
Ultima modifica:
Spero di essere stato chiaro...
sei stato chiarissimo, ma quello che chiedi, abbisogna di uno sviluppo che richiede tempo,
non è la semplice ricerca di un possibile errore
suggerimento,
hai due vie

la più semplice consiste nello sviluppare una sequenza di script che eseguono le operazioni in successione

la più complessa, puoi usare Ajax per farti restituire le informazioni con cui compilare il form, salvo sviluppare gli script di gestione delle operazioni

ciao
Marino
 
Ultima modifica:
Mamma mia!.....possibile che sia così difficile?.....ho letto in giro che è comunque fattibile....dopo non ci ho capito granché ok! .......ma Marino mi sembra tu la stia facendo un po troppo complicata
 
Beh Marino... se ne fossi stato in grado non avrei chiesto aiuto.....

Va beh..... c'è qualcuno più costruttivo che ha voglia di aiutarmi?
 
Allora...
provando a risolvere la cosa, ho pensato di aggiungere nel form un input type dove inserire l'id della richiesta da modificare, con accanto un tasto cerca,

A questo cercherò di fare in modo che recuperando l'id , anche le caselle del form si autocompilino con i dati relativi all'id recuperato.

Per il momento faccio solo una prova di stampa a video dei valori recuperati....prova che fallisce inesorabilmente, a video non viene stampato nulla!!!

Dove sbaglio? Vi posto il codice:

PHP:
if(isset($_POST['Cerca'])){ 

$id = $_POST['Cerca'];

$sql = "SELECT * FROM `Registro` WHERE id = '".$id."'";

$result = mysql_query($sql);

while($r = mysql_fetch_array($result)) {


$d = explode("-", $r['data']);
$dataRelIta = $d[2]. "/" .$d[1] . "/" .$d[0];

echo "<tr><td style='width: 80px;'>".$dataRelIta."</td>".
     "<td>".$r['richiedente']."</td>".
     "<td>".$r['categoria']."</td>".
     "<td style='width: 80px;'>".$r['sottocategoria']."</td>".
     "<td style='width: 400px;'>".$r['descrizione']."</td>".
     "<td>".$r['stato']."</td>".
    </tr>";

Grazie in anticipo.....aiutatemi ad uscire da questo pantano dove mi sono cacciato........
 
Ultima modifica:
ciao
se non ho capito male quello che vuoi fare potresti provare a fare qualcosa del genere
PHP:
<?php
//dati di connessione
if(isset($_GET){
	if(isset($_GET['AP'])){$id=(int)$_GET['AP']; $stato="aperta";}
	if(isset($_GET['CH'])){$id=(int)$_GET['CH']; $stato="chiusa";}
	if(isset($_GET['IC'])){$id=(int)$_GET['IC']; $stato="in corso";}
	if(isset($_GET['AN'])){$id=(int)$_GET['AN']; $stato="annullata";}
	//un controllo dell'id se numerico e maggiore di zero
	$up="UPDATE Registro SET stato='$stato' WHERE id=$id";
	$ris=mysql_query($up);
	//e un ritorno automatico alla pagina
}
//.....
$sql = "SELECT * FROM Registro WHERE stato = 'Aperto' ORDER BY id DESC";
$result = mysql_query($sql);
echo "<table>";
echo "<tr><td>id</td><td>data</td><td>richiedente</td><td>reparto</td><td>categoria</td><td>sottocategoria</td><td>descrizione</td><td>stato</td><td>tempo</td>
	<td>apri</td><td>chiudi</td><td>in corso</td><td>annulla</td></tr>";
while($r = mysql_fetch_array($result)){
	$d = explode("-", $r['data']);
	$dataRelIta = $d[2]. "/" .$d[1] . "/" .$d[0];
	$id=$r['id'];
	$richiedente=$r['richiedente'];
	$repartto=$r['reparto'];
	//ecc.. gli altri dati
	echo "<tr><td>$id</td><td>$dataRelIta</td>....
	<td><a href=\"?AP=$id\">apri</a></td>
	<td><a href=\"?CH=$id\">chiudi</a></td>
	<td><a href=\"?IC=$id\">in corso</a></td>
	<td><a href=\"?AN=$id\">annulla</a></td></tr>";
}
echo "</table>";
//....
?>
forse è il sistema più semplice
 
Bellissimo!!

GRAZIE borgo italia!

funziona alla perfezione direi, grazie anche per essere stato l'unico a darmi una mano!
 
ciao
pensandoci mi è venuta in mente una soluzione migliore
rispetto alla precedente ha come vantaggio
1. puoi modificare più righe contemporaneamente
2. prima di dare il submit puoi verificare di aver fatto giusto
3. è più sicuro, il get è sempre potenzialmente pericoloso
PHP:
<?php
//dati di connessione
if(isset($_POST['aggiorna']){
    if($_POST['cosa']{
		foreach($_POST['cosa'] as $id => $valore){
			switch($valore){
				case 'AP':$stato="aperta";break;
				case 'CH':$stato="chiusa";break;
				case 'IC':$stato="in corso";break;
				case 'AN':$stato="annullata";break;
				default:$stato="aperta";break;//per sicurezza
			}
			$up="UPDATE Registro SET stato='$stato' WHERE id=$id";
			$ris=mysql_query($up);
		}
	}
    //e un ritorno automatico alla pagina
}
//.....
$sql = "SELECT * FROM Registro WHERE stato = 'Aperto' ORDER BY id DESC";
$result = mysql_query($sql);
echo "<form action='$_SERVER['PHP_SELF']' method='post'>"
echo "<table>";
echo "<tr><td>id</td><td>data</td><td>richiedente</td><td>reparto</td><td>categoria</td><td>sottocategoria</td><td>descrizione</td><td>stato</td><td>tempo</td>
    <td>apri</td><td>chiudi</td><td>in corso</td><td>annulla</td></tr>";
while($r = mysql_fetch_array($result)){
    $d = explode("-", $r['data']);
    $dataRelIta = $d[2]. "/" .$d[1] . "/" .$d[0];
    $id=$r['id'];
    $richiedente=$r['richiedente'];
    $repartto=$r['reparto'];
    //ecc.. gli altri dati
    echo "<tr><td>$id</td><td>$dataRelIta</td>....
    <td>apri <input name='cosa[$id]' type='radio' value='AP'></td>
    <td>chiudi<input name='cosa[$id]' type='radio' value='CH'></td>
    <td>in corso<input name='cosa[$id]' type='radio' value='IC'></td>
    <td>annulla<input name='cosa[$id]' type='radio' value='AN'></td></tr>";
}

echo "<tr><td>id</td><td>&nbsp;</td><td>&nbsp;</td>....<td>tempo</td>
    <td>apri</td><td>chiudi</td><td>in corso</td><td><input name='aggiorna'type='submit' id='aggiorna' value='aggiorna'></td></tr>";
echo "</table>";
echo "</form>";
//....
?>
provalo, l'ho buttato giu di corsa e quindi posso essermi dimenticato/sbagliato qualcosa
 

Discussioni simili