update file modificati su database

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ciao! Sto cercando di modificare il nome e descrizione dei prodotti che vengono caricati dinamicamente da DB.

HTML:
 <table id="table-present-list">
            <tr>
                <th class="list-ID">ID</th>
                <th class="list-NA">Nome</th>
                <th class="list-DE">Descrizione</th>
            </tr>
            <?php 
                // Connection to DB
                include 'db/connect.php';
                include 'db/config.php';
                // Esecuzione della query
                $result = mysql_query($query) or die(mysql_error());
                for ($i=0; $i<mysql_num_rows($result); $i++) { 
                // di volta in volta leggo dalla matrice dei dati le 3 variabili e le assegno
                $row = mysql_fetch_array($result);
                $productID = $row['id'];
                $productNA = $row['nome'];
                $productDE = $row['desc'];
            ?>
                <tr>
                    <td class="list-ID"><?php echo $productID; ?></td>
                    <td class="list-NA">
                        <input class="list-NA" type="text" maxlength="50" style="width:100%;" name="productName<?php echo $productID; ?>" value="<?php echo $productNA;?>" />
                    </td>
                    <td class="list-DE">
                        <input class="list-DE" type="text" maxlength="50" style="width:100%;" name="productDesc<?php echo $productID; ?>" value="<?php echo $productDE;?>" />
                    </td>
                </tr>
            <?php } ?>
        </table>
    </fieldset>
    <div class="center maxSize">
        <button type="submit" name="submit" style="width:150px;" class="center">Submit</button>
    </div>

PHP:
<?php
// richiamo il file di configurazione
include 'db/config.php';

// richiamo lo script responsabile della connessione a MySQL
include 'db/connect.php';

if(isset($_GET['productName'])){
    $id_del=(int) $_POST['submit'];
	$tabella = $_REQUEST['cat'];
    
        $q="INSERT INTO $tabella WHERE id= ".$id_del;
        if(mysql_query($q)){
            $avviso="modifica avvenuta con successo";
        }else{
            $avviso="non è stato possibile modificare la query";
        }
        echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		
		header("Location: ".$_SERVER['HTTP_REFERER']);
		
		
    
}
		
    

?>

Come faccio a richiamare name="productName<?php echo $productID; ?> e name="productDesc<?php echo $productID; ?>
In molte circostanze il buon borgo italia consiglia di usare var_dump. In questo caso dove potrei utilizzarlo per capire l'errore?
Grazie a tutti!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa più che capire l'errore con un var_dump, bisognerebbe capire cosa fa quello script php, io non ci riesco (e in parte il form)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Mi associo,
non si capisce molto
cmq per modificare un dato esistente si usa UPDATE e non INSERT
questa query non ha senso
PHP:
$q="INSERT INTO $tabella WHERE id= ".$id_del;
al massimo sarà qualcosa del genere
PHP:
$q="UPDATE $tabella SET valore = '" . $nuovo_valore . "' WHERE id= " . $id_del;
in piu se scrivi cosi
PHP:
$id_del=(int) $_POST['submit'];
l'id sara sempre 0,
potrebbe essere invece
PHP:
$id_del=(int) $_POST['input_che_contiene_id'];
 
Ultima modifica:

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
E' vero il problema sta appunto nel fatto che id è sempre 0. Non capisco cosa intendi con "input_che_contiene_id"
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
devi creare un nuovo input nel form che contenga l'id

PHP:
<input type='hidden' name='list-ID' value='<?php echo $productID; ?>'/>

e poi lo recuperi cosi

PHP:
$id_del=(int) $_POST['list-ID'];
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ottimo adesso funziona!! Solo che ho notato un altro problema.
Riesco ad aggiornare soltanto l'ultimo campo presente nel database e non gli altri..
Posto nuovamente il codice con gli aggiornamenti
PHP:
<?php
// richiamo il file di configurazione
include 'db/config.php';

// richiamo lo script responsabile della connessione a MySQL
include 'db/connect.php';

if(isset($_GET['cat'])){	
   $id_del=(int) $_POST['list-ID']; 
	$tabella = $_REQUEST['cat'];
	$productName = $_REQUEST['productName'];    
        $q="UPDATE $tabella SET nome = '$productName' WHERE id= '$id_del'";
		echo $q;
        if(mysql_query($q)){
            $avviso="update avvenuto con successo";
        }else{
            $avviso="non è stato possibile modificare la query";
        }

}

Penso che sia dovuto al fatto che non richiamo correttamente il campo name="productName<?php echo $productID; ?>
Ma come si fa?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so, io non farei un campo hidden che trasmetta l'id anche perchè così nell'up poi si va ad interessare tutta la tabella.
metterei piuttosto in coda al nome/descrizione un radio

PHP:
<input name="scelta" type="radio" value="<?php echo $productID;?>">

