Sapete dirmi dove sto sbagliando? INSERT INTO....

  • Creatore Discussione Creatore Discussione ditex
  • Data di inizio Data di inizio

ditex

Nuovo Utente
9 Apr 2012
11
0
0
Salve,
Tramite un form devo eseguire un invio del modulo tramite metodo POST a un file che elabora i dati per poi archiviarli nel Mysql:

Codice:
<?

require('db_config.php');

db_connect($mysql['username'],$mysql['password'],$mysql['database'],$mysql['host']);

if(isset($_POST['submit'])){
function add_dbordine($numero,$nominativo,$data_ord,$data_stim,$tipo_quad,$tipo_corn,$misure,$quant,$stato,$prezzo,$contanti'){
	$sql = 'INSERT INTO `ordini` ( `numero` , `nominativo` , `data_ord` , `data_stim`, `tipo_quad` , `tipo_corn` , `misure` , `quant` , `stato` , `prezzo` , `contanti` ) '
		. ' VALUES ( \'\', \''.mysql_escape_string($numero).'\', \''.mysql_escape_string($nominativo).'\', \''.mysql_escape_string($data_ord).'\', \''.mysql_escape_string($data_stim).'\', \''.mysql_escape_string($tipo_quad).'\', \''.mysql_escape_string($tipo_corn).'\', \''.mysql_escape_string($misure).'\', \''.mysql_escape_string($quant).'\', \''.mysql_escape_string($stato).'\', \''.mysql_escape_string($prezzo).'\', \''.mysql_escape_string($contanti).'\', \''.time().'\')';
		if(mysql_query($sql)){
			return true;
		} else {
			die(mysql_error());
			return false;
		}
	} else {
		die(mysql_error());
		return false;
	}
}
?>

Scommetto che è uscito un pastrocchio nel codice, premetto che il file db_config.php lo configurato bene.
Nel form in php, quando inserisco value="$numero" nel campo di testo, mi compare $numero mentre non dovrebbe comparirmi... come posso risolvere?

Grazie.
 
Lo script non può funzionare per due ragioni:
  • ci sono svariati errori logici e di sintassi;
  • definisci la funzione ma non la esegui da nessuna parte;
Sembra che tu sappia poco di PHP... Ti invito a leggere una guida e poi cimentarti nella creazione di qualcosa di questo genere.

Tanto per farti capire, un esempio di come avresti potuto farlo è questo:
PHP:
<?php
require_once 'db_config.php';

function add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti)
{
    $sql = "INSERT INTO ordini (numero, nominativo, data_ord, data_stim, tipo_quad, tipo_corn, misure, quant, stato, prezzo) ";
    $sql .= "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')";

    $arguments = func_get_args();
    $arguments = array_map('mysql_real_escape_string', $arguments);

    array_unshift($arguments, $sql);

    $sql = call_user_func_array('sprintf', $arguments);

    mysql_query($sql) or die(mysql_error());
}

if (isset($_POST['submit'])) {
    $numero = $_POST['numero'];
    $nominativo = $_POST['nominativo'];
    $data_ord = $_POST['data_ord'];
    $data_stim = $_POST['data_stim'];
    $tipo_quad = $_POST['tipo_quad'];
    $tipo_corn = $_POST['tipo_corn'];
    $misure = $_POST['misure'];
    $quant = $_POST['quant'];
    $stato = $_POST['stato'];
    $prezzo = $_POST['prezzo'];
    $contanti = $_POST['contanti'];

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti);
}
?>
Anche se le funzioni andrebbero definite in un file a parte, e servono solo se userai più di una volta la procedura.
 
Lo script non può funzionare per due ragioni:
  • ci sono svariati errori logici e di sintassi;
  • definisci la funzione ma non la esegui da nessuna parte;
Sembra che tu sappia poco di PHP... Ti invito a leggere una guida e poi cimentarti nella creazione di qualcosa di questo genere.

Tanto per farti capire, un esempio di come avresti potuto farlo è questo:
PHP:
<?php
require_once 'db_config.php';

function add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti)
{
    $sql = "INSERT INTO ordini (numero, nominativo, data_ord, data_stim, tipo_quad, tipo_corn, misure, quant, stato, prezzo) ";
    $sql .= "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')";

    $arguments = func_get_args();
    $arguments = array_map('mysql_real_escape_string', $arguments);

    array_unshift($arguments, $sql);

    $sql = call_user_func_array('sprintf', $arguments);

    mysql_query($sql) or die(mysql_error());
}

if (isset($_POST['submit'])) {
    $numero = $_POST['numero'];
    $nominativo = $_POST['nominativo'];
    $data_ord = $_POST['data_ord'];
    $data_stim = $_POST['data_stim'];
    $tipo_quad = $_POST['tipo_quad'];
    $tipo_corn = $_POST['tipo_corn'];
    $misure = $_POST['misure'];
    $quant = $_POST['quant'];
    $stato = $_POST['stato'];
    $prezzo = $_POST['prezzo'];
    $contanti = $_POST['contanti'];

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti);
}
?>
Anche se le funzioni andrebbero definite in un file a parte, e servono solo se userai più di una volta la procedura.

Hai ragione ne so poco e niente di php, anche se mi piacerebbe impararlo ma non so da dove cominciare, una volta avevo letto un paio di guide di base.
Il fatto è che questo script mi serve urgente! potresti aiutarmi?
 
