problema con form di inserimento dati nel db

ciao a tutti, premetto che sono un novizio nella programmazione e stavo cercando di costruire un form per selezionare dati dal database, uno per inserirli ed uno per modificarli. Per fare un po di pratica partendo dal semplice e poi passare a cose un po più complicate.

Il form per la selezione funziona correttamente, quello per l'inserimento no.

Posto a seguito il codice:

PRIMA PAGINA

<html>
<body>
<?php
include ("./consel.php");
function caratteri($str){
   $str=urldecode($str);
   $str=stripslashes($str);
   $str=htmlspecialchars($str);
   return($str);
}
$sql="SELECT marca FROM marca";
$produttori=mysql_query($sql,$connessione);
$nrighe=mysql_num_rows($produttori);
if ($nrighe == 0) {
   echo ("informazioni non trovate");
   } else {
      #record trovati
      echo "<FORM METHOD=GET ACTION=\".\insert_it.php\">"; 
      $codice=caratteri($codice);
      $descrizione=caratteri($descrizione);
      $prezzo=caratteri($prezzo);
      $costo=caratteri($costo);
      $quantità=caratteri($quantità);
      $fornitore=caratteri($fornitore);
      $immagine=caratteri($immagine); 
      echo "<br>Inserisci articolo<br>";
      echo "<br>codice<br><input type=\"text\" name=\"codice\" value=\"$codice\"><br>";
      echo "<br>descrizione<br><textarea name=\"descrizione\" value=\"$descrizione\" cols=\"45\" rows=\"5\"></textarea><br>";
      echo "<br>prezzo<br><input type=\"text\" name=\"prezzo\" value=\"$prezzo\"><br>";
      echo "<br>costo<br><input type=\"text\" name=\"costo\" value=\"$costo\"><br>";
      echo "<br>quantità<br><input type=\"text\" name=\"quantità\" value=\"$quantità\"><br>";
      echo "<br> Seleziona un fornitore:<br><SELECT NAME=\"$fornitore\">";
      while ($riga=mysql_fetch_array($produttori))
      {
         $fornitore=$riga['marca'];
      echo "<br><option>$fornitore";
      }
      echo "</select>";
      echo "<br>immagine<br><input type=\"text\" name=\"immagine\" value=\"$immagine\"><br>";
      }
      echo "<br><input type=\"submit\" value=\"inserisci\"><br>";
      echo "</form>";
      echo "<form method=get action=\"$PHP_SELF\">";
      echo "<br><input type=\"submit\" value=\"Cancella\"><br>"; 
mysql_close($connessione);
   
?></form>

SECONDA PAGINA

<?php
#insert_it.php
include ("./consel.php");
function protect_it($str) {
   $str=stripslashes($str);
   $str=urlencode($str);
   return($str);
   }
$errore=false;
if ($codice == " "){
   $errore=true;
   echo "Devi inserire il codice<br>";
   }
if ($descrizione == " ") {
   $errore=true;
   echo "Devi inserire la descrizione<br>";
}
if ($prezzo == " ") {
   $errore=true;
   echo "Devi inserire il prezzo di acquisto<br>";
}
if ($costo == " ") {
   $errore=true;
   echo "Devi inserire il prezzo di vendita<br>";
}
if ($quantità == " ") {
   $errore=true;
   echo "Devi inserire la quantità<br>";
}
if ($fornitore == " ") {
   $errore=true;
   echo "Devi inserire il fornitore<br>";
   }
if ($immagine == " ") {
   $errore=true;
   echo "Devi inserire l\'immagine<br>";
}
if ($errore) {
       $codice=protect_it($codice);
      $descrizione=protect_it($descrizione);
      $prezzo=protect_it($prezzo);
      $costo=protect_it($costo);
      $quantità=protect_it($quantità);
      $fornitore=protect_it($fornitore);
      $immagine=protect_it($immagine); 
      echo "<br><A HREF=\"insert_articolo.php?codice=$codice&descrzione=$descrizione&prezzo=$prezzo&costo=$costo&quantità=$quantità&fornitore=$fornitore&immagine=$immagine\">indietro</A>";
      exit;
}
$sql="INSERT INTO articolo (codice,descrizione,prezzo,costo,quantità,fornitore,immagine) VALUES ('$codice','$descrizione','$prezzo','$costo','$quantità','$fornitore','$immagine')";
if(!mysql_query($sql,$connessione)) {
   echo"Errore, articolo non inserito. Torna indietro e prova di nuovo<br>";
   exit;
   } else {
      #inserimento avvenuto con successo 
      echo "l'articolo <b>$codice<b/>è stato inserito correttamente";
      echo "<br><a href=\"insert_articolo.php\"> indietro </a>";
   }
?>

le tabelle del database interessate sono le seguenti:

 Tabella articolo

id_art int(4)  auto_increment primary key             

  codice varchar(20)       

  descrizione text         

  costo double(5,2)           

  prezzo double(5,2)             

  quantità int(3)           

  fornitore varchar(20) 

  immagine varchar(200)

Tabella marca

id_marca int(4)  auto_increment primary key

marca varchar(20)

Non riesco a capire il perchè del malfunzionamento, magari è una cavolata o un errore dato da un concetto che non ho correttamente assimilato. Insomma se qualcuno ha un po di tempo da dedicarmi, glie ne sono grato.

inviato 6 anni fa
patroclo
X 0 X

Lo script di inserimento non usa l'array $_POST per prelevare i dati provenienti dal form. Usa invece delle variabili con gli stessi nomi dei campi del form.

Questo approccio è deprecato da tempo e funziona solo se nel php.ini viene abilitato il register global.

Ti consiglio piuttosto di usare $_POST, ovvero di sostituire $codice con $_POST['codice'], $descrizione con $_POST['descrizione'], ecc..

Sul sito comunque c'è tutto un corso dedicato all'interazione PHP/MySQL:

http://www.phpnews.it/corsi/corso-php-mysql/

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda