Riprendere da db e UPDATE

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ciao Ragazzi,
ho cercato e fatto alcune prove ma non riesco.

Avrei la necessità di inserire dei dati in un db e fin qui ok mediante
PHP:
INSERT INTO
. Avrei la necessità di modificare i dati e fin qui
PHP:
UPDATE
. Avrei la necessità di modificare i dati ma prima farli vedere. Nel senso.

Ho un db che include:

nome
cognome
sesso

all'interno mi ritrovo
nomecognomesesso
carlocontim
asiaargentof


Vorrei rendere modificabile queste righe ma dopo aver prelevato il contenuto e averlo inserito ad esempio in un campo.

Ho pensato di fare:
PHP:
$nome_ricercato = $_POST['nome_ricercato']; //prelevo il contenuto inserito dall'utente

	$query = "SELECT * FROM prova";
	$result = mysql_query($query, $connessione);
	$numrows = mysql_num_rows($result);
			

  //Avvio un ciclo for che si ripete per il numero di occorrenze trovate
	
  for($x=0; $x<$numrows; $x++){

    //Recupero il contenuto di ogni record rovato

    $resrow = mysql_fetch_row($result); 

    if($nome_ricercato ==  $nome) { //confronto tra codice "ean" inserito nel campo di ricerca ed "ean" presente nel database
    
    $nome = $resrow[0];
    
    $cognome = $resrow[1];

    $sesso = $resrow[2];
    
   //visualizzo in una riga tutte le info - ma solo di test - non serve ad altro 
	echo "Il codice ean e': " . $ean . ", il nome e': " . $nome . ", il cognome e': " . $cognome . ", il sesso e': " . $sesso . "<br>";
	
    
    } //fine if

    
    } //fine for 

    
  ?>				

			<b>nome:</b><br> <INPUT TYPE="text" NAME="nome" VALUE="<?php echo $nome ?>"><br><br>
        
  

			<b>cognome:</b><br> <INPUT TYPE="text" NAME="cognome" VALUE="<?php echo $cognome ?>"><br><br>
 
  	
			<b>sesso:</b><br> <INPUT TYPE="text" NAME="sesso" VALUE="<?php echo $sesso ?>"><br><br>
  
<?php	        
    

$query1 = "UPDATE prova SET nome='{$_POST['nome']}', cognome='{$_POST['cognome']}', sesso='{$_POST['sesso']}' ";


	if (mysql_query ($query1, $connessione))
		echo ("Modifica riuscita con successo!");     
    ?>
Qual'è il problema? Nel senso. Effettivamente nelle aree di testo mi inserisce il contenuto prelevato dal database ma quando lo modifico non mi va in aggiornamento. Praticamente non mi vede il contenuto delle nuove
HTML:
INPUT TYPE
. Io vorrei che mi dia la possibilità di scrivere quello che desidero e aggiornarmelo.. Probabilmente mi trovo a livelli differenti di visibilità e quindi per questo non me lo mostra..Effettivamente entro ed esco nel codice PHP e quindi non è visibile.

Chiedo a voi come potrei fare. Grazie in anticipo
 

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
scusami tanto,
ma se tu ti recassi alla biblioteca del tuo paese o città, un libretto piccolo piccolo sul db (uno qualunque o sql) da leggere, lo troveresti sicuramente e potresti evitare molto del codice inutile, che hai scritto ....
mi fermo, i puntini indicano che non ho parole
 

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Non credo possa trovare quello che cerco.

L'inserimento riesco
La ricerca riesco
La selezione riesco
La modifica anche

La lettura di un campo con la visualizzazione del contenuto in un area di testo per la modifica in front-end dall'utente e il successivo aggiornamento nel db non va. Mi da un inserimento vuoto/bianco che mi sovrascrive il dato
 

pup3770

Utente Attivo
30 Mag 2012
122
0
16
scusami tanto,
ma se tu ti recassi alla biblioteca del tuo paese o città, un libretto piccolo piccolo sul db (uno qualunque o sql) da leggere, lo troveresti sicuramente e potresti evitare molto del codice inutile, che hai scritto ....
mi fermo, i puntini indicano che non ho parole
Guarda io veramente sto cercando ovunque. Non trovo nulla che possa essermi utile. Quindi o non so cercare o non è così tanto semplice. La tua risposta non mi ha aiutato tanto. Se magari puoi aiutarmi è ben gradito.

Semplifico il mio problema.

A me interessa inserire mediante un'area di input il mio nome (esempio "pippo"), successivamente leggerlo e modificarlo. Vorrei quindi prendere il contenuto del campo il mio nome. Per esempio "pippo" e modificarlo in "pluto". Il tutto sarebbe più carino mediante un area di testo in cui viene inserito il nome letto "pippo" e basta cancellare e mettere il nuovo nome e successivamente salvarlo.
 

