modifica dati in tabella php+sql

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
Salve a tutti!
Ho creato un database in cui posso registrare e visualizzare i dati tramite delle pagine create in php e fin qui va tutto bene ;)
Ora stavo lavorando per consentire la modifica e la cancellazione dei dati, ma non ho idea di come si faccia...
Mi spiego meglio; durante la visualizzazione, ho inserito alla fine di ogni riga il collegamento alle pagine "modifica" ed "elimina";
per esempio:
ID, campo 1, campo 2, modifica, elimina
ID, campo 1, campo 2, modifica, elimina
ID, campo 1, campo 2, modifica, elimina
ecc..

ora la mia idea è: quando si clicca "modifica" si apre la pagina che dovrebbe essere uguale a quella di registrazione, con la differenza che i dati vengono estrapolati dalla tabella per poter essere modificati; quindi se durante la registrazione i campi sono vuoti, nella modifica dovrebbero essere "riempiti" con i dati estratti dalla tabella per quella determinata riga, ma non so come fare a passare quei dati nei box creati con <input type="text">

per l'eliminazione la mia idea sarebbe solo un popup con una domanda e i pulsanti "ok" o "annulla"

spero possiate aiutarmi!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
fai la select per l'id che hai trasmesso estraendo i vari valori dei campi schematicamente.

PHP:
<?php
//......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
$q=mysql_query("SELECT * FROM tabella WHERE id=$id");
$riga=mysql_fetch_array($q);
$titolo=$riga['titolo'];
$testo=$riga['titolo'];
?>
<form action="#" method="post">
titolo 
  <input name="titolo" type="text" id="titolo" value="<?php echo $titolo;?>"><br />
testo 
<textarea name="testo" id="testo"><?php echo $testo;?></textarea><br />
<input name="modifica" type="submit" id="modifica" value="modifica">
</form>
<?php
if(isset($_POST['modifica'])){
	//non metto i controlli
	$q=mysql_query("UPDATE tabella SET titolo='".$_POST['titolo']."', testo='".$_POST['testo']."' WHERE id=$id");
}
//....
?>
 

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
ciao
fai la select per l'id che hai trasmesso estraendo i vari valori dei campi schematicamente.

PHP:
<?php
//......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
$q=mysql_query("SELECT * FROM tabella WHERE id=$id");
$riga=mysql_fetch_array($q);
$titolo=$riga['titolo'];
$testo=$riga['titolo'];
?>
<form action="#" method="post">
titolo 
  <input name="titolo" type="text" id="titolo" value="<?php echo $titolo;?>"><br />
testo 
<textarea name="testo" id="testo"><?php echo $testo;?></textarea><br />
<input name="modifica" type="submit" id="modifica" value="modifica">
</form>
<?php
if(isset($_POST['modifica'])){
	//non metto i controlli
	$q=mysql_query("UPDATE tabella SET titolo='".$_POST['titolo']."', testo='".$_POST['testo']."' WHERE id=$id");
}
//....
?>

ciao e grazie per la risposta!
comunque i dati dalla pagina di registrazione al db li passo tramite POST; con il GET non me li inserisce...
nella pagina di visualizzazione avevo fatto un link in questo modo:
HTML:
<a href='modifica.php?id=<?php echo $id ?>'>Modifica</a>
e poi nella pagina di modifica dove c'è "<input type="text">", l'ho modificato così:
HTML:
<input type="text" name="data" value="<?php echo $data; ?>">
ma nel campo "data" e anche in tutti gli altri campi non mi visualizza ciò che c'è registrato nel db nonostante il "value"....
sempre nella visualizzazione, invece del link ho anche provato con un form in questo modo ma non credo sia corretto:
HTML:
<form action='modifica.php' method='$id=_GET['id'];'><input type='submit' name='modifica' value='Modifica'>
e anche in questo modo nella pagina di modifica non c'è nulla nell'input type=text
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
e questo cosa è?
<form action='modifica.php' method='$id=_GET['id'];'>
non esiste un method del tipo '$id=_GET['id']' o e post o è get, tra l'altro non puoi mescolare così php con l'html
se come hai detto fai
PHP:
<a href='modifica.php?id=<?php echo $id; ?>'>Modifica</a>
(attento le istruzioni php finiscono con il ; )
nella pag modifica.php devi ricevere il get (o usarlo direttamente anche se pericoloso)
PHP:
<?php
//.....
if(!is_int($_GET['id'])){//es di verifica
	//rimandi a dove vuoi
	header("location:pinco_pallo.php");
	exit();
}else{
	$id=$_GET['id'];
	//poi come ti ho gia postato devi estrarre i valori con la select
	//altrimenti da dove saltano fuori i value da mettere negli input del form?
	//e uppi
	//l'unico accorgimento è passare l'id all'uppaggio o con um campo hidden o in sessione
}
//.....
?>
 

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
Purtroppo non ci sto capendo granché visto che conosco php a livello scolastico e come puoi vedere infatti quel method non va assolutamente bene...
Prima delle tua risposta, nel modifica all'inizio ho provato ad inserire
PHP:
include "visutente.php"; //cioè la pagina di visualizzazione
e in questo modo nei box degli input me li fa vedere, ma purtroppo mi fa vedere anche la pagina di visualizzazione...
ti allego i file magari potresti capire meglio il mio lavoro..
Vedi l'allegato progetto.zip
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto alcuni errori
PHP:
<?php
		echo "<td><a href='modifica.php?id=<?php echo $id ?>'>Modifica</a></td>";
		echo "<td><a href='cancella.php?id=<?php echo $id ?>'>Elimina</a></td>";
