Modificare campi tabella

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti,
ho un problema..Io sto facendo uno script per modificare dei campi in una tabella.
Il problema è questo. Lo script parte chiedendo un codice o un barcode, appena inviato il form lo script successivo (di passaggio e non mostra output , ammenoche il codice non esiste) controlla se esiste il codice e eventualmente reindirizza alla pagina di modifica.
Ora il problema è questo.Io devo poter far in modo che l'utente veda cosa ce dentro quel campo ed eventualmente aggiornarlo..

Facendo un esempio concreto :

codice ------ nome ------ barcode ------ quantita ----- costo

1 pippo 01010101 10 50


Devo poter fare in modo di visualizzarlo e cambiare solamente quello che mi interessa... Aiuto :(
 
nellla tabella, come value dei campi di input ci metti i valori inviati dal form, la tabella la metti dentro un secondo form:
PHP:
<input type="text" name="codice" value="<?php echo $_POST['codice']; ?>" /><br />
 
non funziona.. o meglio.. si vede all'interno della barra text lo script che ho scritto ossia <?php echo $_POST ['codice']; ?> ma non vedo niente...aiuto... se non si capisce bene cosa intendo nella domanda la provo a riscrivere...
 
inoltre c'è un altro problema... Io dal form precedente passo solo un campo... sarebbe il campo che mi va a controllare se nel DB è presente quell'articolo. La logica è questa:

edit_art.htm // form su cui si inserisce barcode o codice
|
|
ctrl_edit_art.php // si preoccupa di controllare se esiste l'articolo
| // nel caso esiste redirecta a edit_art_1.php altrimenti
| // stampa a video "articolo inesistente"
edit_art_1.php // mostra un form con scritto codice,barcode,
// marca,modello,quantita,posizione, costo
All'interno dei campi devono starci i dati recuperati dal DB Articoli . una volta editati a piacimento dell'utente col tasto Modifica si andrà alla pagina edit_art_2.php che si preoccupa di recuperare i valori dell'ultimo form e di aggiornarli all'interno della tabella Articoli.

Questo è ciò che devo fare.. ora se avete una strada piu semplice ben venga ma a me solo questo è venuto in mente.. Quantomeno ora sapete cosa devo fare :)
 
se vuoi che il form contenga anche i dati inviati, questo deve essere inserito in una pagina PHP
 
ciao da quello che capisco tu fai

in edit_art.htm inserisci il codice o il barcode

in ctrl_editart.php
leggi il post e verifichi se l'articolo esiste
--scrivo in psedudo codice anche quello che farei--
se esiste == NO
stampi non esistente (?e poi che fai?)
altimenti
se post codice esiste==SI metto in sessione1
se post bacode esiste==SI metto in sessione2
invio a edit_art_1.php

edit_art_1.php
leggo le sessioni
se sessione1==SI e sessione2==NO
varWhere = "where codice=sessione1"
altrimenti se sessione1==NO e sessione2==SI
varWhere = "where barcode=sessione2"
altimenti
varWhere = "where codice=sessione1 AND barcode=sessione2" (oopre l'OR)
fai la query="select pinco,pallo... FROM tabella varWhere
estrai i valori del record
varCampo1 = camp[campo1]
varCampo2 = camp[campo2]
e li metti negli input
<input name"campo1" type="text" value="varCampo1">
...ecc per i vari campi
al modifica
uppi il record set..... varWhere

era così che volevi?
se si non ti resta che tradurlo in php

p.s.
guarda che potresti ridurre anche solo a due pagine
 
diciamo che quello che hai scritto si avvicina molto a quello che vorrei fare io, solo che non capisco come prelevare i dati dal DB e farli diventare variabili.. fin ora ho fatto sempre il contrario cioè prendo dei dati dalla form li faccio diventare variabile scrivo la variabile dentro il DB..

Come faccio a fare tutto con due pagine? sarebbe piu comodo..
 
ciao
ma non hai mai visualizzato i dati?
es.
$query_str="SELECT * FROM mia_tabella WHERE campo_1='$pinco'";//faccio la querystinga di select

$query=mysql_query($query_str);//interrogo la tabella
while($riga=mysql_fetch_array($query)){//leggo tutti i record che soddisfano la where
$campo_1=$riga['campo_1'];
$campo_2=$riga['campo_2'];
//eccetera - se mi serve nellinput il valore di campo_1

echo "<input ..... value=\"$campo_1\" ...>

}

intanto questo, poi per ridurre a due pagine la prossima
 
hai ragione che scemo... il bello è che la ho usata non si sa quante volte.. :) ok aspetto la parte per le due pagine intanto provo a finire la parte modifica :)
 