in questo modo ha un controllo su cosa vado a modificare e tramettendo un unico id uppo solo il record interessato
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
adesso selezionando il radio-button la query mi restituisce l'ID giusto però si modifica soltanto l'ultimo campo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda che ho schematizzato e messo i nomi dei campi un po' a caso (quindi verificali)
provalo così come è (messo a punto i nomi) e se funzia poi lo sistemi con il tuo css, table ecc...
PHP:
<?php
require_once 'db/connect.php';
require_once 'db/config.php';
if(isset($_POST['invia'])){//verifico se submit
	$id=$_POST['scelta'];//leggo l'id selezionato
	if($id!=""){//se diverso da vuoto uppo
		$nome=$_POST["productName".$id];
		$descr=$_POST["productDesc".$id];
		//ho messo tabella, ma da quello che ho capito devi mettere $tabella
		$query="UPDATE tabella SET prodotto_nome='$nome', prodotto_descr='$descr' WHERE prodotto_id=$id";
		if(mysql_query($query)){
			echo "aggiornato: $nome";
		}else{
			echo "errore nel salvataggio";
		}
	}else{//mi sono dimenticato di selezionare
		echo "non hai fatto una scelta";
	}
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}

//ma la $query dov'è? $query="SELECT......
$result = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result)> 0){
	echo "<form name=\"form1\" method=\"post\" action=\"".htmlspecialchars($_SERVER['PHP_SELF'])."\">";
	while($riga=mysql_fetch_array($result)){
		$productID = $row['id'];
		$productNA = $row['nome'];
		$productDE = $row['desc'];
		echo "<input  name=\"productName".$productID."\" value=\"$productNA\" />&nbsp;&nbsp;";
		echo "<input  name=\"productDesc".$productID."\" value=\"$productDE\" />&nbsp;&nbsp;";
		echo "<input name=\"scelta\" type=\"radio\" value=\"$productID\"><br><br>"
	}
	echo "<input name=\"invia\" type=\"submit\" id=\"invia\" value=\"invia\"><br><br>";
	echo "</form>";
	
}else{
	echo "non ci sono prodotti";
}
?>
si modifica (dovrebbe) solo il record dove hai selezionato la scelta

p.s.
una domanda da quello che ho capito: fai una tabella per ogni categoria di prodotti? se è così stai facendo un po' di caos
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
grazie sono riuscito a risolver tutto =) cmq no ho solo 5 tabelle e non ne creo una per ogni categoria perchè non avrebbe senso
 
Discussioni simili
Autore Titolo Forum Risposte Data
giancadeejay [PHP] Update tabella da file csv PHP 3
C Problema con update di un file PHP 6
G Update file con javascript per controllo estensioni Javascript 5
Komix Errore sintassi SQL "UPDATE" in file PHP PHP 10
G Syntax error in UPDATE statement. (update file) Classic ASP 7
A Insert,Delete e Update file di testo PHP 0
L Update di file multipli PHP 0
T update PHP 1
K Problema form update PHP 2
M query update e delete PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
felino Windows 7: errore 80072EFE su Windows Update Windows e Software 1
A pulsante di update campo mysql con javascript Javascript 2
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
MarcoGrazia ON DUPLICATE KEY ma in realtà non UPDATE mai PHP 17
R Errore UPDATE tabella mysql PHP 1
M Update con condizione SQL PHP 7
M Problema su update di 3 tabelle PHP 1
G Problema update di un database PHP 0
L update tabelle in php mysql [risolto] PHP 6
P update records PHP 2
B [MySQL] Problemino con UPDATE MySQL 10
M [PHP] Query UPDATE che non mi aggiorna campi seconda tabella PHP 3
felino [Windows 8.1] Windows Update non funziona correttamente Windows e Software 3
P [PHP] INSERT e UPDATE PHP 1
elpirata [MYSQL] Schedulare evento per update del campo data su tabella MySQL 0
D [ASP] Mysql insert e update Classic ASP 2
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
Monital [PHP] query update e select insieme ma frazionando l'arrray PHP 12
D [PHP] Update non trasferisce condizione where PHP 1
L [PHP] Errore UPDATE su tabella DB PHP 22
giancadeejay [PHP] istruzione UPDATE SQL PHP 2
giancadeejay [PHP] UPDATE DATO , SE ESISTE IN DB .. PHP 14
C What is Latest update on SEO SEO e Posizionamento 1
K Non trovo l'errore! PDO MYSQL UPDATE PHP 2
marini91 Update record in mysqli PHP 1
R [MySQL] SQL UPDATE INNER JOIN MySQL 5
webmachine [PHP] SELECT, UPDATE VERIFICARNE IL RISULTATO PHP 2
cris8380 [PHP] Update in search. PHP 16
filippino Google Update fine Aprile 2016: Bruschi cambiamenti SERP SEO e Posizionamento 3
pup3770 Riprendere da db e UPDATE PHP 9
N Problema funzione UPDATE PHP 9
L Upload immagine e update dati DB PHP 2
K Problema con update di un database in un ciclo Classic ASP 1
C Problema con Update di una tabella di un db PHP 3
L update MySQL 2
P Problemi UPDATE PHP 1
MarcoGrazia [PDO][MySQL] L'update non avviene PHP 1
R Update PHP dalla 5.3.3 alla 5.3.4 PHP 0
S Insert into....on duplicate key update MySQL 2

Discussioni simili