?>
sei gia dentro php quindi correggi in
PHP:
<?php
		echo "<td><a href='modifica.php?id=$id'>Modifica</a></td>";
		echo "<td><a href='cancella.php?id=$id'>Elimina</a></td>";
?>
guarda se non hai fatto lo stesso errore da qualche altra parte
poi i tag html non vanno indentati
es. errore
HTML:
<form ......>
<table>
</form>
</table>
giusto
HTML:
<form ......>
<table>
</table>
</form>
anche qui verifica tutti i tag
poi do un occhio al resto
 

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
non sapevo fosse un'errore quello...lo correggo subito, ma non credo che ci siano altri del genere...
la parte dell'html l'ho scritta velocemente per questo i tag risultano sbagliati, però se già funziona è meglio

grazie per il tuo aiuto spero potrai schiarirmi le idee sulla mia idea, altrimenti se c'è una via migliore ben venga!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sto dando un occhio al tuo script e per prima cosa ho notato un'incongruenza: parli di uppaggio poi vedo la query di insert.
devi uppare o inserire (io credo uppare)?
poi, secondo me, ci sono diverse cose da mettere a posto.
sempre da quello che ho capito lo script ti serve per lavoro e quindi non credo che tu voglia farti rovinare il db da qualcuno:
1. chi fa l'aggiornamento? l'utente? se lo fa l'utente deve essere loggato altrimenti un pinco pallino qualsiasi può fare le modifiche e altro, quindi la pagina deve essere protetta.
2. uppi (o inserisci?) brutalmente i valori provenienti dal form senza alcun controllo quindi soggetto ad crossinjection e furto dei valori (che mi sembrano dati sensibili : privacy)
senza andare al furto, un semplice utente che si chiami es. D'Avanzo inserendo il suo cognome, cosi come fai tu, ti manda in pallino il db (quell'insignificante apostrofo è fonte di grossi guai se non trattato adeguatamente)

inanto conferma se uppi o vuoi inserire ti metto come va fatto l'uppaggio, ma pensa a quello che devi fare (soprattutto per evitare guai)
 

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
ti ho mandato il file "modifica" quando ancora lo dovevo modificare per questo vedi la query di insert, ma so bene che ci va l'update perché devo uppare..
si lo script è per lavoro e:
1. l'inserimento, la visualizzazione, l'aggiornamento, lo fa una sola persona.
2. devo uppare

