Piccolo problemino su inserimento dati db da form

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Vi posto il codice dell'inserimento da form.. perchè non so neanche dove può essere il problema.. Ne ho provate veramente tante ma non ne vengo a capo..
Questo è il form.. ( premetto che all'inizio di questa pag. php ho incluso il file che contiene i collegamenti al db )
HTML:
<body>
<!-- Inserimento prodotti -->
<div>Inserisci prodotto</div>
<div class="conteiner_pannel">
<div class="conteiner_insertdata">
	<form action="?addnewproduct" method="post">
    <fieldset>
		<legend>Informazioni prodotto</legend>
          <div class="cento">
          <div class="preform"><i class="fa fa-bookmark fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="titolo" placeholder="Inserisci titolo..">
          </div>
          <div class="cinquanta">
          <div class="preform"><i class="fa fa-tags fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="prezzo_p" placeholder="Prezzo listino..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i class="fa fa-sort-amount-desc fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="prezzo_d" placeholder="Prezzo scontato..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i  class="fa fa-truck fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="spedizione" placeholder="Costo spedizione..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i class="fa fa-pie-chart fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="percentuale" placeholder="Percentuale..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i  class="fa fa-truck fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="categoria" placeholder="Categoria..">
          </div>
          <div class="cinquanta">
          <div class="row">
            <input id="cmn-toggle-1" class="cmn-toggle cmn-toggle-round" name="pub" type="checkbox">
            <label for="cmn-toggle-1"></label>
        	</div>
          </div>
    </fieldset>
    <fieldset>
		<legend>Link e collegamenti</legend>
          <div class="cento">
          <div class="preform">
          <i class="fa fa-link fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="link_imm" placeholder="Link immagine..">
          </div>
          <div class="cento">
          <div class="preform">
          <i class="fa fa-camera fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="link_prod" placeholder="Link prodotto..">
          </div>
    </fieldset>
          <input class="button_add" type="submit" value="Inserisci nuovo prodotto">
	</form>
</div>
</div>
</body>

Poi ( teoricamente ) avendo incluso la pag, cliccando su inserisci nuovo prodotto dovrebbe richiamare questa parte qui ( contenutan nella pagina precedentemente inclusa, quella dei collegamenti con il db )

PHP:
// Inserisco nuovo prodotto form in db
$check = isset($_POST['pub']) ? 1 : 0; // questo è un tentativo.. non sono sicuro che si faccia così..
if (isset($_POST['addnewproduct']))
{
  try
  {
    $sql = 'INSERT INTO prodotti SET
			titolo = :titolo,
			prezzo_d = :prezzo_d,
			prezzo_p = :prezzo_p,
			link_imm = :link_imm,
			link_prod = :link_prod,
			percentuale = :percentuale,
			data = :CURDATE(),
			ora = :CURTIME(),
			spedizione = :spedizione,
			pub = :pub,
			categoria = :categoria';
    $s = $pdo->prepare($sql);
	$s->bindValue(':titolo', $_POST['titolo']);
	$s->bindValue(':prezzo_d', $_POST['prezzo_d']);
	$s->bindValue(':prezzo_p', $_POST['Prezzo_p']);
	$s->bindValue(':link_prod', $_POST['link_prod']);
	$s->bindValue(':link_imm', $_POST['link_imm']);
	$s->bindValue(':percentuale', $_POST['percentuale']);
	$s->bindValue(':spedizione', $_POST['spedizione']);
	$s->bindValue(':pub', $check); // stesso tentativo qui..
	$s->bindValue(':categoria', $_POST['categoria']);
    $s->execute();
  }
  catch (PDOException $e)
  {
    $error = 'Error adding product: ' . $e->getMessage();
    include 'error.php';
    exit();
  }

  header("location: ".$_SERVER['PHP_SELF'].""); 
  exit();
}
// Fine inserisco nuovo prodotto form in db

Ho commentato le righe che potrebbero generare l'errore, o meglio che impediscono il salvataggio dei dati, perchè di errori non ne rileva..
 
Una cosa l'ho capita.. Che va inserita la connessione volta per volta.. ed ho cambiato il location.. Ma ancora nulla..
Ecco la nuova versione..
PHP:
$check = isset($_POST['pub']) ? 1 : 0;

if (isset($_POST['addnewproduct']))
{
include 'connection.php';
  try
  {
    $sql = 'INSERT INTO prodotti SET
			titolo = :titolo,
			prezzo_d = :prezzo_d,
			prezzo_p = :prezzo_p,
			link_imm = :link_imm,
			link_prod = :link_prod,
			percentuale = :percentuale,
			data = :CURDATE(),
			ora = :CURTIME(),
			spedizione = :spedizione,
			pub = :pub,
			categoria = :categoria';
    $s = $pdo->prepare($sql);
	$s->bindValue(':titolo', $_POST['titolo']);
	$s->bindValue(':prezzo_d', $_POST['prezzo_d']);
	$s->bindValue(':prezzo_p', $_POST['Prezzo_p']);
	$s->bindValue(':link_prod', $_POST['link_prod']);
	$s->bindValue(':link_imm', $_POST['link_imm']);
	$s->bindValue(':percentuale', $_POST['percentuale']);
	$s->bindValue(':spedizione', $_POST['spedizione']);
	$s->bindValue(':pub', $check);
	$s->bindValue(':categoria', $_POST['categoria']);
    $s->execute();
  }
  catch (PDOException $e)
  {
    $error = 'Error adding product: ' . $e->getMessage();
    include 'ERRORDB/outputpage.php';
    exit();
  }

  header('location: .'); 
  exit();
}
 
Ho editato ancora in questo modo.. ho fatto i vari var_dump e i dati dal modulo arrivano.. a questo punto devo dedurre che è sbagliata la query.. Si ma dove?? Ci sto perdendo la testa?? :(
HTML:
<form action="" method="post">
    <fieldset>
		<legend>Informazioni prodotto</legend>
          <div class="cento">
          <div class="preform"><i class="fa fa-bookmark fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="titolo" placeholder="Inserisci titolo..">
          </div>
          <div class="cinquanta">
          <div class="preform"><i class="fa fa-tags fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="prezzo_p" placeholder="Prezzo listino..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i class="fa fa-sort-amount-desc fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="prezzo_d" placeholder="Prezzo scontato..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i  class="fa fa-truck fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="spedizione" placeholder="Costo spedizione..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i class="fa fa-pie-chart fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="percentuale" placeholder="Percentuale..">
          </div>
          <div class="cinquanta">
          <div class="preform">
          <i  class="fa fa-truck fa-fw allineamento_icon"></i></div>
          <input class="cinquantaform" type="text" name="categoria" placeholder="Categoria..">
          </div>
          <div class="cinquanta">
          <div class="row">
            <input id="cmn-toggle-1" class="cmn-toggle cmn-toggle-round" name="pub" type="checkbox">
            <label for="cmn-toggle-1"></label>
        	</div>
          </div>
    </fieldset>
    <fieldset>
		<legend>Link e collegamenti</legend>
          <div class="cento">
          <div class="preform">
          <i class="fa fa-link fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="link_imm" placeholder="Link immagine..">
          </div>
          <div class="cento">
          <div class="preform">
          <i class="fa fa-camera fa-fw allineamento_icon"></i></div>
          <input class="centoform" type="text" name="link_prod" placeholder="Link prodotto..">
          </div>
    </fieldset>
          <input class="button_add" type="submit" name="action" value="Inserisci">
	</form>
Php... ( pagina generale che contiene anche il form con include )
PHP:
// Inserisco nuovo prodotto form in db
$check = isset($_POST['pub']) ? 1 : 0;

if (isset($_POST['action']) and $_POST['action'] == 'Inserisci')
{
include 'connection.php';
  try
  {
    $sql = 'INSERT INTO prodotti SET
			titolo = :titolo,
			prezzo_d = :prezzo_d,
			prezzo_p = :prezzo_p,
			link_imm = :link_imm,
			link_prod = :link_prod,
			percentuale = :percentuale,
			data = :CURDATE(),
			ora = :CURTIME(),
			spedizione = :spedizione,
			pub = :pub,
			categoria = :categoria';
    $s = $pdo->prepare($sql);
	$s->bindValue(':titolo', $_POST['titolo']);
	$s->bindValue(':prezzo_d', $_POST['prezzo_d']);
	$s->bindValue(':prezzo_p', $_POST['prezzo_p']);
	$s->bindValue(':link_prod', $_POST['link_prod']);
	$s->bindValue(':link_imm', $_POST['link_imm']);
	$s->bindValue(':percentuale', $_POST['percentuale']);
	$s->bindValue(':spedizione', $_POST['spedizione']);
	$s->bindValue(':pub', $check);
	$s->bindValue(':categoria', $_POST['categoria']);
    $s->execute();
  }
  catch (PDOException $e)
  {
    $error = 'Error adding product: ' . $e->getMessage();
    include 'ERRORDB/outputpage.php';
    exit();
  }

  header("location: ".$_SERVER['PHP_SELF'].""); 
  exit();
}
// Fine inserisco nuovo prodotto form in db

Grazie anticipatamente..
 
non ho guardato il tuo script, ma ... qualche post fa, una persona nei parametri di connessione al db aveva il parametro
autocommit = false, controlla ed eventualmente mettilo a true
ciao
Marino
 
P.S. GRAZIE Marino .. Grazie Marino.. Grazie Marinooo..
Era proprio il tuo P.S. Quei maledetti " : " prima di curdate e curtime.. Una giornata buttata al vento a provare e riprovare.. E non ne potevo venire a capo.. Grazie davvero! Poi il problema è che avevo impostato anche sul db che data, ora ed id ( essendo impostati in automatico ) non potevano essere nulli, mentre avevo tolto l'obbligatorietà agli altri per provare se andava.. Assurdoo..
Benedetto il giorno in cui mi sn iscritto su questo forum !! A presto e buona serata!
 
Ultima modifica:

Discussioni simili