pagina per modificare dati inseriti in mysql

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Salve a tutti, ho realizzato un questionario (form) in php per un indagine che inserisce i dati in un database mysql. Ho la necessità di creare un sistema che mi consenta di visualizzare i questionari inseriti per poterli modificare nel caso in cui l'utente compili parzialmente il questionario o voglia modificare i dati inseriti.
Cerco di spiegarmi meglio.
Ad ogni questionario è associato un identificativo univoco (ID). Inserendo l'id in una pagina di ricerca è possibile richiamare tutti i dati associati a quell'id e quindi visualizzare le risposte al questionario.
Vorrei realizzare una pagina identica per impaginazione o simile a quella di inserimento che visualizzi le risposte inserite dall'utente alle domande del questionario e consenta allo stesso tempo di modificarli.
Nel questionario ci sono campi di testo radiobutton ecc. Ovviamente all'apertura della pagina di inserimento questi campi sono vuoti. Vorrei creare una pagina che inserendo l'id del questionario visualizzi la pagina di inserimento con i campi di testo e radiobutton valorizzati secondo quanto inserito dall'utente in fase di compilazione e consenta di correggere tali valori. spero di essere stato chiaro. Avete da propormi qualche metodo per realizzare una cosa del genere o soluzioni alternative al problema.
Grazie mille a tutti
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
prima di consigliarti un metodo sarebbe giusto considerare:
quanti sono i dati da modificare e quanto gli utenti
se in una pagina estrai tutti i dati quanto devi scorrerre su/giu dx/sx per trovare l'utente e i dati da modificare?
non conviene per esempio elencare, se hai molti utenti, solo nome e cognome con accanto un link "modifica?"
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Le tabelle sono molte e i dati molti, ma io intendo visualizzare un record ( un questionario) alla volta non tutti insieme. Inserendo il dodice intendificativo del questionario seleziono quello che mi interessa e poi posso visualizzare tutti i dati ad esso associati.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao io per qualcosa di simile ho fatto così, ti do delle indicazioni, tra i nomi delle variabili ed
i commenti spero che si capisca

PHP:
<?php  
//pagina_elenco_questionari.php
  //tutti i valore per connessione al db
  $query="SELECT quello_che_mi_serve FROM tab_questionario ORDER BY quello_che_mi_serve";
  $interroga=mysql_query($query);
  $num_questionari=mysql_num_rows($interroga);
  if($num_questionari==0){
	  echo "NON CI SONO QUESTIONARI";
  }else{
	  while($riga=mysql_fetch_array($interroga)){
		  echo "questionario n° ".$riga['id_questionario']."<a href=\"pagina_modifica.php?id=".
		  $riga['id_questionario']."\" modifica? </a><br>";
		  //se sono tanti ti conviene paginare i record
		  //se vuoi essesere sicuro di modificare metti il confirm
	  }//fine while
  }//fine if else esistono
?>
e la pagina per modifiche
PHP:
<?php
//pagina_modifica.php
$id_q=htmlspecialchars($_GET['id']);//leggo l'id del questionario
//questo id_q o lo passi in sessione o metti un campo hidden nel form
//parte di modifica nel db
if(isset($_POST['submit'])){
	$id_q=$_POST['id_nascosto'];
	//leggo i valori dei vari $_post dal form e li uppo where id_questionario=$id_q
	//ecc...ecc...
}
//fine parte di modifica 
//lettura valori del questionario da modificare
$query="SELECT * FROM tab_questionario WHERE id_questionario=$id_q";
$estrai=mysql_query($query);
$vari_campi=mysql_fetch_array($estrai);
//qui leggi i valori dei vari campi
$campo_1=$vari_campi['campo_1'];
//eccetera..............
//se hai un radio button es con 0 non selezionato, 1 selezionato
$radio_1=$vari_campi['radio_1'];
if($radio_1==0){
	$check_1="";
}else{//il radio era selezionato
	$check_1="checked";
}

?>
<p>
<p>
<p>
<form name="form1" method="post" action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>">
  <p>
    <input name="id_nascosto" type="hidden" value="<?php echo $id_q;?>">
  </p>
  <p>
    <input name="campo_1" type="text" id="campo_1" value="<?php echo $campo_1;?>">
  </p>
  <p>
    <input name="radio_1" type="radio" value="1" <?php echo $check_1;?>>
  </p>
  <p>
    <input name="submit" type="submit" id="submit" value="Invia">
  </p>
</form>
<p>qui puoi mettere un link per uscire senza salvare le modifiche

