Modifica dati con PHP

Allora assicurati che hai scritto 'mod' nel link e stampa il contenuto della $_GET['mod']
 
allora non ti fa la modifica perche quando dai il submit per modificare il get['mod'] in automatico lo perdi in quanto fai una post alla pagina modifica_TO.php dovresti semplicemente nel form della modifica inserire

HTML:
<input type="hidden" value="<?php echo $_GET['mod']; ?>" name="mod">

e nella parte php sostituisci
PHP:
isset($_GET['mod'])
con
PHP:
isset($_POST['mod'])
 
@gosh, tutto fatto come mi hai detto... adesso purtroppo non mi si vede più il form ma mi spuntano due errori, eccoli:
Notice: Undefined index: layout in C:\Programmi\EasyPHP-12.0\www\my portable files\Esercizio Cms\modifica_To.php on line 41
Notice: Undefined index: box in C:\Programmi\EasyPHP-12.0\www\my portable files\Esercizio Cms\modifica_To.php on line 42

:( mi sto scoraggiando...
 
riposto il file 'modifica_To.php' con le nuove modifiche:
PHP:
<?php
include('classes/classeBase.php');
?>

<?php 
 class modify{
 	
 	public $box;
 	public $layout;
 	public $id_layout;
 	public $id_box;
 	
 	public function update(){
 		if (isset($_POST['mod'])){
		$id=$_POST['mod'];//leggo l'id trasmesso
    	$query="UPDATE sum SET sum_id_layout = ('".$this->layout."'),sum_id_box = ('".$this->box."')WHERE sum_id=$id";
    	$ris=mysql_query($query); 
   		$row = mysql_fetch_assoc($ris);
    	$nome_lay= $row['nome_lay'];  
    	$nome_box= $row['nome_box']; 
    	  
 				if ($ris)
	    		{
					echo ("Modifica riuscita!"."<br />");
					
	    		}
				else{
					echo ("Errore nella modifica: ".mysql_error());// specifica gli errori
	   			 }
	   			 
		} 
 	}		
 }
 ?>

<?php
	
    $db = new MySqlClass();
	$db->connetti();
    $modify = new modify();// definizione dell'istanza (richiama la class)
	$modify->layout = $_POST['layout'];
	$modify->box = $_POST['box'];
    $modify->update();
 ?>

line 41 e 42 dove trova la notice:

$modify->layout = $_POST['layout'];
$modify->box = $_POST['box'];
 
posto anche il file 'modifica_cancella.php' dove c'è il form:
PHP:
<?php
include('classes/classeBase.php');
$db = new MySqlClass();
$db->connetti();
?>

<?php
if (isset($_GET['del'])){//cliccato su ELIMINA 
    $id=$_GET['del'];//leggo l'id trasmesso 
    $q="DELETE FROM sum WHERE sum_id=$id"; 
    $ris = mysql_query($q) or die('Errore...'. mysql_error());
    echo "eliminato il record $id"; 
    //qui il ritorno automatico alla pagina in cui si visualizza l'elenco 
    echo "<meta http-equiv='Refresh' content='3; URL=formSelect_To.php'>"; 
} 
if (isset($_GET['mod'])){
	$id=$_GET['mod'];//leggo l'id trasmesso
    $q1="SELECT b.nome_box,l.nome_lay 
    	FROM layout l, box b, sum s 
    	WHERE b.id_box=s.sum_id_box 
    	AND l.id_lay=s.sum_id_layout 
    	AND s.sum_id=$id"; 
    $ris1=mysql_query($q1); 
    $row = mysql_fetch_assoc($ris1);
    $nome_lay= $row['nome_lay'];  
    $nome_box= $row['nome_box']; 
    
} 
?>

	 <!--e qui il form di modifica, nei campi di input si visualizza il valore originale   -->
<!-- form modifica --> 
<h1> Modifica Box e Layout</h1>
		<form action="modifica_To.php" method="POST">
		<input type="hidden" value="<?php echo $_GET['mod']; ?>" name="mod">
		<center><table></center>
			<th> <label for="select1"> Posizione Layout </label> </th>
				<td colspan="3"> <select name="layout" id="sel">
					<option value="0"><?php echo "-".$nome_lay."-";?></option>
					<option value="1" >HEADER</option>
					<option value="2">MAIN</option>
					<option value="3">SIDEBARDX</option>
					<option value="4" >SIDEBARSX</option>
					<option value="5">FOOTER</option>
				    </select>
				</td>
			<tr>
				<th> <label for="select2"> Box da inserire </label> </th>
				<td colspan="3"> <select name="box" id="sel" >
					<option value="0"><?php echo "-".$nome_box."-";?></option>
					<option value="1" >CONTATTI</option>
					<option value="2">MAPPA</option>
					<option value="3">ARTICOLI</option>
					<option value="4" >RICERCA</option>
				    </select>
				</td>
			</tr>
				<!-- tasto per iviare il form -->
				<td colspan="2"> <center><input type="submit" name="tasto" value="modifica"/></center> </td>
			</tr>
		</table>
		</form>
 
Ciao,ho provato gli ultimi due file che hai postato ma non mi danno gli errori che dici
i dati in post vengono passati correttamente e mi produce questa query
Codice:
UPDATE sum SET sum_id_layout = ('1'),sum_id_box = ('3')WHERE sum_id=3
in ogni caso ti conviene fare il var_dump() un po su tutto in modifica_To.php per vedere cosa ti manca
sopratutto sul post e sulla query
PHP:
var_dump($_POST);
var_dump($query);

edit:
dimenticavo, queste righe non vanno messe dopo l'UPDATE
PHP:
$row = mysql_fetch_assoc($ris);
        $nome_lay= $row['nome_lay'];  
        $nome_box= $row['nome_box'];
 
Ultima modifica:
Ciao,ho provato gli ultimi due file che hai postato ma non mi danno gli errori che dici
i dati in post vengono passati correttamente e mi produce questa query
Codice:
UPDATE sum SET sum_id_layout = ('1'),sum_id_box = ('3')WHERE sum_id=3
in ogni caso ti conviene fare il var_dump() un po su tutto in modifica_To.php per vedere cosa ti manca
sopratutto sul post e sulla query
PHP:
var_dump($_POST);
var_dump($query);

edit:
dimenticavo, queste righe non vanno messe dopo l'UPDATE
PHP:
$row = mysql_fetch_assoc($ris);
        $nome_lay= $row['nome_lay'];  
        $nome_box= $row['nome_box'];

scusa la mia ignoranza...ma potresti spiegarmi cosa sono i var_dump e come si usano??? :confused:
 
servono per stampare il contenuto e il tipo di una variabile o di un array e si usano come te li ho postati
metti
PHP:
var_dump($_POST);
a inizio pagina
e il
PHP:
var_dump($query);
subito dopo la qery e posta il risultato che vedi a video
 
questo è ciò che mi compare a video:

array(0) { }

Notice: Undefined index: layout in C:\Programmi\EasyPHP-12.0\www\my portable files\Esercizio Cms\modifica_To.php on line 41

Notice: Undefined index: box in C:\Programmi\EasyPHP-12.0\www\my portable files\Esercizio Cms\modifica_To.php on line 42
 
vuol dire che non gli arrivano i dati
dovresti avere un output cosi
Codice:
array
  'mod' => string '3' (length=1)
  'layout' => string '3' (length=1)
  'box' => string '2' (length=1)
  'tasto' => string 'modifica' (length=8)
nel codice che hai postato però non vedo errori Sicura che stai usando quello?
 
si! per il programma sto usando questi file: uno dove c'è il form iniziale 'formSelect.php', cliccando su invia porta alla pagina 'formSelect_To.php', che è la pagina dove c'è la tabella con i record e i link di modifica e cancella, cliccando su modifica o cancella va alla pagina 'modifica_cancella.php' , che ho postato. In questa c'è il form che rimanda alla pagina 'modifica_To.php' che ho postato... :( :( non capisco dove sbaglio :crying:
 
hai detto che a modifica_cancella.php ci arrivi bene giusto?
vedi i due menu a tendina e il pulsante modifica
scegli, premi e ti invia a modifica_To.php dove hai messo i var_dump() e qui ti stampa array(0)

se cosi il problema non puo non essere che nel form
HTML:
<form action="modifica_To.php" method="POST">
 
questo è il form che si trova in modifica_cancella.php e che 'dovrebbe' condurmi a modifica_To.php... ma purtroppo non mi si visualizza nemmeno il form.. solo gli errori come sopra
HTML:
<h1> Modifica Box e Layout</h1>
		<form action="modifica_To.php" method="post">
		<input type="hidden" value="<?php echo $_GET['mod']; ?>" name="mod">
		<center><table></center>
			<th> <label for="select1"> Posizione Layout </label> </th>
				<td colspan="3"> <select name="layout" id="sel">
					<option value="0"><?php echo "-".$nome_lay."-";?></option>
					<option value="1" >HEADER</option>
					<option value="2">MAIN</option>
					<option value="3">SIDEBARDX</option>
					<option value="4" >SIDEBARSX</option>
					<option value="5">FOOTER</option>
				    </select>
				</td>
			<tr>
				<th> <label for="select2"> Box da inserire </label> </th>
				<td colspan="3"> <select name="box" id="sel" >
					<option value="0"><?php echo "-".$nome_box."-";?></option>
					<option value="1" >CONTATTI</option>
					<option value="2">MAPPA</option>
					<option value="3">ARTICOLI</option>
					<option value="4" >RICERCA</option>
				    </select>
				</td>
			</tr>
				<!-- tasto per iviare il form -->
				<td colspan="2"> <center><input type="submit" name="tasto" value="modifica"/></center> </td>
			</tr>
		</table>
		</form>
 
allor anon ti seguo
se non vai a modifica_To.php i var_dump() dove li hai messi?
in modifica_cancella?
cliccando su modifica o cancella va alla pagina 'modifica_cancella.php'
forse questo passaggio lo salti e vai diretta a modifica_To.php
 
Ultima modifica:
li ho messi in modifica_To.php
quando io clicco sul link "modifica" mi va sulla pagina modifica_To ma mi spuntano le notice di cui sopra e quello che restituisce il var dump....
 
riposto tutti i file in ordine

file 1: formSelect.php
HTML:
<!DOCTYPE html>
<html>
<head>
<style>
	#sel{width:157px;}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Select</title>
</head>
<body>
	<h1> Scegliere Box e Layout</h1>
		<form action="formSelect_To.php" method="POST">
		<center><table></center>
			<th> <label for="select1"> Posizione Layout </label> </th>
				<td colspan="3"> <select name="layout" id="sel">
					<option value="1" >HEADER</option>
					<option value="2">MAIN</option>
					<option value="3">SIDEBARDX</option>
					<option value="4" >SIDEBARSX</option>
					<option value="5">FOOTER</option>
				    </select>
				</td>
			<tr>
				<th> <label for="select2"> Box da inserire </label> </th>
				<td colspan="3"> <select name="box" id="sel">
					<option value="1" >CONTATTI</option>
					<option value="2">MAPPA</option>
					<option value="3">ARTICOLI</option>
					<option value="4" >RICERCA</option>
				    </select>
				</td>
			</tr>
				<!-- tasto per iviare il form -->
				<td colspan="2"> <center><input type="submit" name="tasto" value="invia"/></center> </td>
			</tr>
		</table>
		</form>
</body>
</html>

file 2: formSelect_To.php
PHP:
<?php
include('classes/classeBase.php');
?>

<?php 
 class dati{
 	
 	public $box;
 	public $layout;
 	public $id_layout;
 	public $id_box;
 	
 	public function save(){
 		$query="INSERT INTO sum (sum_id_layout,sum_id_box)
		  VALUES ('".$this->layout."','".$this->box."')";
 		
 	if (($result = mysql_query($query)))
	    {
		echo ("Inserimento riuscito!"."<br />");
	    }
	else{
		echo ("Errore nell'inserimento: ".mysql_error());// specifica gli errori
	    }
 	}
 	
 	public function show(){
 		$query="SELECT box.nome_box, layout.nome_lay, sum.sum_id
				FROM box
				INNER JOIN sum
				ON box.id_box = sum.sum_id_box
				INNER JOIN layout
				ON layout.id_lay = sum.sum_id_layout
				ORDER BY sum.sum_id ASC";
 		
 		$res = mysql_query($query) or die('Errore...'. mysql_error());
 		
		if($res && mysql_num_rows($res)>0){
     		while($row=mysql_fetch_assoc($res)){
     		$id=$row['sum_id'];
     		echo "<div class='container'>";
     		echo "<div class='row'>";
     		echo "<div class='span12'>";
     		echo "<link href='../bootstrap/css/bootstrap.min.css' rel='stylesheet'>";
        	echo "<table class='table table-hover table-bordered table-condensed'><thead><tr><th>ID</th><th>POSIZIONE</th><th>BOX</th><th>ELIMINA</th><th>MODIFICA</th></tr></thead>";
        	echo "<tbody><tr><td>".$row['sum_id']."</td>";
        	echo "<td>".$row['nome_lay']."</td>";
        	echo "<td>".$row['nome_box']."</td>";
        	echo "<td><a href='modifica_cancella.php?del=$id' onclick=\"return(confirm('stai eliminando $id'))\" >Clicca per eliminare</a></td>";
        	echo "<td><a href='modifica_To.php?mod=$id'>Vai al form per la modifica</a></td></tr></tbody></table>";
        	echo "</div>";
        	echo "</div>";
        	echo "</div>";
     	}
	} else{
     echo "nessun risultato";
 	}
 		mysql_free_result($res); // libero la memoria di PHP occupata dai record estratti con la SELECT
 }	
 }	
?>

<?php
    $db = new MySqlClass();
	$db->connetti();
    $dati = new dati();// definizione dell'istanza (richiama la class)
	$dati->layout = $_POST['layout'];
	$dati->box = $_POST['box'];
    $dati->save();
    $dati->show();
    
        
?>

file 3: modifica_cancella.php
PHP:
<?php
include('classes/classeBase.php');
$db = new MySqlClass();
$db->connetti();
?>

<?php
if (isset($_GET['del'])){//cliccato su ELIMINA 
    $id=$_GET['del'];//leggo l'id trasmesso 
    $q="DELETE FROM sum WHERE sum_id=$id"; 
    $ris = mysql_query($q) or die('Errore...'. mysql_error());
    echo "eliminato il record $id"; 
    //qui il ritorno automatico alla pagina in cui si visualizza l'elenco 
    echo "<meta http-equiv='Refresh' content='3; URL=formSelect_To.php'>"; 
} 
if (isset($_GET['mod'])){
	$id=$_GET['mod'];//leggo l'id trasmesso
    $q1="SELECT b.nome_box,l.nome_lay 
    	FROM layout l, box b, sum s 
    	WHERE b.id_box=s.sum_id_box 
    	AND l.id_lay=s.sum_id_layout 
    	AND s.sum_id=$id"; 
    $ris1=mysql_query($q1); 
    $row = mysql_fetch_assoc($ris1);
    $nome_lay= $row['nome_lay'];  
    $nome_box= $row['nome_box']; 
    
} 
?>

	 <!--e qui il form di modifica, nei campi di input si visualizza il valore originale   -->
<!-- form modifica --> 
<h1> Modifica Box e Layout</h1>
		<form action="modifica_To.php" method="post">
		<input type="hidden" value="<?php echo $_GET['mod']; ?>" name="mod">
		<center><table></center>
			<th> <label for="select1"> Posizione Layout </label> </th>
				<td colspan="3"> <select name="layout" id="sel">
					<option value="0"><?php echo "-".$nome_lay."-";?></option>
					<option value="1" >HEADER</option>
					<option value="2">MAIN</option>
					<option value="3">SIDEBARDX</option>
					<option value="4" >SIDEBARSX</option>
					<option value="5">FOOTER</option>
				    </select>
				</td>
			<tr>
				<th> <label for="select2"> Box da inserire </label> </th>
				<td colspan="3"> <select name="box" id="sel" >
					<option value="0"><?php echo "-".$nome_box."-";?></option>
					<option value="1" >CONTATTI</option>
					<option value="2">MAPPA</option>
					<option value="3">ARTICOLI</option>
					<option value="4" >RICERCA</option>
				    </select>
				</td>
			</tr>
				<!-- tasto per iviare il form -->
				<td colspan="2"> <center><input type="submit" name="tasto" value="modifica"/></center> </td>
			</tr>
		</table>
		</form>

file 4: modifica_To.php
PHP:
<?php var_dump($_POST); ?>

<?php
include('classes/classeBase.php');
?>

<?php 
 class modify{
 	
 	public $box;
 	public $layout;
 	public $id_layout;
 	public $id_box;
 	
 	public function update(){
 		if (isset($_POST['mod'])){
		$id=$_POST['mod'];//leggo l'id trasmesso
    	$query="UPDATE sum SET sum_id_layout = ('".$this->layout."'),sum_id_box = ('".$this->box."')WHERE sum_id=$id";
    	var_dump($query);  
    	$ris=mysql_query($query); 
    	  
 				if ($ris)
	    		{
					echo ("Modifica riuscita!"."<br />");
					
	    		}
				else{
					echo ("Errore nella modifica: ".mysql_error());// specifica gli errori
	   			 }
	   			 
		} 
 	}		
 }
 ?>

<?php
	
    $db = new MySqlClass();
	$db->connetti();
    $modify = new modify(); // definizione dell'istanza (richiama la class)
	$modify->layout=$_POST['layout'];
	$modify->box=$_POST['box'];
    $modify->update();
 ?>

eccoli tutti....
 
PHP:
 echo "<td><a href='modifica_To.php?mod=$id'>Vai al form per la modifica</a></td></tr></tbody></table>";
ma il form per la modifica non è modifica_To.php?mod=$id ma modifica_cancella.php?mod=$id
 
nessun risultato cosa vuoldire?
arrivi alla pagina modifica_cancella e cosa fa?
 

Discussioni simili