script per l'inserimento SELETTIVO di record

ciao sono le sei di mattina e FORSE come si dice il buongiorno si vede dal mattino



PHP:
$query="INSERT INTO prodotti(nome,descrizione) VALUES('$campo[0]', '$campo[1]')";
:tifoso:
 
Cavolo che svista!!!! Bravo Borgo Italia :ilpirata:
Ho subito provato lo script e ora i dati vengono inseriti nel database! Rimane l'ultima questione del doppio inserimento. Può dipendere dall'ordine di successione di questa parte dello script?

PHP:
$record=explode('|',$testo);//divido i record 
foreach($record as $value){//comincio a ciclare i record 
$campo=explode('*', $value); //suddivido il record in campi
 
ciao
ho riguardato lo script ma non vedo altri errori.
la sequenza è giusta in quanto prima divido i record e li leggo uno alla volta con foreach, sul record letto esplodo i campi, quindi non capisco perche debbe inserire due volte

prova questo script in cui ho tolto l'insert ecc

PHP:
&testo="pnici*allino|toni*alto|bebi*basso";

$record=explode("|",$testo);//divido i record
	foreach($record as $value){//comincio a ciclare i record
		$campo=explode("*", $value); //suddivido il record in campi
		//verifico se il record esiste
		//$esiste=mysql_num_rows(mysql_query("SELECT * FROM prodotti WHERE nome='$campo[0]' AND descrizione='$campo[1]'"));
                $esiste=0;
		if($esiste == 0){//non esiste e quindi inserisco
			//devo trimmare i valori (vedi sotto)
			$campo[0]=trim($campo[0]);
			$campo[1]=trim($campo[1]);
                        echo "ho inserito nome: $campo[0] - descrizione: $campo[1] <br>";
			//$query="INSERT INTO prodotti(nome,descrizione) VALUES('$campo[0]', '$campo[1]')";
			//mysql_query($query);
			echo "INSERIMENTO DI $campo[0] OK ---------";
		}//fine if esiste
	}//fine forech

dovrebbe risultarti

tre righe
nome.... descrizione....
nome... decscrizione....
nome... descrizione....
quindi un unico insert
 
Si. Ho corretto l'errore. C'era un " var_dump($query); " di troppo.
Posto tutto il codice perfettamente funzionante con alcune modifiche e spiegazioni per renderlo ancora più chiaro e utilizzabile da tutti.

1) file database.php
<?php
if (!isset($_SESSION)) {
session_start();
}
// parametri del database
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "prova";
?>



2) SQL per creare il database di esempio:
CREATE TABLE `prodotti` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(20) default NULL,
`descrizione` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


3) file per il form - form.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>

<body>
<p>inserimento di massa</p>
<form id="form1" name="form1" method="post" action="inserisci.php">
<label>inserisci il Testo:<br />
<textarea name="textfield" cols="100" rows="10"></textarea>
</label>
<p>ATTENZIONE: PRIMA DI CLICCARE CONTROLLA ACCURATAMENTE IL TESTO, SE NO FAI UN GRAN CASINO NEL DATABASE!!</p>
<p>
<label>
<input type="submit" name="Submit" value="INSERIRE I DATI NEL DATABASE" />
</label>
</p>
</form>
<p>&nbsp;</p>
</body>
</html>




4) file per l'inserimento dei dati - inserisci.php
<?php
//Script realizzato da "Borgo italia" sul forum www.mrwebmaster.it
if (!isset($_SESSION)) {session_start();}

//inserire l'eventuale codice per limitare l'accesso a chi non è autorizzato

require_once('database.php'); //collegamento al file che contiene i dati necessari per la connessione al database.

$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database.");

//richiamo e creo la variabile $testo dal form.
if(isset($_POST['Submit']) && $_POST['Submit']=="INSERIRE I DATI NEL DATABASE" )
{
$testo=$_POST['textfield'];// leggo il testo dal form
//la variabile $testo puo venire da un form o dalla lettura di un file.txt. (in questo caso proviene da form)
$record=explode('|',$testo);//divido i record
foreach($record as $value)
{//comincio a ciclare i record
$campo=explode('*', $value); //suddivido il record in campi
//verifico se il record esiste
$esiste=mysql_num_rows(mysql_query("SELECT * FROM prodotti WHERE nome='$campo[0]' AND descrizione='$campo[1]'"));
if($esiste == 0)
{//non esiste e quindi inserisco
//devo trimmare i valori
$campo[0]=trim($campo[0]);
$campo[1]=trim($campo[1]);
$query="INSERT INTO prodotti(nome,descrizione) VALUES('$campo[0]', '$campo[1]')";
mysql_query($query) or die (mysql_error());
// Stampo a video la conferma dei dati inseriti nel database
echo "+ + + Inserimento di <strong>$campo[0] </strong> OK + + + <br> ";
}//fine if esiste
else {echo "- - - Inserimento di <em>$campo[0]</em> saltato perchè già esiste nel database - - - <br>";}}//fine forech
}
else {echo "Ops!! C'è qualcosa che non và tra il file del Form e il file inserisci.php. Controlla i due file.<br>";
}
?>


Fine. :ilpirata:
Un grazie particolare a Borgo Italia:tifoso: e anche a Eliox !
Notte!
 

Discussioni simili