spero di essermi spiegato, altrimenti sono qui
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Ciao grazie mille. L'idea che mi hai proposto è eccezionale. Sto adattando il tuo script al mio questionario. Ti chiedo un ulteriore piccolo aiuto. Nel caso io abbia anche dei menu a tendina e dei pulsanti di scelta (quello quadrati per intenderci) come faccio a fare in modo che si valorizzino con quello che è stato inserito nel database. Per esempio se l'utente nella compilazione del questionario a scelto nel menu a tendina l'opzione uno nel database è stato inserito come valore 1. io vorrei che comparisse nel menu di modifica un menu a tendina con la prima opzione selezionata. idem per i box di scelta.
Nello script mancano le query per inserire i dati nel database, mi potresti fare un esempio anche di quelle perchè se inserisco delle normali query di inser mi si creano nuovi record (nuovi questionari) invece io vorrei che i valori corretti andassero a sostituire i dati presenti. Anziche una query di insert di vuole una query di modifica. non so come si chiamano.
spero di essere stato chiaro. grazie mille ancora
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
per i ceckbox ti comporti come per i radiobutton mettendo il solito if es.
if sevalore_ceckBox_1==1 $cbx_1 ="checked" else $cbx_1 =""

per i la selcect, non ho mai fatto qaualcosa di simile, ma mi viene in mente di provare a fare così (comunque tutto da provare)
nella parte php appena sopra il form ove leggi i valori da mettere nel form

$sel[] =array();//creo un array o numerico o associativo
$valoreMenuTend_1=$vari_campi['menuTend_1'];
switch($valoreMenuTend_1){
case "1":
$sel[1]="selected";
break;
case "2":
$sel[2]="selected";
break;
case "3":
$sel[3]="selected";
break;
}//fine switch

poi all'interno del form

<select name="MenuTend">
<option value="1"<?php echo $sel[1];?>>uno</option>
<option value="2" <?php echo $sel[2];?>>due</option>
<option value="3"<?php echo $sel[3];?>>tre</option>
</select>

io ho utilizzato un array numerico, ma si potrebbe utilizzare un array associativo in tal caso potresti fare così

