ciao, ecco
credo di aver commentato a sufficienza, eventualmente copia la riga/righe che non capisci e postale
PHP:
<?php
//TUTTO QUESTO SCRIPT E' SU UN'UNICA PAGINA
//non ti commento la pagina con il form codice e barcode perchè è un semplice form
//creo le sessioni, da inserire nella prima riga in tutte le pagine che si utilizzano
if(!isset($_SESSION)){session_start ();}
//qui metto i dati di connessione al DB , penso che tu non abbia problemi
//leggo l'input proveniente dal form di questa pagina
//questa parte sino al commento ***FINE MODIFICA*** si attiva alla pressione del submit del form modifica
if(isset($_POST['modifica']) && $_POST['modifica'] =="modifica"){//leggo submit da pagina modifica
//leggo i vari $_POST provenienti dal form modifica
//con htmlspecial... trasformo eventuali tag html malevoli
//con trim tolgo gli eventuali spazi ini e finali
// (come dette non ho messo la verifica se qualcuno vuoto)
$codice_m=trim(htmlspecialchars($_POST['codice_m'];
$nome_m=trim(htmlspecialchars($_POST['nome_m'];
$barcode_m=trim(htmlspecialchars($_POST['barcode_m'];
$quantita_m=trim(htmlspecialchars($_POST['quantita_m'];
$costo_m=trim(htmlspecialchars($_POST['costo_m'];
//con i valori creo la qeurystringa
//uso $_SESSION['codice'] perche devo usare il codice precedente, se cambio il
//codice è evidente che non lo trova
//secondo me sarebbe da verificare che il nuovo codice non sia già esistente
//vado a capo per comodità di scrittura della query
$query_str="UPDATE articoli SET codice='".$codice_m."', nome='".$nome_m."', barcode='".$barcode_m."',
quantita='".$quantita_m."', costo='".$costo_m."' WHERE codice='".$_SESSION['codice']."'";
//uppo e verifico qui mi sembra facile
if(mysql_query($query_str)){//uppa OK
echo "modifica eseguita";
}else{//uppa KO
echo "verificato errore riprova più tardi";
}//fine if else uppa
//torno all'inserimento codice cioè alla pag precedente
//se vuoi tornare ad un altra cambia l'url, con i percorsi giusti se altra cartella
echo "<meta http-equiv='Refresh' content='3; URL=form_codice.php'>";
}//fine if post modifica
//***FINE MODIFICA***
//questa parte si attiva quando dalla pagina precedente ho dato il submit
//termina al commento ***FINE FORM MODIFICA***
if(isset($_POST['invia']){//leggo il submit da pagina form_codice.php
//forse conviene (non dovrebbe servire) distruggere il post dalla pag precedente
//aggiungendo questa riga
unset($_POST['invia']);
//leggo i post trattandoli come prima<br>
//in particolare se l'utente inputa degli spazi e basta questi vengono eliminati
//da trim rendendo il post vuoto
$codice=trim(htmlspecialchars($_POST['codice'];//leggo post codice
$barcode=trim(htmlspecialchars($_POST['barcode'];//leggo post barcode
//verifico i valori non dovresti avere problemi per capire le verifiche
if($codice =="" && $barcode==""){
//sono entrambi vuoti torno a form_codice.php
echo "non inserito codice e barcode";
echo "<meta http-equiv='Refresh' content='3; URL=form_codice.php'>";
}else{
//almeno uno dei due o entrambi sono stati riempiti
/*dato che almeno uno dei due campi non è vuoto preparo la stringa che ho chiamato $were
per ricordare che deve essere posta dove avrei messo la clausola WHERE ... dell aquerystringa
php è un linguaggio dinamico per cui usa quello che c'è dentro una variabile es.
se hai inputato il codice 4 e il barcode 010100 dentro $where troverai
WHERE codice='4' AND barcode='010100'
se inputato solo il codice es. 5 troverai
WHERE codice='5'
se imputato solo il barcode es. 001100 troverai
WHERE barcode='001100'
per fare una prova puoi scrivere
echo "a questo punto la variabile were contiene ".$were;
il principio è lo stesso per costruire la querystringa
*/
if($codice !="" && $barcode==""){//codice inserito, barcode no
//creo la clausola where
$were=" WHERE codice='".$codice."' ";
}elseif($codice =="" && $barcode!=""){// codice non inserito, barcode si
$were=" WHERE barcode='".$barcode."' ";
}else{//sono stati inseriti entrambi
$were=" WHERE codice='".$codice."' AND barcode='".$barcode."' ";
}//fine if quale inserito
//interrogo la tabella
$query_str="SELECT * FROM articoli".$were;
/*in questo punto, se vuoi provare mettei poi lo togli
var_dump($query_str);
e vedtrai che ti stampa in funzione del controllo sopra es.
string 60 "SELECT * FROM articoli WHERE codice='4' AND barcode='010100'"
a dimostrazione che la querystr si è composta come ti serve
*/
//a questo punto interrogo db/tabella
$query=mysql_query($query_str);
//verifico l'esistenza del record che soddisfi alle condizioni della clausola where
$esistono=mysql_num_rows($query);
if($esistono==0){// se 0 non esiste l'articolo
//do messaggio e torno ad inserimento codice
echo "articolo inesistente";
echo "<meta http-equiv='Refresh' content='3; URL=form_codice.php'>";
}else{
//l'articolo esiste e leggo i suoi campi
$riga=mysql_fetch_array($query);
$codice=$riga['codice'];
//metto in sessione il codice perche se l'utente lo modifica quando uppo devo trovare il vecchio record
//avrei potuto fare direttamente solo quella sotto
// e nell'input mettere echo $_SESSION['codice']
$_SESSION['codice']=$riga['codice'];
//leggo anche gli altri campi del record
$nome=$riga['nome'];
$barcode=$riga['barcode'];
$quantita=$riga['quantita'];
$costo=$riga['costo'];
}//fine if-else esistono
}//fine if-else verifica vuoti
//esco da php per fare il form di modifica
//io metto tutti i campi modificabili
//correggi quelli si e quelli tersformando i vari input in echo
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" name="modifica">
<p>modifica:</p>
<p> codice
<input name="codice_m" type="text" id="codice_m" value="<?php echo $codice;?>">
<br>
nome
<input name="nome_m" type="text" id="nome_m" value="<?php echo $nome;?>">
<br>
barcode
<input name="barcode_m" type="text" id="barcode_m" value="<?php echo $barcode;?>">
<br>
quantità
<input name="quantita_m" type="text" id="quantita_m" value="<?php echo $quantita;?>">
<br>
costo
<input name="costo_m" type="text" id="costo_m" value="<?php echo $costo;?>">
</p>
<p>non mi sembrerebbe giusto che l'utente possa modificare il codice e/o il barcode </p>
<p>
<input name="modifica" type="submit" id="modifica" value="modifica">
</p>
</form>
<?php
}//fine if leggo submit NON DIMENTICARTI QUESTE RIGHE
// ***FINE FORM MODIFICA*** ricordati di chiudere php
?>
credo di aver commentato a sufficienza, eventualmente copia la riga/righe che non capisci e postale