Allora, ti posto la pagina di controllo e acquisizione dati e quella dove ce il form che dovrebbe far vedere i vari campi pieni e modificabili..

Questa è quella di controllo :

PHP:
<html>

<head> <title>Attendere...</title>

<style type="text/css">

body { background-image: url(sfondo.jpg); 

background-repeat: repeat-x;

font: Eras Medium ITC;

}

</style>

</head>



<body bgcolor="#f7b76b">



<?php

//CONNESSIONE AL DATABASE

include('connect.php');

//RECUPERA DATI DAL FORM

$codice = $_POST['codice'];

$codice = addslashes(htmlspecialchars(($_POST['codice'])));

if($codice==""){

echo "<p>Il campo codice non puo essere vuoto</p>";

//ritorno al form

}

$bcode = $_POST['bcode'];

$bcode = addslashes(htmlspecialchars(($_POST['bcode'])));

$ctrl_code = @mysql_query("SELECT * FROM articoli WHERE codice='$codice'") or die (mysql_error());

    if(@mysql_num_rows($ctrl_code)>0)

    {

      $a=1;

//ritorno al form

      }else{

       $a=2;

      }

$ctrl_bcode = @mysql_query("SELECT * FROM articoli WHERE bcode='$bcode'") or die (mysql_error());

    if(@mysql_num_rows($ctrl_bcode)>0)

    {

      $b=1;

//ritorno al form

      }else{

       $b=2;

      }

if($a==2 && $b==2){

  echo "<p>Articolo inesistente</p>";

  } else {

$query_str="SELECT * FROM articoli ";//faccio la querystinga di select

$query=mysql_query($query_str);//interrogo la tabella

$query1=mysql_query($query_str);//interrogo la tabella

while($riga=mysql_fetch_array($query)){//leggo tutti i record che soddisfano la where

$codice=$riga['codice'];

$bcode=$riga['bcode'];

$marca=$riga['marca'];

$modello=$riga['modello'];

$qnt=$riga['qnt'];

$posizione=$riga['posizione'];

$costo=$riga['costo'];



//eccetera - se mi serve nellinput il valore di campo_1

@header('location:edit_art_1.php');

}

while($riga=mysql_fetch_array($query1)){//leggo tutti i record che soddisfano la where

$codice=$riga['codice'];

$bcode=$riga['bcode'];

$marca=$riga['marca'];

$modello=$riga['modello'];

$qnt=$riga['qnt'];

$posizione=$riga['posizione'];

$costo=$riga['costo'];



//eccetera - se mi serve nellinput il valore di campo_1



  @header('location:edit_art_1.php');

}



}

?>

</body>

</html>

Mentre quest'altra è quella di visualizzazione:

PHP:
<html>

<head><title>Inserimento Nuovo Articolo</title>

<style type="text/css">

body { background-image: url(sfondo.jpg); 

background-repeat: repeat-x;

font: Eras Medium ITC;

}

</style>



<style type="text/css">

#main {

	width:672px;

	height:300px;

	position:absolute;

	top:30%;

	left:50%;

	margin:-150px 0 0 -336px;

}

</style>

</head>

<body bgcolor="#f7b76b">

<FORM METHOD ="post" action="edit_art_complete.php">

<div id="main">

<p><img src="images/inserimentoart.png"></p>

<p>&nbsp;</p>

<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5>

  <tr>

<td><font face="Eras Medium ITC">Codice:</font></td><td width="234">

  <input type="text" name="codice" size=35 maxlength=40 value="<?php echo ".$_POST['$marca']"; ?>" /><br />   </td>

<td>

  <img src="images/campoobbligatorio.png"></td>

</tr>

<tr>

<td><font face="Eras Medium ITC">Barcode:</font></td><td>

<input type=text name="bcode" size=35 maxlength=40 value=""></td>

</tr>

<tr>

<td><font face="Eras Medium ITC">Marca:</font></td><td>

<input type=text name="marca" size=35 maxlength=40 value=""></td>

<td>

  <img src="images/campoobbligatorio.png"></td>

</tr>

<tr>

<td><font face="Eras Medium ITC">Modello:</font></td><td>

<input type=text name="modello" size=35 maxlength=40 value=""></td>

<td>

  <img src="images/campoobbligatorio.png"></td>

</tr>

	<tr>

<td><font face="Eras Medium ITC">Quantita':</font></td><td>