switch($valoreMenuTend_1){
case "pinco":
$sel['pinco']="selected";
break;
case "pallo
$sel['pinco']="selected";
break;//eccc....
---------------------------------------------
se devi modificare i dati devi usare

$uppa="UPDATE mia_tabella SET nome_c1='$val_c1', nome_c2='$val_c2,
ecc... con tutti i nomi WHERE id_questionario='$id_q'";
$query=mysql_query($uppa);

spero di essere stato chiaro
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Ti ringrazio molto per l'aiuto che mi stai dando, non so riuscito a far funzionare i radio button mi dici dove sbaglio per favore

esempio di radiobutton

$radio_1=$vari_campi['3a'];

if($radio_1==1){
$check_1="checked";
}else{//il radio era selezionato
$check_1="";
}
if($radio_1==2){
$check_2="checked";
}else{//il radio era selezionato
$check_2="";
}
if($radio_1==3){
$check_3="checked";
}else{//il radio era selezionato
$check_3="";
}

valorizzo i checkbox

<input name="3a" type="radio" value="1" <?php echo $check_1;?>>
<input name="3a" type="radio" value="2" <?php echo $check_2;?>>
<input name="3a" type="radio" value="3" <?php echo $check_3;?>>

______________________

grazie mille e ciao
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Caro borgo italia grazie infinite per i suggerimenti che mi hai dato. Ora mi si pone un'altro problema sempre per questa pagina di modifica dati del database.
Ho una tabella_2 del database che contiene 3 colonne: id (autoincrement); id_rif (numerico); campo_1 (testo)


Nella pagina di inserimento dati ho creato 3 campi di testo che vanno a creare al momento dell'inserimento 3 record all'interno della tabella 3

campo_1a
campo_1b
campo_1c

Nella tabella_2 ho pertanto sempre 3 record con lo stesso id_ref (l'id_ref viene preso da un'altra tabella a cui la tabella 3 è collegata) ma ovviamente diverso id (tale valore incrementa da solo all'inserimento di ogni record nel database).

Lo script di inserimento funziona perfettamente. Nella pagina di modifica dei dati invece se uso lo script che mi hai suggerito per i campi di teso accade che in tutti e tre i campi di testo ho lo stesso valore e precisamente il primo dei 3 inseriti.
Dall'interrogazione della tabella 3 attraverso una select ottengo un array. Dovrei estrarre dall'array i valori relativi ai tre record e posizionarli nei 3 campi di testo.

In sostanza come posso fare perchè nella pagina di modifica mi compaiano all'interno dei tre campi di testo i tre valori che ho inserito inizialmente nella pagina di inserimento dati?
Spero di essere stato chiaro grazie mille per la collaborazione
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
non ho capito esatamente cosa vuoi fare, spiega meglio eventualmete con un es.
però non so se faccio in tempo a risponderti, caso mai guardo e se è semplice vedo di risponderti presto, altrimenti dopo il 1° gennaio
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
cerco di spiagarti meglio.
Nella pagine php di inserimento dati ho 4 campi di testo

campo1
campo2
campo3
campo4

Con 4 query inserisco ciò che l'utente a scritto nei 4 campi in una tabella chiamata ora tabella 3.

La struttura della tabella 3 è la seguente

id id_ref campo_testo
1 1 xxxx
2 1 xxxx
3 1 xxxxx
4 1 xxxxxx

id è un autoincrement che aumenta da solo
id_ref è un codice identificativo
campo_testo contiene i calori inseriti nei campi di testo (campo 1, campo 2 campo 3 campo 4)

ora vorrei creare una pagina identica a quella di inserimento che consenta inserendo in un id_ref di visualizzare in 4 campi di testo ciò che l'utente a inserito e allo stesso tempo consenta di modificarli e salvare i dati attraverso una query di update.
Il problema è che se utilizzo la procedura che mi hai consigliato prima per i campi di testo in tuti e quattro ottengo lo stesso valore il primo.

Esempio

se inserisco nella tabella 3

id id_ref campo_testo
1 5 pluto
2 5 pippo
3 5 paperino
4 5 ziopaperone

e uso questo script


Codice:
 //lettura valori del questionario da modificare 
$query="SELECT * FROM tabella_3 WHERE id_ref=5"; 
$estrai=mysql_query($query); 
$vari_campi=mysql_fetch_array($estrai); 
//qui leggi i valori dei vari campi 
$campo_1=$vari_campi['campo_testo']; 
$campo_2=$vari_campi['campo_testo']; 
$campo_3=$vari_campi['campo_testo']; 
$campo_4=$vari_campi['campo_testo']; 



<form name="form1" method="post" action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>"> 
  <p> 
    <input name="id_nascosto" type="hidden" value="<?php echo $id_q;?>"> 
  </p> 
  <p> 
    <input name="campo_1" type="text" id="campo_1" value="<?php echo $campo_1;?>"> 
  </p> 
 <p> 
    <input name="campo_2" type="text" id="campo_2" value="<?php echo $campo_2;?>"> 
  </p> 
 <p> 
    <input name="campo_3" type="text" id="campo_3" value="<?php echo $campo_3;?>"> 
  </p> 
 <p> 
    <input name="campo_4" type="text" id="campo_4" value="<?php echo $campo_4;?>"> 
  </p> 
 
  <p> 
    <input name="submit" type="submit" id="submit" value="Invia"> 
  </p> 
</form>


in tutti e quattro i campi vedo solo ed esclusivamente il primo valore e cioè pluto
come posso fare perchè in tutti e quattro i campi si vedano i rispettivi valori inseriti?
ciao grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
intanto ti do un'indicazione.
come hai fatto tu è logico che prenda solo il primo record e lo metta in tutte le variabili.
devi usare un ciclo while
penso che ti convenga fare così

$campo=array();
while($vari_campi=mysql_fetch_array($estrai)){
$campo[]=$vari_campi['campo_testo'];
}

poi nel form

<input name="campo_1" type="text" id="campo_1" value="<?php echo $campo[0];?>"

<input name="campo_1" type="text" id="campo_1" value="<?php echo $campo[1];?>"

<input name="campo_1" type="text" id="campo_1" value="<?php echo $campo[2];?>"
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Grazie mille Borgo Italia ora si pone un'altro problema una volta che ho modificato i valori nei 3 campi eseguo 3 update per aggiornare i dati

aggiornamento campo 1
$uppa1="UPDATE tabella_3 SET id_ref='$val_c1' WHERE id_questionario='5";
$query=mysql_query($uppa1);

aggiornamento campo 2
$uppa2="UPDATE tabella_3 SET id_ref='$val_c2' WHERE id_questionario='5";
$query=mysql_query($uppa2);

aggiornamento campo 3
$uppa3="UPDATE tabella_3 SET id_ref='$val_c3' WHERE id_questionario='5";
$query=mysql_query($uppa3);

Dopo l'aggiornamento tutti e 3 i record della tabella 3 con stesso id_ref pari a 5 presentano i valori del campo_testo uguali (precisamente a quello dell'ultimo capo)

Esempio

nella tabella 3 ci sono questi valori inseriti

id id_ref campo_testo
1 5 pluto
2 5 pippo
3 5 paperino
4 5 ziopaperone

li visualizzo nei rispettivi 4 campi nella pagina di modifica

effettuo l'aggiornamento inserendo nella pagina di modifica su ogni campo di testo i seguenti valori

campo_1 buon
campoo_2 natale
campo_3 e
campo_4 felice anno

dopo l'aggiornamento effettuato secondo lo script descritto prima la tabella 3 si presenta così

id id_ref campo_testo
1 5 felice anno
2 5 felice anno
3 5 felice anno
4 5 felice anno

In sostanza le sostituzioni non vengono fatte correttamente. come faccio a fargli capire che deve sostituire solo certi record e non tutti quelli aventi stesso id_ref? forse devo creare un'altra colonna con un id diverso per ogni campo?
tipo

id id_ref campo_testo campo
1 5 felice anno 1
2 5 felice anno 2
3 5 felice anno 3
4 5 felice anno 4

nella query poi dovro mette
nella query 1 where id_ref =5 and campo = 1
nella query 2 where id_ref =5 and campo = 2
c'è un modo per evitare di modificare il database?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
intanto una cosa
guarda che vaevo messo un ehm!!!
i nimi dei campi di input e relativi $_post devono essere diversi

<input name="campo_1" type="text" id="campo_1" value="<?php echo $campo[0];?>"
<input name="campo_2" type="text" id="campo_1" value="<?php echo $campo[1];?>"
<input name="campo_3" type="text" id="campo_1" value="<?php echo $campo[2];?>"

poi nell'uppaggio perchè uppi il campo id_ref e non campo_testo?

devi portarti ancche l'id oltre che l'id_ref e l'uppa deve essere

..... WHERE id_questionario='$val_id_que t' AND id='$id' ;

spero abbia capito, altrimenti ci sentiamo il 3.01.10 (o ti da indicazioni alessandro o qualcun altro)
buone feste
 

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
Grazie ancora per i consigli.
Ho dato che i campi della tabella di cui sopra non sono uno ma più di uno ho usato questo script.

Codice:
 $campo1a=array();
$campo1b=array();
$campo1c=array();
while($vari_campi=mysql_fetch_array($estrai5)){
$campo1a[]=$vari_campi['2a']; 
$campo1b[]=$vari_campi['2b']; 
$campo1c[]=$vari_campi['2c']; 
}

I record inseiriti nel database da visualizzare sono 5 pertanto ho usato questo codice

Codice:
.......
$campo4_1a=$campo1c[0]; 

$campo4_1b=$campo1c[1]; 

$campo4_1c=$campo1c[2]; 

$campo4_1d=$campo1c[3]; 

$campo4_1e=$campo1c[4]; 

$campo4_1f=$campo1c[5]; 




                  <td><input name="4_21c" type="text" id="4_21c" size="5"  value="<?php echo $campo4_1a;?>"></td>
                  <td><input name="4_22c" type="text" id="4_34" size="5"   value="<?php echo $campo4_1b;?>"></td>
.....
tutto funziona alla perfezione tranne il fatto che mi appare il seguente errore e non vengono visulizzati i primi valori di ogni campo:

Notice: Undefined offset: 5 in C:\Programmi\EasyPHP 2.0b1\www\Rapportotracittaecampagna\inserimento.php on line 1656
 
Ultima modifica:

narc0x

Utente Attivo
10 Ott 2008
128
2
18
Significa che l'offset 5 dell'array non esiste, probabilmente perchè hai contato male ? (ti ricordo che gli array partono da 0, quindi 0,1,2,3 eccetera) :)
 