zorro

Utente Attivo
20 Ott 2014
236
10
18
ROMA
Ciao pup3770,
se ho ben capiìto quello che intendi fare, tornando al tuo primo esempio, tu ha un record, ad es. conti, carlo, m, memorizzato in un DB; tramite ad es. un pulsante puoi chiederne la modifica; a questo punto appaiono tre campi di input, rispettivamente per cognome, nome e sesso, riportanti i dati da modificare, che tu puoi cancellare e inserire
i nuovi dati. Il tutto poi andrà modificato anche sul DB. Ho capiito bene? Scusa ma non mi è molto chiaro quellio che intendi fare. Un'altra cosa che non capisco è perché hai usato il cioclo FOR nel codice. Comunque faccio qualche prova e ti faccio sapere.
Ciao


Zorro:byebye::byebye:
 

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ciao pup3770,
se ho ben capiìto quello che intendi fare, tornando al tuo primo esempio, tu ha un record, ad es. conti, carlo, m, memorizzato in un DB; tramite ad es. un pulsante puoi chiederne la modifica; a questo punto appaiono tre campi di input, rispettivamente per cognome, nome e sesso, riportanti i dati da modificare, che tu puoi cancellare e inserire
i nuovi dati. Il tutto poi andrà modificato anche sul DB. Ho capiito bene? Scusa ma non mi è molto chiaro quellio che intendi fare. Un'altra cosa che non capisco è perché hai usato il cioclo FOR nel codice. Comunque faccio qualche prova e ti faccio sapere.
Ciao


Zorro:byebye::byebye:
Si hai proprio centrato il mio problema. Che il ciclo for mi serve per leggere i dati nel db ed inserirli nelle variabili
PHP:
$cognome, $nome, $sesso
Ok grazie mille..mi saresri di aiuto..ma cmq molti siti implementano questa opzione..boh strano che non sia riuscito e che non ho trovato nulla..

Il problema è che visualizzarlo sei a livello di visibilità delle variabili diversi e il codice per far vedere è un "echo" da mettere in "values" di html..quindi uscendo da php e rientrando non le vede più
 

zorro

Utente Attivo
20 Ott 2014
236
10
18
ROMA
Il problema è che visualizzarlo sei a livello di visibilità delle variabili diversi e il codice per far vedere è un "echo" da mettere in "values" di html..quindi uscendo da php e rientrando non le vede più
Ma infatti, quando vuoi valotizzare una variabile in un form HTML tramite value, dovresti trasformare il tutto in un file PHP, racchiudendo il codice HTML in atrettanti echo :


PHP:
echo '<form name="pippo">';
....
.......
......
echo '</form>';

Poi ti posto il codice.Ciao


Zòrro
 

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ma infatti, quando vuoi valotizzare una variabile in un form HTML tramite value, dovresti trasformare il tutto in un file PHP, racchiudendo il codice HTML in atrettanti echo :


PHP:
echo '<form name="pippo">';
....
.......
......
echo '</form>';

Poi ti posto il codice.Ciao


Zòrro
Grazie per la risposta "zorro". Non ho capito bene o meglio è forse quello che ho fatto io..

Nel senso.. Io prelevo i dati

PHP:
for($x=0; $x<$numrows; $x++){

    //Recupero il contenuto di ogni record rovato

    $resrow = mysql_fetch_row($result); //mysql_fetch_row() recupera il contenuto dei record trovati. Più precisamente restituisce un array contenente i valori di ogni campo riscontrati nel recordset
        

    if($nome ==  $resrow[0]) { //confronto tra codice "ean" inserito nel campo di ricerca ed "ean" presente nel database
        
    $nome = $resrow[0];

    $cognome = $resrow[1];

    $sesso = $resrow[2];


echo "nome: " . "<tr><td><input type='text' name='nome2' value='".$nome."'></td><br>";

echo "cognome: " . "<tr><td><input type='text' name='cognome2' value='".$cognome."'></td><br>";

echo "sesso: " . "<tr><td><input type='text' name='sesso2' value='".$sesso."'></td><br>";
	
//nel "echo" sottostante mi aspetterei che lui mi stampasse il contenuto delle nuove aree di testo
echo "<br><br>- invece: " . "il codice ean e' : " . $_POST['ean2'] . ", il nome e': " . $_POST['nome2'] . ", il cognome e': " . $_POST['cognome2'] . ", il sesso e': " . $_POST['sesso2'] . "<br><br>";
	
} //fine if
 
    } //fine for
