Modificare dati da una tabella

Fededark

Nuovo Utente
10 Mar 2012
4
0
0
Ciao a tutti

Sto facendo un programmino che permetta la gestione di una gara di atletica e mi sono trovato a dover permettere la modifica delle iscrizioni. I dati sono salvati in un database MySQL e quello che vorrei fare è stampare a video tutti i partecipanti ad una gara e fare scegliere all'utente quale modificare e in quale modo...
Un esempio vale più di mille parole:

Pinco Pallino è iscritto alla gara di salto in lungo, e viene stampata a video una tabella nella quale sono contenuti tutti i partecipanti maschi della gara di salto in lungo con la stessa età di Pinco Pallino.

[table="width: 500, class: grid"]
[tr]
[td]Codice[/td]
[td]Nome[/td]
[td]Cognome[/td]
[td]Data di nascita[/td]
[td]Scuola[/td]
[td]Gara[/td]
[/tr]
[tr]
[td]156[/td]
[td]Pinco[/td]
[td]Pallino[/td]
[td]1/1/1111[/td]
[td]Nome scuola[/td]
[td]Salto in lungo[/td]
[/tr]
[/table]

ma succede che si ammala e deve essere sostituito da Tizio Caio, che però è nato in un giorno differente, oppure l'iscrizione è sbagliata e bisogna cambiare la gara, oppure ancora cancellarla del tutto.
Quindi io ho fatto una procedura in php che estrae i dati dal database e con questi riempie una tabella. L'utente a questo punto deve poter modificare o cancellare le singole righe della tabella, e ho pensato di fare in un modo del genere:

[table="width: 500, class: grid"]
[tr]
[td]Codice[/td]
[td]Nome[/td]
[td]Cognome[/td]
[td]Data di nascita[/td]
[td]Scuola[/td]
[td]Gara[/td]
[/tr]
[tr]
[td]156[/td]
[td]Pinco[/td]
[td]Pallino[/td]
[td]1/1/1111[/td]
[td]Nome scuola[/td]
[td]Salto in lungo[/td]
[td]modifica[/td]
[td]elimina[/td]
[/tr]
[/table]

dove "modifica e "elimina" sono link alle rispettive pagine che eseguono l'operazione richiesta. Il mio problema è che non so come passare a queste pagine le variabili che contengono i valori (Pinco, Pallino, ecc.) con i quali interrogare il database. Come posso fare?

Grazie mille!
 
Ciao,

Supponendo che la pagina di di modifica si chiami edit.php devi aggiungere alla scritta modica
PHP:

PHP:
 href="edit.php?id=' . $var['id']


Mentre nella pagina edit.php

PHP:
$id = (int) $_GET['id'];   
$sql = "select * from tua tabella where id = $id;";
$res = mysql_query($sql);
$row = mysql_fetch_array($res)
In questo modo hai passato i dati poi puoi visualizzarli in un input di testo con un
PHP:
<?php echo $row['nome']?>
quelli che ti occorrono e che vuoi far modificare. L'unica accortezza e che devi sempre aggiungere un
PHP:
<input type="hidden" value="<?php  echo $_GET['id']?>"  name="id" />

Spero di averti fatto capire qualcosa :D
 
ciao
una piccola osservazione visto che c'è modifica e elimina
1. chiama in modo diverso le querystringhe da inviare con il get
2. l'eliminazione è sempre potenzialmente pericolosa, metti almeno una richiasta di conferma

PHP:
<a href="edit.php?mod=<?php echo $var['id'];?>">modifica</a>
<a href="edit.php?eli=<?php echo $var['id'];?>" onclick="return(confirm('attenzione stai eliminando:CONFERMA'))">elimina</a>

poi, schematicamente, nella pagina edit.php
PHP:
<?php
if(isset($_GET['mod']) || isset($_GET['eli']){
	if(isset($_GET['eli'])){
		//verifichi che il get sia un numero e se si fai la queri di delete
	}elseif(isset($_GET['mod'])){
		//verifichi che il get sia un numero se si
		//estrai con una query select i dati e riempi il form e lo visualizzi
		//come ha detto bivio puoi trasmettere dal form l'id con un campo nascosto
		echo "<form ........>";
		//.....
		echo "</form>";
	}

}else{
	//fai ritornare
}
if(isset($_POST['submit_del_form'])){
	//raccogli i vari dati compreso l'id, li verifichi e fai la query di update
}
?>
fai comunque sempre delle prove su un db di prova
 
Grazie mille a entrambi :love:

Ora ho un ultima domanda:

il codice l'ho fatto così:

PHP:
<tr>
<form name='Modifica' action='modifica.php' method='post'>					
	<td> <center> ".$valori['Codice']." </center> </td>
	<td><input type='text' name='cognome' value='".$valori['Cognome']."'></td>
	<td><input type='text' name='nome' value='".$valori['Nome']."'></td>";
		$nascita = convertiData($valori['Data_di_nascita']);
echo	"<td><input type='text' name='nascita' value='".$nascita."'></td>
	<td>";
		$connetti=mysql_connect("localhost", "root", "");
		mysql_select_db("deggiovanni", $connetti);
		$result = mysql_query("SELECT * FROM gare ORDER BY codice", $connetti);
	        mysql_close($connetti);
		righe = mysql_num_rows($result);
		echo "<select name='sfida'>";
		for($i=0; $i<$righe; $i++){
			$gare=mysql_fetch_array($result);
			echo "<option value='".$gare['Nome_gara']."'";
			if($gare['Nome_gara'] == $gara){
				echo "selected='selected'";
			}
			echo ">".$gare['Nome_gara']."</option>";
		}
		echo "</select>
	</td>
	<td>
		<input type='hidden' name='code' value='".$valori['Codice']"'>
		<a href='modifica.php?mod=".$valori['Codice']."'>Modifica</a> 
		<a href='modifica.php?eli=".$var['Codice']."' onclick='return(confirm('Vuoi davvero eliminare questo elemento?:CONFERMA'))'>Elimina</a>
	</td>";
echo	"
</form>
<tr>

In pratica ogni riga della tabella è una form e l'utente può modificare direttamente i dati (anche se ora che ho letto le vostre risposte potrei anche modificare tutto... Ma potrebbe anche scocciarmi xD). Comunque se io volessi inviare tutti i dati della form mediante i link, come devo fare?
In pratica nel link:

<a href='modifica.php?mod=".$valori['Codice']."'>Modifica</a>

Cosa devo mettere al posto di .$valori['Codice'].?

Oppure addirittura usando dei button:

<input type="button" value="Modifica" onclick=".....">
<input type="button" value="Modifica" onclick=".....">

Così che invio a due pagine differenti, mod.php e del.php a seconda del button cliccato... il problema è sempre quello: come fare per inviare i dati della form? (Anche se vanno inviati ad una pagina diversa da quella scritta nel campo action della form... si può fare?)
 
Ultima modifica:

Discussioni simili