Ultima modifica:

isidoro80

Utente Attivo
5 Feb 2007
32
0
0
si lo so ma ho contato bene nella tabella ci sono 6 record ed io ho inserito come variabili
$campo[0]
............1
2
3
4
5
Non capisco perchè non mi vede tutti i valori in più c'è un'altra stranezza. non mi si visualizzano i primi 5 valori di 6 presenti ma gli ultimi 5 come se iniziasse a leggere la tabella dal secondo valore e non dal primo mi spiego con un esempio

tabella
id campo
1 1
2 2
3 3
4 4
5 5
6 6

valori visualizzati
2, 3, 4, 5, 6
Perchè secondo te da cosa dipende?
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Aiuto per pagina php PHP 0
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
felino [Wordpress] Title dinamico per pagina WordPress 0
F [PHP] Pagina conta verghe per carpenteria PHP 15
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
R [PHP] creare pagina profilo per ogni utente PHP 4
S [CERCO] Inviti Facebook per la mia pagina Annunci servizi di Social Media Marketing 0
A [COMPRO] pagina instagram dai 10k in su, acount italiani e attivi per fotografia Annunci servizi di Social Media Marketing 0
Instagramsocialmedia vendo pagina INSTAGRAM 70K reali e italiani adatto per fashion blogger o marchi Annunci servizi di Social Media Marketing 6
Merlina3377 Vendo spam per pagina da 310 mila followers Annunci servizi di Social Media Marketing 11
G Inserzione script nella pagina html per jquery jQuery 8
M [VENDO] Pagina Instagram 6k Followers 550 like medi per post Annunci servizi di Social Media Marketing 3
enricoblandini Pagina non ottimizzata per dispositivi moibili Google Search Console 0
J SVENDO PAGINA FACEBOOK 10.000 FANS, PER INFO ENTRA. Annunci servizi di Social Media Marketing 1
J SVENDO PAGINA FACEBOOK 10.000 FANS, PER INFO ENTRA. Annunci servizi di Social Media Marketing 4
A Cerco pagina facebook ed instagram per ecommerce Annunci servizi di Social Media Marketing 3
T Cerco editor per pagina Facebook Offerte e Richieste di Lavoro e/o Collaborazione 2
L VENDO PAGINA FACEBOOK 8000 LIKES REALI (PAGINA POCO ATTIVA, VENDO PER NON UTILIZZO) Annunci servizi di Social Media Marketing 17
A [Javascript] [CSS] elenco affiancato per evitare scorrimento pagina Javascript 4
G Compro post e recensioni per pagina facebook Annunci servizi di Social Media Marketing 1
A Vendo 30.000 inviti per pagina Facebook. Annunci servizi di Social Media Marketing 5
P [HTML] Redirect sito su pagina per Android HTML e CSS 6
L [Javascript] Cliccare su mi piace per accedere a vedere la pagina Javascript 0
M creazione pagina web per esercizio corso di web design Offerte e Richieste di Lavoro e/o Collaborazione 2
P problemi di refresh per reindirizzamento pagina PHP 6
L Script per aggiornare pagina html Javascript 2
M Inserire nel DB i dati provenienti da checkbox e recuperarli poi dal DB per la pagina di edit PHP 20
A Supporto per creazione pagina HTML HTML e CSS 8
Z creazione modulo e pagina invio php per invio dati al db PHP 2
I modo per ricaricare pagina Javascript 1
B Saluti ed aiuto per pagina web html HTML e CSS 11
F [VENDO]Pagina 76K perfetta per chi vuole iniziare a lavorare con FACEBOOK! Annunci servizi di Social Media Marketing 3
M Come procedere per override strutturale pagina contatti Joomla 0
A Sottofondo musicale per pagina Index HTML e CSS 6
andry79fi PLUGIN (o script) per Pagina Facebook con INTERVENTI degli utenti WordPress 0
B Online per tutta la pagina PHP 1
denisgligor ciao, vorrei creare una pagina personale per ogni utente con un dominio di terzo livello... si può ? PHP 0
K immissione password per una pagina PHP 8
M Semplice pagina per inserire/leggere dati su database PHP 5
Alessandro Le Mura Contatore visite per ogni pagina con MYSQL - PHP PHP 40
L Bottone per aggiornare una pagina HTML HTML e CSS 5
giancadeejay Pagina profilo utente diversa per ogni utente. PHP 1
M Vendo spam su pagina a tema sexy per solo adulti Annunci servizi di Social Media Marketing 0
M Creazione di una pagina web per la cancellazione da una mailing list PHP 13
F pagina personalizzata per ogni utente PHP 2
F comando php per caricare delle scritte in una pagina html PHP 4
7thl Slider head per ogni singola pagina WordPress 2
D Problema con il disclaimer/pagina per l'accesso al'sito, funziona solo con firefox PHP 0
Monital attributo iframe per porzione di pagina HTML e CSS 0
P Inserire un'immagine avatar nel profilo per avere ogni utente la sua pagina PHP 42

Discussioni simili