Quindi cosa faccio, mi scorro tutta la tabella e di volta in volta metto nelle variabili il contenuto delle righe per ogni differente colonna.

Come scritto nel commento mi aspetterei che prelevando il nuovo contenuto dei campi, mediante
Codice:
$_POST['']
mi possa prelevare il contenuto..ed invece non lo preleva.

Dove sbaglio?
 

zorro

Utente Attivo
20 Ott 2014
236
10
18
ROMA
Ciao pup3770,
ti posto il codice. Ho creato una tabella di prova contenente 4 record con 4 campi: id_cli, cognome, nome e sesso. Ho letto il tuo codice, ma c'è parecchia confusione e, soprattutto, parecchio codice inutile, soprattutto per la lettura del DB. Quelli che ti posto sono tre file PHP: LEGGITAB.PHP che, come dice il nome, legge e visualizza a video la tabella, permettendone la modifica; uno MODIFY.PHP che permette la modifica del record; e uno SCRIVIMODI.PHP che registra le modifiche in tabella.


LEGGITAB.PHP

PHP:
<?php
//connessione al server DB
$link_connessione=mysql_connect("localhost","............","..........") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db(....................", $link_connessione) or die ("Database inesistente!");

//Visualizzazione dei record di una tabella
$query="SELECT * FROM CLIENTI";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

echo '<table border="0">';
echo '<tr>';
echo '    <td width="40" height="50">ID</td>';
echo '    <td width="140">COGNOME</td>';
echo '    <td width="140">NOME</td>';
echo '    <td width="100">SESSO</td>';
echo '    <td width="150">&nbsp;</td>';

//Esecuzione della query
while ($riga=mysql_fetch_array($tabella)) {
       $id=$riga['ID_CLI'];    
       $cognome=$riga['COGNOME'];
       $nome=$riga['NOME'];
       $sesso=$riga['SESSO'];        
            
       echo '<tr>';
       echo '    <td>'.$id.'</td>';
       echo '    <td>'.$cognome.'</td>';
       echo '    <td>'.$nome.'</td>';
       echo '    <td>'.$sesso.'</td>';
       echo '    <td><a  href="modify.php?id='.$id.'&cognome='.$cognome.'&nome='.$nome.'&sex='.$sesso.'">Modifica</a></td>';
       echo '</tr>';
}
echo '</table>';
?>
Questo codice legge la tabella e la stampa a video, ponendo a fianco ad ogni record un link che ne permette la modifica.

MODIFY.PHP

PHP:
<?php
$id = $_GET['id'];
$cognome = $_GET['cognome'];
$nome = $_GET['nome'];
$sex = $_GET['sex'];

session_start();
$_SESSION['ID'] = $id;

echo '<table border="0">';
echo '<tr>';
echo '    <td width="240">COGNOME</td>';
echo '    <td width="240">NOME</td>';
echo '    <td width="200">SESSO</td>';
echo '</tr>';
echo '</table>';

echo '<br><br>';
echo '<form methot="get" action="scrivitab.php">';
echo '<table border="0">';
echo '<tr>';
echo '    <td width="240"><input type="text" name="cognome" value="'.$cognome.'"></td>';
echo '    <td width="240"><input type="text" name="nome" value="'.$nome.'"></td>';
echo '    <td width="200"><input type="text" name="sex" value="'.$sex.'"></td>';
echo '</tr>';
echo '<tr>';
echo '    <td height="150" colspan="3"><input type="submit" name="invia" value="registra modifiche"></td>';
echo '</tr>';
echo '</table>';
echo '</form>';

?>

Questo memorizza in altrettante variaili il contenuto dei campi del record da modificare, memorizzando anche
l'id_cli in una variabile di sessione (per non perderne ll contenuto pasando da un fle all'altro), dopodiché ti presenta 3 ccampi di input, rispett. per cognme, nome e sesso, che puoi lasciare cosi' o modificare. Cliccando poi REEGISTRA MODIFICHE verrà richiamato

SCRIVITAB.PHP

PHP:
<?php
session_start();
$id = $_SESSION['ID'];

$cogno = $_GET['cognome'];
$nom = $_GET['nome'];
$sesso = $_GET['sex'];


//connessione al server DB
$link_connessione=mysql_connect("localhost",".............","") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db("....................", $link_connessione) or die ("Database inesistente!");

//Esecuzione della query
$query="UPDATE `CLIENTI` SET `COGNOME` = '".$cogno."',`NOME` = '".$nom."',`SESSO` = '".$sesso."' WHERE ID_CLI = '".$id."'";

if (mysql_query($query, $link_connessione)) {
	echo 'il record è stato modificato';
} else {    
	echo 'Attenzione: errore nella query';
}    
?>