comunque, ho riprovato tante volte a rifare il file modifica, finché sono riuscito a fare qualcosa..ho pensato di estrarre i dati come nel file di visualizzazione, poi tramite un "echo" ho inserito tutta la parte dell'inserimento e tutto funziona, anche l'update; ho notato però che aggiornando dati con un apostrofo (es. Pinco D'Avanzo) me lo visualizza così: Pinco D; ma non capisco perché.....direi che adesso è questo il problema da risolvere...

l'update l'ho fatto così:
PHP:
$query="UPDATE utente SET data = '$data', soggetto_acquirente = '$soggettoacquirente' WHERE id_utente = '$id'";

ti ringrazio comunque, alcuni pezzi di codice dei messaggi precedenti mi sono serviti!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
perche per mysql ' rappresenta fine del valore.
prima di inserire i valori nella tabella ti conviene trattarlo con adslashes, poi quando devi visualizzarli usi stripslashes
addslashes mette una \ davanti all apostrofo e quindi mysql capisce che è un carattere e non la fine di un valore
es. fai questa prova
PHP:
<?php
$a=addslashes("D'amato");
echo "$a<br>";
$a=stripslashes($a);
echo "$a<br>";
?>
poi a tutti i $_POST aggiungi davanti l'addslashes

dimenticavo
anche se lo fa solo una persona alcuni controlli sono necessari.
es se uno digita pinco#pallo.it cioè # al posto di @ (errore di digitazione) poi tu tocca cercare e correggere
 
Ultima modifica:

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
ciao
Ok il problema dell'apostrofo l'ho risolto in questo modo: durante l'inserimento applico questo codice
PHP:
$soggettoacquirente=addslashes($_POST['soggetto_acquirente']);

durante la visualizzazione questo:
PHP:
$soggettoacquirente=stripslashes($record['soggetto_acquirente']);

mentre quando devo passare i dati dal db ai box di input, li estrapolo allo stesso modo del visualizza, applico questo codice durante l'estrazione in modo da eliminare lo \ :
PHP:
$soggettoacquirente=stripslashes($record['soggetto_acquirente']); //e poi sotto, nel box di input ho eliminato gli apici al "value" in questo modo;
echo "<input type='text' name='soggetto_acquirente' value=$soggettoacquirente>"; //mentre prima era value='$soggettoacquirente';

ora se gentilmente puoi aiutarmi su un ultima cosa; c'è un modo per resettare gli id alla cancellazione di una riga?
ho creato lo script per eliminare così:
PHP:
<form action="<?php echo $_SERVER['PHPSELF'];?>" method='POST'>
<?php
include "config.php";
$selezionedb = mysql_select_db($database, $connessione);
$query = "SELECT * FROM utente WHERE id_utente=$_GET[id_utente]";
$risultato = mysql_query($query);

if ($risultato)
{
	while($record=mysql_fetch_array($risultato))
	{
		$id=$record['id_utente'];
		
		echo "<h2><center>Vuoi davvero eliminare la riga numero $id ?</center></h2>";
		echo "<table align='center'>
			<tr>
			<td><input type='submit' name='si' value='Si'></td>
			<td><input type='submit' name='no' value='No'></td>
			</tr>
			</table>";
		}
}
?>
</form>
<?php
if (isset($_POST['si']))
{
	$yes = mysql_query("DELETE FROM utente WHERE id_utente = '$id'");
	if($yes)
	{
		echo "<h2>Fatto!</h2>"; //qui avevo pensato di fare una cosa del genere ma non ha funzionato: mysql_query("ALTER TABLE utente AUTO_INCREMENT = 1");
		echo "<h2><a href='visutente.php'>Visualizza i dati.</a></h2>";
	}	
}
else if(isset($_POST['no']))
{
	echo "<h2>La riga non è stata eliminata</h2>";
	echo "<h2><a href='visutente.php'>Visualizza i dati.</a></h2>";
	}

mysql_close();	
?>

lo script comunque per eliminare funziona, ma resta solo questo problema degli id, anche perché poi se elimino ad esempio la riga 6, il contatore riparte da 7 e i valori poi sono tutti errati per quanto riguarda gli id!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
c'è un modo per resettare gli id alla cancellazione di una riga?
non lo conosco, anche perche non serve in quanto gli id servono solo per icentificare il record
se hai messo es id INT(9) prima di esaururli tutti devi scrivere 999.999.999 record (un miliardo), se non ti basta eventualmente lo aumenti modificando il campo
 

Roby293

Nuovo Utente
22 Feb 2013
7
0
0
Va bene, al limite se non trovo un modo nasconderò gli id e ordinerò la tabella per nome

Grazie di tutto!
 
Discussioni simili
Autore Titolo Forum Risposte Data
I modifica dati in tabella mysql PHP 9
L modifica dati. PHP 1
W Modifica su invio dati da form PHP 4
M Modifica e/o Cancellazione dati da database MySql PHP 2
G Problemi con modifica dati in query di aggiornamento MS Access 6
R Modifica e cancellazione dati da MDB Classic ASP 11
K sql UPDATE non mi modifica i dati PHP 22
L modifica dati con sqlite PHP 1
simonetta619 Modifica dati con PHP PHP 44
N Modifica dati utente Joomla 0
Emix Problema modifica dati PHP 3
L problema modifica dati e caratteri html PHP 2
S Modifica dati su db tramite checkbox PHP 14
R Back-end: modifica dati mysql da form php PHP 5
D caricamento file su db e modifica dati PHP 0
M problemi su modifica dati utente Classic ASP 4
Z [PHP/MySql]modifica dei dati PHP 1
S pagina di modifica dati utente Classic ASP 39
B Modifica dati ACCESS ASP.NET 1
grottafelix Estrarre dati da db e modifica Classic ASP 25
D Jquery - modifica elemenento onlick jQuery 1
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
JeiMax Modifica codice php personalizzato PHP 2
P Pagina modifica record che non funziona PHP 0
L Modifica file upload in ASP Classic ASP 2
P modifica colore A Hover link website . WordPress 2
P Modifica con PHP di un node in una sitemap xml PHP 0
C Software modifica sitoweb in tempo reale WordPress 12
G Modifica immagine di sfondo attraverso un bottone PHP 18
G modifica corretta funzione da eregi() a preg_match() PHP 3
R Modifica codice per l'upload di più file PHP 1
G Modifica testo Photoshop 3
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
felino [Wordpress] Modifica main color del template WordPress 8
M [PHP] Modifica account PHP 3
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
S [OFFRO] Rimozione o aggiunta di Password ai file PDF e opzionalmente loro modifica Offerte e Richieste di Lavoro e/o Collaborazione 2
F [PHP] modifica del body email con checked PHP 8
G Modifica da sito statico HTML a dinamico in Wordpress SEO e Posizionamento 1
Cosina Modifica script textarea jQuery 0
M [PHP] Calcolare costi su modifica orari PHP 4
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
F modifica recensione google Discussioni Varie 2
C Photoshop CS 6 salvare una modifica Photoshop 0
L [PHP] Modifica in tabella ultimo id PHP 5
C Pagina fb notifica modifica post Social Media Marketing 1
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
C [Joomla] [HTML] Modifica codice per adattamento app Joomla 18
Daniele_Carrara [Javascript] Modifica input date Javascript 5
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2

Discussioni simili