Guarda che ho postato una versione semi-funzionante (sicuramente c'è qualche dettaglio da sistemare) dello script. È in fondo al post.

La funzione sarebbe questa:

Codice:
function add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti) 
{ 
    $sql = "INSERT INTO ordini (numero, nominativo, data_ord, data_stim, tipo_quad, tipo_corn, misure, quant, stato, prezzo) "; 
    $sql .= "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"; 

    $arguments = func_get_args(); 
    $arguments = array_map('mysql_real_escape_string', $arguments); 

    array_unshift($arguments, $sql); 

    $sql = call_user_func_array('sprintf', $arguments); 

    mysql_query($sql) or die(mysql_error()); 
}

giusto?

per poter far inserire i dati al database cosa mancherebbe? grazie mille
 
Ho postato lo script completo: la funzione e l'inserimento dei dati nel database, cioè questa parte:
PHP:
if (isset($_POST['submit'])) { 
    $numero = $_POST['numero']; 
    $nominativo = $_POST['nominativo']; 
    $data_ord = $_POST['data_ord']; 
    $data_stim = $_POST['data_stim']; 
    $tipo_quad = $_POST['tipo_quad']; 
    $tipo_corn = $_POST['tipo_corn']; 
    $misure = $_POST['misure']; 
    $quant = $_POST['quant']; 
    $stato = $_POST['stato']; 
    $prezzo = $_POST['prezzo']; 
    $contanti = $_POST['contanti']; 

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti); 
}
Devi sistemare i nomi dei campi in caso non coincidano, per il resto dovrebbe andare.
 
Ho postato lo script completo: la funzione e l'inserimento dei dati nel database, cioè questa parte:
PHP:
if (isset($_POST['submit'])) { 
    $numero = $_POST['numero']; 
    $nominativo = $_POST['nominativo']; 
    $data_ord = $_POST['data_ord']; 
    $data_stim = $_POST['data_stim']; 
    $tipo_quad = $_POST['tipo_quad']; 
    $tipo_corn = $_POST['tipo_corn']; 
    $misure = $_POST['misure']; 
    $quant = $_POST['quant']; 
    $stato = $_POST['stato']; 
    $prezzo = $_POST['prezzo']; 
    $contanti = $_POST['contanti']; 

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti); 
}
Devi sistemare i nomi dei campi in caso non coincidano, per il resto dovrebbe andare.

Si, i campi sono esatti, ho tolto i value="" e sui name="" coincidono tutti con quelli inseriti nello script, solo che mi quando invio mi da pagina bianca poi vado a controllare nel database e non vedo nulla di nuovo.

Il file db_config.php è configurato cosi:

Codice:
<?php
$host = "localhost";
$database = "ordini";
$username = "root";
$password = "";

$mysql = mysql_connect($host, $username, $password) or die ('Errore durante la connessione');
mysql_select_db($database) or die ('Errore durante la selezione del database');
?>
 
Posta il codice HTML del form, e modifica così la parte PHP:
PHP:
if (isset($_POST['submit'])) {  
    $numero = $_POST['numero'];  
    $nominativo = $_POST['nominativo'];  
    $data_ord = $_POST['data_ord'];  
    $data_stim = $_POST['data_stim'];  
    $tipo_quad = $_POST['tipo_quad'];  
    $tipo_corn = $_POST['tipo_corn'];  
    $misure = $_POST['misure'];  
    $quant = $_POST['quant'];  
    $stato = $_POST['stato'];  
    $prezzo = $_POST['prezzo'];  
    $contanti = $_POST['contanti'];  

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti);  

    echo 'OK';
}
Così ci assicuriamo che vada tutto bene.
 
Posta il codice HTML del form, e modifica così la parte PHP:
PHP:
if (isset($_POST['submit'])) {  
    $numero = $_POST['numero'];  
    $nominativo = $_POST['nominativo'];  
    $data_ord = $_POST['data_ord'];  
    $data_stim = $_POST['data_stim'];  
    $tipo_quad = $_POST['tipo_quad'];  
    $tipo_corn = $_POST['tipo_corn'];  
    $misure = $_POST['misure'];  
    $quant = $_POST['quant'];  
    $stato = $_POST['stato'];  
    $prezzo = $_POST['prezzo'];  
    $contanti = $_POST['contanti'];  

    add_dbordine($numero, $nominativo, $data_ord, $data_stim, $tipo_quad, $tipo_corn, $misure, $quant, $stato, $prezzo, $contanti);  

    echo 'OK';
}
Così ci assicuriamo che vada tutto bene.

lo avevo già aggiunto io, ma niente da fare non mi appare il messaggio di conferma
 
ciao,sicuro che il pulsante per l'invio del form abbiama name "submit"?

prova a mettere var_dump($_POST); a inizio pagina
 
ciao,sicuro che il pulsante per l'invio del form abbiama name "submit"?

prova a mettere var_dump($_POST); a inizio pagina

Ahahahhaah non ci credo! scusate ma torno già stanco da lavoro... hai ragione dovevo mettere name="submit" credevo che con il type lo riconosceva :dormo:
grazie mille criric e soprattutto anche a te alessandro!
 

Discussioni simili