che registrerà le modifiche nella tabella. Puoi vedere il link

Spero di essertio stato d'aiuto.:byebye::byebye:


Zorro
 

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ciao pup3770,
ti posto il codice. Ho creato una tabella di prova contenente 4 record con 4 campi: id_cli, cognome, nome e sesso. Ho letto il tuo codice, ma c'è parecchia confusione e, soprattutto, parecchio codice inutile, soprattutto per la lettura del DB. Quelli che ti posto sono tre file PHP: LEGGITAB.PHP che, come dice il nome, legge e visualizza a video la tabella, permettendone la modifica; uno MODIFY.PHP che permette la modifica del record; e uno SCRIVIMODI.PHP che registra le modifiche in tabella.


LEGGITAB.PHP

PHP:
<?php
//connessione al server DB
$link_connessione=mysql_connect("localhost","............","..........") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db(....................", $link_connessione) or die ("Database inesistente!");

//Visualizzazione dei record di una tabella
$query="SELECT * FROM CLIENTI";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

echo '<table border="0">';
echo '<tr>';
echo '    <td width="40" height="50">ID</td>';
echo '    <td width="140">COGNOME</td>';
echo '    <td width="140">NOME</td>';
echo '    <td width="100">SESSO</td>';
echo '    <td width="150">&nbsp;</td>';

//Esecuzione della query
while ($riga=mysql_fetch_array($tabella)) {
       $id=$riga['ID_CLI'];    
       $cognome=$riga['COGNOME'];
       $nome=$riga['NOME'];
       $sesso=$riga['SESSO'];        
            
       echo '<tr>';
       echo '    <td>'.$id.'</td>';
       echo '    <td>'.$cognome.'</td>';
       echo '    <td>'.$nome.'</td>';
       echo '    <td>'.$sesso.'</td>';
       echo '    <td><a  href="modify.php?id='.$id.'&cognome='.$cognome.'&nome='.$nome.'&sex='.$sesso.'">Modifica</a></td>';
       echo '</tr>';
}
echo '</table>';
?>
Questo codice legge la tabella e la stampa a video, ponendo a fianco ad ogni record un link che ne permette la modifica.

MODIFY.PHP

PHP:
<?php
$id = $_GET['id'];
$cognome = $_GET['cognome'];
$nome = $_GET['nome'];
$sex = $_GET['sex'];

session_start();
$_SESSION['ID'] = $id;

echo '<table border="0">';
echo '<tr>';
echo '    <td width="240">COGNOME</td>';
echo '    <td width="240">NOME</td>';
echo '    <td width="200">SESSO</td>';
echo '</tr>';
echo '</table>';

echo '<br><br>';
echo '<form methot="get" action="scrivitab.php">';
echo '<table border="0">';
echo '<tr>';
echo '    <td width="240"><input type="text" name="cognome" value="'.$cognome.'"></td>';
echo '    <td width="240"><input type="text" name="nome" value="'.$nome.'"></td>';
echo '    <td width="200"><input type="text" name="sex" value="'.$sex.'"></td>';
echo '</tr>';
echo '<tr>';
echo '    <td height="150" colspan="3"><input type="submit" name="invia" value="registra modifiche"></td>';
echo '</tr>';
echo '</table>';
echo '</form>';

?>

Questo memorizza in altrettante variaili il contenuto dei campi del record da modificare, memorizzando anche
l'id_cli in una variabile di sessione (per non perderne ll contenuto pasando da un fle all'altro), dopodiché ti presenta 3 ccampi di input, rispett. per cognme, nome e sesso, che puoi lasciare cosi' o modificare. Cliccando poi REEGISTRA MODIFICHE verrà richiamato

SCRIVITAB.PHP

PHP:
<?php
session_start();
$id = $_SESSION['ID'];

$cogno = $_GET['cognome'];
$nom = $_GET['nome'];
$sesso = $_GET['sex'];


//connessione al server DB
$link_connessione=mysql_connect("localhost",".............","") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db("....................", $link_connessione) or die ("Database inesistente!");

//Esecuzione della query
$query="UPDATE `CLIENTI` SET `COGNOME` = '".$cogno."',`NOME` = '".$nom."',`SESSO` = '".$sesso."' WHERE ID_CLI = '".$id."'";

if (mysql_query($query, $link_connessione)) {
	echo 'il record è stato modificato';
} else {    
	echo 'Attenzione: errore nella query';
}    
?>

che registrerà le modifiche nella tabella. Puoi vedere il link

Spero di essertio stato d'aiuto.:byebye::byebye:


Zorro
Grazie di cuore. Proverò con il mio codice personalizzando il tutto.

Sei stato davvero utile. A presto