Query eseguita due volte anche se fuori dal ciclo..

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera a tutti,
ho un problema, spero stupido, ma non riesco a cavarne il ragno dal buco...
Io eseguo questo codice per popolare due database:

PHP:
<?php
session_start();
include('connect.php');
if(isset($_POST['creapdf'])){
	$code=$_POST['codice_int'];
    $descrizione = $_POST['descrizione'];
	$quantita=$_POST['qnt'];
	$fornitore=$_POST['fornitore'];
	$codice=$_POST['codice'];
	$um=$_POST['UM'];
	$reparto=$_POST['reparto'];
    $prezzo = $_POST['prezzo'];
	$scontoperc=$_POST['scontoperc'];
    $scontoval=$_POST['scontoval'];
    $prezzosconto=$_POST['prezzosconto'];
	$causale=$_POST['causale'];
	$colli=$_POST['colli'];
	$porto=$_POST['porto'];
	$note=$_POST['note'];
	$vettore=$_POST['vettore'];
	$idubi=$_POST['sedi'];
	$_SESSION['vettore']=$vettore;
	$_SESSION['causale']=$causale;
	$_SESSION['colli']=$colli;
    $_SESSION['porto']=$porto;
	$_SESSION['note']=$note;
	$dbprodotti=count($codice);
$message = "";
$border = "0";
	$query = mysql_query("SELECT * FROM ddt ");
	$rows = mysql_fetch_array($query);
	$_SESSION['numero']=$rows['numero_doc'];
	//$_SESSION['anno']=$rows['anno'];
	$numero=$_SESSION['numero']+1;
	$anno=2013;
$num_trans=mysql_query("SELECT transazione FROM Transazioni ORDER BY transazione LIMIT 1");
$max=mysql_fetch_array($num_trans);
$transazione=(int)$max['transazione']+1;
 echo 'La transazione è la numero:' .$transazione.'</br>';
 echo 'Il numero del documento è:' .$numero.'</br>';
 echo 'L operatore è:' .$operatore.'</br>';
 echo 'La causale è:' .$causale.'</br>';
 echo 'I colli sono:' .$colli.'</br>';
 echo 'Il porto è:' .$porto.'</br>';
 echo 'Il vettore è:' .$vettore.'</br>';
 echo 'Le note sono:' .$note.'</br>';
	$insert_ddt = "INSERT INTO `ddt` 
    SET id = NULL,
    numero_doc = '$numero',
	anno = '2013',
	data = now(),
	operatore =  '$operatore',
	destinatario =  '$destinatario',
	causale = '$causale',
	porto = '$porto',
	colli = '$colli',
	vettore = '$vettore',
	note = '$note'
 ";
 $result = mysql_query($insert_ddt);
 if (@mysql_query($insert_ddt)) {
	echo ' Inserimento OK</br>';
	} else {
		echo ("<div align=center> <b>Errore di inserimento DDT: ". mysql_error()
		."</b></div>");
		}
 $dbprodotti=count($codice);
 echo 'I prodotti sono:' .$dbprodotti.'</br>';
 for ($k=0;$k<$dbprodotti;$k++){
 $query_trans="INSERT INTO Transazioni(
				data,
				barcode,
				codice,
				descrizione,
				quantita,
				reparto,
				fornitore,
				operatore,
				prezzo,
				sconto,
				causale,
				transazione)
				VALUES(
				now(),
				'$codice[$k]',
				'$code[$k]',
				'$descrizione[$k]',
				'$quantita[$k]',
				'$reparto[$k]',
				'$fornitore[$k]',
				'$operatore[$k]',
				'0',
				'0',
				'$causale',
				'$transazione'
				)";
	echo 'Il barcode e:' .$codice[$k].'</br>';
	echo 'Il codice e:' .$code[$k].'</br>';
	echo 'Il descrizione e:' .$descrizione[$k].'</br>';
	echo 'Il quantita e:' .$quantita[$k].'</br>';
	echo 'Il reparto e:' .$reparto[$k].'</br>';
	echo 'Il fornitore e:' .$fornitore[$k].'</br>';
	echo 'Il transazione e:' .$transazione.'</br>';
	}
	$risultati = mysql_query($query_trans); 
if (@mysql_query($query_trans)) {
	echo ("<div align=center <b> Transazione inserita con successo.</b></div>");
	} else {
		echo ("<div align=center> <b>Errore di inserimento Transazione: ". mysql_error()
		."</b></div>");
		}
}
?>

Non capisco perchè la prima query, quella fuori dal ciclo, viene inserita due volte nel DB... Mentre l'altra nel ciclo funziona perfettamente...

Dove sbaglio??
 
ciao
se parli di questa
PHP:
<?php
//....
	$risultati = mysql_query($query_trans); 
	if (@mysql_query($query_trans)) {
    	echo ("<div align=center <b> Transazione inserita con successo.</b></div>");
    } else {
        echo ("<div align=center> <b>Errore di inserimento Transazione: ". mysql_error()
        ."</b></div>");
	}
//..
?>
è semplice
con
if (@mysql_query($query_trans)) { rifai la transazione appena fatta alla riga precedente
correggi in
PHP:
<?php
//....
	$risultati = mysql_query($query_trans); 
	if ($risultati) {
    	echo ("<div align=center <b> Transazione inserita con successo.</b></div>");
    } else {
        echo ("<div align=center> <b>Errore di inserimento Transazione: ". mysql_error()
        ."</b></div>");
	}
//..
?>
o se preferisci
PHP:
<?php
//....
	//$risultati = mysql_query($query_trans); 
	if (mysql_query($query_trans)) {//non usare il silent @ gli errori vanno elmiminati non nascosti
    	echo ("<div align=center <b> Transazione inserita con successo.</b></div>");
    } else {
        echo ("<div align=center> <b>Errore di inserimento Transazione: ". mysql_error()
        ."</b></div>");
	}
//..
?>
 

Discussioni simili