Modificare campi tabella

ciao, ecco

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&agrave;  
    <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
 
lo ho riletto tutto... semplicemente sensazionale... Grazie.. veramente..

Ultima cosa.. Io gia uso le sessioni per il login iniziale.. Posso aprire due sessioni insieme?

Altra cosa.. ho notato che con il codice commentato è solo uno il form alla fine e non due come il precedente.. è voluto o prima era un errore? grazie ancora!

Emiliano.
 
ciao
Io gia uso le sessioni per il login iniziale.. Posso aprire due sessioni insieme?
se per aprire intendi che valorizzi due o più sessioni si: es in una pagina puoi avere
$a=$_SESSION['A'];
$b=$_SESSION['B'];
$_SESSION['C']=$c;
eccetera... con tutte le combinazioni possibili
per quanto riguarda invece la riga del session_start() è unica e deve essere la prima, in un certo senso è come dire alla pagina dello script "guarda, che qui uso le sessioni"
i form sono due
quello in cui inserisci il codice e/o il barcode che punta alla pagina di modifica (quella che ho commentato) e
quello nella pagina modifica dove appaiono i dati negli input per fare le modifiche
volendo si potrebbe fare una pagina unica, però così è più semplice
 
ok, ho messo a puntio lo script ora va che è una meraviglia.. ti ringrazio di cuore...

Ora avrei un altra domanda..

Devo fare in modo che se l'utente che si logga è admin vada a pagina_admin e se l'utente è utente vada a pagina_utente.

Il mio intuito mi ha fatto fare una variabile boolena nel database chiama admin che setta 0 per utente e 1 per admin.. Ora come faccio a fare in modo che al login ci sia sto controllo e vada alle pagine opportune?
 
ciao
va bene il campo boeliano
nella pagina in cui verifichi l'user name e password dell'utente avrai penso qualcosa del genere (ti scrivo in pseudocodice)

da post leggo user e password
cerco in tabella autenti se esistono user e passord
se non esistono
torno indietro
altrimenti
leggo il campo boeliano
se boeliano == 0 mando pag_admin
se boeliano == 1 mando pag_utente
fine se esistono
non dovrebbe essere difficile tradurlo in php
 
ciao ecco la traduzione se ti serv
ho interrotto per telefonata+fastweb che mi fa impazzire, coumunque per andare alle pagine riservate io "transito" per una pagina
per fare le verifiche e cercare di impedire l'accesso tramite la riga del bw dove uno potrebbe
scrivere http://www.mio_sito.it/riservata.php

pagina log.php
PHP:
<form action="transito.php" method="post">
inserisci username <input name="user" type="text">
inserisci password <input name="pass" type="text">
</form>

pagina transito.php
PHP:
<?php
//usando le sessioni
if(!isset($_SESSION)){session_start ();}
//verifica da che pagina arriva la richiesta
if(basename($_SERVER['HTTP_REFERER'])!="log.php"){//ATTENZIONE nome pagina == a quella di log
	//la richiesta della pagina NON arriva da log.php
	//quindi reindirizo alla home o altra pagina a piacere
	header("Location: http://www.mio_sito.it/pag_a_piacere.php");
}else{
	//la richesta arriva dalla pagina giusta
	//leggo i post
	$username=htmlspecialchars($_POST['user']);
	$password=htmlspecialchars($_POST['pass']);
	//****qui metto la connessione al db*****
	//e cerco se esiste un record con tale pass e user
	$query_str="SELECT * FROM utenti WHERE user='$username' AND pass='$password'";
	$query=mysql_query($query_str);
	$esiste=mysql_num_rows($query);
	if($esiste==0){
		//l'utente non è registrato, quindi reindirizzo
		header("Location: http://www.mio_sito.it/pag_a_piacere.php");
	}else{
		//metto in sessione la password (mi serivirà in seguito)
		$_SESSION['password']=$password;
		//leggo il campo boeliano (qui lo chiamo boe)
		$riga=mysql_fetch_array($query);
		$boe=$riga['boe'];
		switch ($boe){
			case '0'://se 0 per admin
				header("Location: pag_riservata_admin.php");
			break;
			case '1'://se 1 per utenti
				header("Location: pag_riservata_utente.php");
			break;
			default:
				//non dovrebbe servire, ma preferisco metterla
				header("Location: http://www.mio_sito.it/pag_a_piacere.php");
			break;
		}//fine switch
	}//fine if-else esiste
}//fine if-else provenienza
?>
poi nella pagina pag_riservata_admin.php
PHP:
<?php
if(!isset($_SESSION)){session_start ();}
//verifico la sessione fatta nella pagina transito
if(!isset($_SESSION) || $_SESSION['password']!= "qui scrivo la password dell'admin"){
	//la sessione non esiste o se esiste è diversa dalla tua
	//comunque distruggo le sessioni
	unset($_SESSION['password']);
	//e reindirizzo
	header("Location: http://www.mio_sito.it/pag_a_piacere.php");
}//if verifica sessione e tua password
//eccc...........
?>
nella pagina pag_riservata_utente.php
PHP:
<?php
if(!isset($_SESSION)){session_start ();}
//verifico la sessione fatta nella pagina transito
if(!isset($_SESSION)){
	//la sessione non esiste
	//comunque distruggo le sessioni
	unset($_SESSION['password']);
	//e reindirizzo
	header("Location: http://www.mio_sito.it/pag_a_piacere.php");
}// fine if sessione esiste
//ecc.....................
?>
come puoi vedere non è molto semplice accedere alle pagine riservate "imbrogliando"
 

Discussioni simili