<input type=text name="qnt" size=35 maxlength=40 value=""></td>

<td>

  <img src="images/campoobbligatorio.png"></td>

</tr>

<tr>

<td><font face="Eras Medium ITC">Posizione:</font></td><td>

<input type=text name="posizione" size=35 maxlength=40 value=""></td>

</tr>

<tr>

<td><font face="Eras Medium ITC">Costo:</font></td><td>

<input type=text name="costo" size=35 maxlength=40 value=""></td>

<td>

  <img src="images/campoobbligatorio.png"></td>

</tr>

<tr><td></td><td>

	<p align="center">

	<input type=submit value="Invia i Dati" name="B1" style="font-weight: 700"></td></tr>

<tr width="480">

<td colspan="2">

<font face="Eras Medium ITC" size="-3">I campi contrassegnati da <img src="images/campoobbligatorio.png"> sono obbligatori.</font></td>

</tr>

</table>

</div>

</form> 

</body>

</HTML>

Ho provato anche a mettere la variabile direttamente al posto di $_POST ma niente..

AIUTOOOOOOOO :(:(
 
ciao
mi sembra (ma può essere solo una mia impressione) che tu stia facendo un po' di ca..no.
a parte il codice dove hai le query eccc..., ma fai un'altra pagina per visualizzare (cosa?) e come trasmetti i dati da una pagina all'altra?
se in una pagina estrai i dati che ti servono (?) perche fare un'altra pagina per visualizzarli?

comunque se hai un poì di pazienza ci do un occhio poi ti so dire meglio
 
si ti ringrazio , aspetto fiducioso il tuo aiuto.. se riusciamo a farlo diventare da 4 a 2 pagine sarebbe ancora meglio.. attendo te per andare avanti. Nel frattempo ti ringrazio di cuore.

Emiliano.
 
guarda, sinceramente a me andrebbe bene anche far funzionare le mie due pagine.. poi fai come ti trovi meglio.. devo trovare una cavolo di soluzione :(
 
ciao
provo, se ho capito a darti lo schema di come devi fare, metto i nomi delle pagine così come mi viene, poi li correggi tu
pagina form_codice.php
PHP:
<form action="modifica.php" method="post" name="code_barcode">
  <p>inserire codice o barcode o entrambi. almeno un campo deve essere inserito </p>
  <p>inserisci codice 
    <input name="codice" type="text" id="codice">
  </p>
  <p>inserisci barcode 
    <input name="barcode" type="text" id="barcode">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
  </p>
  <p>
    <input type="reset" name="Submit" value="reset">
</p>
</form>

pagina modifica.php
PHP:
<?php
if(!isset($_SESSION)){session_start ();}//creo sessione

//qui metto i dati di connessione al DB
if(isset($_POST['modifica']) && $_POST['modifica'] =="modifica"){//leggo submit da pagina modifica
	//non so devi verificare che qualche campo non sia stato messo a vuoto?
	//eventualmente per la prossima
	$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'];
	//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
	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
	echo "<meta http-equiv='Refresh' content='3; URL=form_codice.php'>";
}//fine if pst modifica


if(isset($_POST['invia']){//leggo il submit da pagina form_codice.php
	$codice=trim(htmlspecialchars($_POST['codice'];//leggo post codice
	$barcode=trim(htmlspecialchars($_POST['barcode'];//leggo post barcode
	//verifico i valori
	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
		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;
		$query=mysql_query($query_str);
		//verifico l'esistenza
		$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'];
			$_SESSION['codice']=$riga['codice'];
			$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
?>

guarda che è uno schema, verifica che non abbia fatto qualche errore cuoi nomi...
comunque prova "dovrebbe funziare"
 
allora, innanzitutto sei stato gentilissimo e ti ringrazio.
Ho modificato il codice in modo che funzionasse (avevi scordato qualche parentesi tonda e qualche altra banalita), ora non capisco per quale motivo la pagina modifica ha due volte di seguito il form per modifica. Uno con i dati all'interno uno completamente vuoto... C'è un motivo particolare? Non capisco molto bene che hai utilizzato perchè alcune cose le ho viste per la prima volta (tipo le where fatte con variabili) o altre cose..


P.S. saresti cosi gentile da commentare le linee di codice una ad una? tranne le stupidaggini tipo echo etc.. solo i comandi che non sono comandi base (if,echo,le sintassi sql standard).

Grazie ancora!! e scusami se approfitto di te.. ma sei l'unico capace,preparato e soprattutto cordiale!!
 

Discussioni simili