Relazione uno a molti

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio
Bene quindi vorrai sapere anche chi ha inserito quella pratica o meglio chi è l'owner di tutto l'iter!

Se si dovrai aggiungere un campo alla tabella delle relazioni. Il campo chiamalo come vuoi.

Perdonami quindi su questo database potrebbero lavoraci più di una persona contemporaneamente?


Per il momento no, però se non è troppo complicato lo farei multiutente magari in futuro chissà...

Il campo l'ho aggiunto, si chiama: nuovo_id int (11), non sapendo a cosa serve non so dargli un nome che ha un senso, il nome lo cambierò dopo.

Ciao
Max61
 
Ah ok il nome ti servirà per agganciare chi ha inserito la pratica.

Mi potresti postare il form d'inserimento che utilizzi così ti faccio una funzione al volo

Mi serve anche la variabile di connessione MySQL
 
Ecco l'insert
PHP:
<?php
     // connessione al database
	include('Connessione.php');

	 $db= 'tblanagrafica';
		
     $db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server");
	 echo " ";
		
     mysql_select_db($database, $db) or die ("impossibile connettersi al database");
	 echo " ";
	
	$Nominativo = $_POST['Nominativo'];
	$Residenza = $_POST['Residenza'];
	$Indirizzo = $_POST['Indirizzo'];
	$Cellulare = $_POST['Cellulare'];
	$TelefonoFisso = $_POST['TelefonoFisso'];
	$Mail = $_POST['Mail'];

	
	$query = "INSERT INTO tblanagrafica (Nominativo, Residenza, Indirizzo, Cellulare, TelefonoFisso, Mail)
			VALUES ('$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";

   // invio la query
   $result = mysql_query($query);

   // controllo l'esito
   if (!$result) {
				die("<span style=\"color:red: font-size: 20pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   echo "<span style=\"color: yellow; font-size: 24pt\"><strong><i>Calcolo inserito correttamente. </span>";

?>

Ecco la variabile di connessione MySQL che sta dentro la pagina Connessione.php
PHP:
<?php
$host = 'localhost';
$user = 'marzio';
$password = 'max123';
$database = 'gestionesinistri';


//Mi connetto al MySql Server
$myconn = mysql_connect('localhost', 'marzio', 'max123') or die('Impossibile connettersi al server');

//Mi connetto al database 'gestionesinistri'
mysql_select_db('gestionesinistri', $myconn) or die('Errore di connessione alla tabella');

//echo 'connesso';

?>

Spero di averti dato quello che ti serve...
Ciao
Max61
 
ok questo è l'anagrafica ed è ok anche se si può migliorare.

No intendevo quando inserisci un sinistro, o la stai ancora progettando?
 
Scusa non avevo capito
eccolo
PHP:
 <?php
     // connessione al database
include('Connessione.php');

	 //$db= 'tblanagrafica';
		
     $db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server");
	 echo " ";
		
     mysql_select_db($database) or die ("impossibile connettersi al database");
	 echo " ";
	
	$Nominativo = $_POST['Nominativo'];
	$Num_Pratica = $_POST['Num_Pratica'];
	$LocalitaSinistro = $_POST['LocalitaSinistro'];
	$ViaSinistro = $_POST['ViaSinistro'];
	$AnnoSinistro = $_POST['AnnoSinistro'];
	$DataSinistro = $_POST['DataSinistro'];
	$OraSinistro = $_POST['OraSinistro'];
	$_________CausaSinistro_________ = $_POST['_________CausaSinistro_________'];
	$Data_Richiesta_Utente = $_POST['Data_Richiesta_Utente'];
	$Prot_Arrivo = $_POST['Prot_Arrivo'];
	
	
//VERIFICA SE IL RECORD E' PRESENTE NEL DB
$db = mysql_connect($host, $user, $password); 
if ($db == FALSE) 
die ("Errore nella connessione."); 
mysql_select_db($database, $db) 
or die ("Errore nella selezione del database."); 

$Nominativo = $_POST['Nominativo'];
$AnnoSinistro = $_POST['AnnoSinistro'];

    $sql   = "SELECT COUNT(*) FROM tblsinistri WHERE Nominativo = '$Nominativo' and AnnoSinistro = $AnnoSinistro";
    $query = mysql_query($sql) or die(mysql_error());

    if (mysql_result($query, 0) > 0) {
		echo "<strong><span style=\"color:red; font-size: 16pt\"><i><span </span>";
		echo "<br><br><span style=\"color:blue\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<i><span style=\"color:blue; font-size: 16pt\">Il nominativo <span style=\"color:red\">$Nominativo</span> risulta avere giá una pratica nell'anno <span style=\"color:red\">". $AnnoSinistro ." 
		<input type=\"button\" value=\" Back \" onclick=\"history.back(1)\"></left>"; 
		die('');
		//echo ('Il nominativo '  . $Nominativo .  ' risulta avere giá una pratica')," nell'anno ", $AnnoSinistro;
		//echo "<br><br><left><b><span style=\"color:blue; font-size: 16pt\"><span style=\"color:blue height:1;width:1; background-color:white\">Usa il pulsante Back per la correzione 
		
    }
	elseif (mysql_result($query, 0) == 0) {
        //die('Hai già inserito questo record.');
    }
//FINE VERIFICA SE IL RECORD E' PRESENTE NEL DB	

	
	$query = "INSERT INTO tblsinistri (Nominativo, LocalitaSinistro, ViaSinistro, AnnoSinistro, Num_Pratica, DataSinistro, OraSinistro, _________CausaSinistro_________, Data_Richiesta_Utente, Prot_Arrivo)
			VALUES ('$Nominativo', '$LocalitaSinistro', '$ViaSinistro', '$AnnoSinistro', '$Num_Pratica', '$DataSinistro', '$OraSinistro', '$_________CausaSinistro_________', '$Data_Richiesta_Utente', '$Prot_Arrivo')";

   // invio la query
   $result = mysql_query($query);

   // controllo l'esito
   if (!$result) {
				die("<span style=\"color:red: font-size: 20pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   echo "<span style=\"color: yellow; font-size: 24pt\"><strong><i>Calcolo inserito correttamente. </span>";

?>
Faccio anche il controllo che non sia già inserito per evitare duplicati.
Ciao
 
Allora mi immagino che $Nominativo lo trovo all'interno della tabella tblanagrafica?
e sopratutto limi a un sinistro l'anno?

Hai chiamato un campo _________CausaSinistro_________ non è un po scomodo? >.<

Comunque non avendomi postato il form provo a immaginare, ti faccio una funziona al volo

in un foglio php che puoi chiamare function.php
PHP:
<?php
/*
###################################################
#
#	File: 		function.php
#	Cartella: 	ROOT/cartella
#
###################################################
*/
 function form($var1, $var2, ecc ecc , $error) // qui ci metti tutte le variabili del form
 {
 if ($error != '')
 { 
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
 }
<form>
input
input
ecc
</form>
}


 function sostituisci($testo)
{
 $cerca = array("à" , "ì" , "è" , "é" , "ò" , "ù");

$modifica = array("&agrave;" , "&igrave;" , "&eacute;" , "&egrave;" , "&oacute;" , "&uacute;");


$cambio = str_replace($modifica, $cerca , $testo);

return $cambio
}
?>

nella pagina php d'inserimento richiama questa pagina
PHP:
include ('function.php')=
if(isset($_POST['submit']))
{

$var1 = sostituisci($_POST['var1']);
$var2 = sostituisci($_POST['var2']);
ecc
ecc
}
if ($var1 == "" || $var2 == "" || ecc)
{
$error = 'ERRORE: Completa tutti i campi!';
form($var1, $var2, ecc ecc , $error);
}

mysql_query(query_TABELLA);
// questo è molto importante 
$id_q = mysql_insert_id($variabile_di_connessione);
mysql_query(query_TABELLA_relazioni $id_q);
//Ripetere per ogni tabella
header("Location: pagina.php"); //Sostituire pagina.php con la pagina di riepilogo dati
}
else
{
form('','',ecc per ogni variabile);
}
 
Allora mi immagino che $Nominativo lo trovo all'interno della tabella tblanagrafica?
e sopratutto limi a un sinistro l'anno?

Hai chiamato un campo _________CausaSinistro_________ non è un po scomodo? >.<

Comunque non avendomi postato il form provo a immaginare, ti faccio una funziona al volo

in un foglio php che puoi chiamare function.php
PHP:
<?php
/*
###################################################
#
#	File: 		function.php
#	Cartella: 	ROOT/cartella
#
###################################################
*/
 function form($var1, $var2, ecc ecc , $error) // qui ci metti tutte le variabili del form
 {
 if ($error != '')
 { 
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
 }
<form>
input
input
ecc
</form>
}


 function sostituisci($testo)
{
 $cerca = array("à" , "ì" , "è" , "é" , "ò" , "ù");

$modifica = array("&agrave;" , "&igrave;" , "&eacute;" , "&egrave;" , "&oacute;" , "&uacute;");


$cambio = str_replace($modifica, $cerca , $testo);

return $cambio
}
?>

nella pagina php d'inserimento richiama questa pagina
PHP:
include ('function.php')=
if(isset($_POST['submit']))
{

$var1 = sostituisci($_POST['var1']);
$var2 = sostituisci($_POST['var2']);
ecc
ecc
}
if ($var1 == "" || $var2 == "" || ecc)
{
$error = 'ERRORE: Completa tutti i campi!';
form($var1, $var2, ecc ecc , $error);
}

mysql_query(query_TABELLA);
// questo è molto importante 
$id_q = mysql_insert_id($variabile_di_connessione);
mysql_query(query_TABELLA_relazioni $id_q);
//Ripetere per ogni tabella
header("Location: pagina.php"); //Sostituire pagina.php con la pagina di riepilogo dati
}
else
{
form('','',ecc per ogni variabile);
}

Ciao e scusa se non ti ho mandato quello che volevi, io avevo capito di inviarti il codice della pagina di inserimento sinistri nel DB che ti ho inviato nel post precedente.
Comunque fammi capire cosa ti serve che te lo invio.

_________CausaSinistro_________ l'ho fatto così per allargare la colonna nel datagrid altrimenti se il testo è lungo diventa un rigo altissimo. quando lo si legge in visualizzazione.
$Nominativo lo trovi all'interno della tabella tblanagrafica.

Fammi sapere cosa ti serve
Max61
 
Ciao e scusa se non ti ho mandato quello che volevi, io avevo capito di inviarti il codice della pagina di inserimento sinistri nel DB che ti ho inviato nel post precedente.
Comunque fammi capire cosa ti serve che te lo invio.

_________CausaSinistro_________ l'ho fatto così per allargare la colonna nel datagrid altrimenti se il testo è lungo diventa un rigo altissimo. quando lo si legge in visualizzazione.
$Nominativo lo trovi all'interno della tabella tblanagrafica.

Fammi sapere cosa ti serve
Max61


Ciao ho provato il codice, anche se non so bene in quale punto della pagina deve stare, infatti mi restituisce questo errore:
Parse error: syntax error, unexpected '}' in C:\xampp\htdocs\GestioneSinistri\views\Sinistro_Insert.php on line 97

Allego codice della pagina:
Vedi l'allegato Sinistro_Insert.zip

Grazie per la pazienza
Max61
 
HTML:
<body {
bgcolor="FFFFFF";
font body=arial;
FONT SIZE="10";
scrollbar-face-color: #FFFFFF;
scrollbar-highlight-color: #FF00FF; 
scrollbar-3dlight-color: #606C88; 
scrollbar-darkshadow-color: #606C88; 
scrollbar-shadow-color: #000000; 
scrollbar-arrow-color: #606C88; 
scrollbar-track-color: #FF0000;}
>

Quà non capisco cosa hai fatto!

Poi controlla la chiusura della parentesi } nella riga 93
Li le cosa sono 2 o ti sei dimenticato un if oppure la chiusura della parentesi alla riga 85 è sbagliata!

Ricontrolla e farmi sapere
 
HTML:
<body {
bgcolor="FFFFFF";
font body=arial;
FONT SIZE="10";
scrollbar-face-color: #FFFFFF;
scrollbar-highlight-color: #FF00FF; 
scrollbar-3dlight-color: #606C88; 
scrollbar-darkshadow-color: #606C88; 
scrollbar-shadow-color: #000000; 
scrollbar-arrow-color: #606C88; 
scrollbar-track-color: #FF0000;}
>

Quà non capisco cosa hai fatto!

Poi controlla la chiusura della parentesi } nella riga 93
Li le cosa sono 2 o ti sei dimenticato un if oppure la chiusura della parentesi alla riga 85 è sbagliata!

Ricontrolla e farmi sapere


Ciao, quel codice era una prova per formattare la pagina, non funziona ma nemmeno dava problemi per cui era rimasto.
Ho provato a commentare la parentesi alla riga 93, ma da problemi con l'else successivo, allora ho commentato la parentesi a riga 85 e mi da questo errore alla riga 17 della pagina function.php che riporto, e ti chiedo ma dove c'è scritto input devo mettere i campi da riempire di dati? O va bene anche se sono nella pagina che ti ho inviato Sinistri_Insert.php?

PHP:
<?php 
/* 
################################################### 
# 
#    File:         function.php 
#    Cartella:     ROOT/cartella 
# 
################################################### 
*/ 
 function form($Nominativo, $Num_Pratica, $error) // qui ci metti tutte le variabili del form 
 { 
 if ($error != '') 
 {  
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>'; 
 } 
riga 17 <form> 
input 
input 
ecc 
</form> 
} 


 function sostituisci($testo) 
{ 
 $cerca = array("à" , "ì" , "è" , "é" , "ò" , "ù"); 

$modifica = array("&agrave;" , "&igrave;" , "&eacute;" , "&egrave;" , "&oacute;" , "&uacute;"); 


$cambio = str_replace($modifica, $cerca , $testo); 

return $cambio 
} 
?>

Ciao
 
Ultima modifica:
No li dove c'è scritto <form> devi metterci il tuo form! ogni form all'interno del value ci metti una variabile che utilizzera su tutto il form in questo modo se il form non va a buon fine mantieni tutti i campi editati
 
No li dove c'è scritto <form> devi metterci il tuo form! ogni form all'interno del value ci metti una variabile che utilizzera su tutto il form in questo modo se il form non va a buon fine mantieni tutti i campi editati

Ciao, scusa ma non ci capisco nulla, ho cercato di fare quello che hai detto, ma dubito di aver capito...
Questa parte "li dove c'è scritto <form> devi metterci il tuo form! ogni form all'interno del value ci metti una variabile che utilizzera su tutto il form" proprio non so cosa vuoi dire, ho aggiunto un include per indirizzare alla pagina, ma non ha senso...e comunque mi da anche errore
Allego quello che ho fatto.

PHP:
<?php 
/* 
################################################### 
# 
#    File:         function.php 
#    Cartella:     ROOT/cartella 
# 
################################################### 
*/ 
 function form($Nominativo, $Num_Pratica, $error) // qui ci metti tutte le variabili del form 
 { 
 if ($error != '') 
 {  
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>'; 
 }
 
 ?>
 
 <form> 
 
 <?php 
include('Sinistri_Insert.php'); 

/*
input 
input 
ecc 
*/
?>

</form> 

<?php 

} 


 function sostituisci($testo) 
{ 
 $cerca = array("à" , "ì" , "è" , "é" , "ò" , "ù"); 

$modifica = array("&agrave;" , "&igrave;" , "&eacute;" , "&egrave;" , "&oacute;" , "&uacute;"); 


$cambio = str_replace($modifica, $cerca , $testo); 

return $cambio 
} 
?>

Max61
 
Non ti preoccupare e sopratutto non desistere.
U'altra cosa che ho notato è che utilizzi molto....anzi troppo il non breaking space.

questo tag
HTML:
&nbsp;

Ti consiglio vivamente di utilizzare un foglio di stile CSS

Poi dove c'è scritto
PHP:
/*
input 
input 
ecc 
*/
devi metterci quello che hai in Sinistro_Insert.php, preferibilmente più pulito

Poi devi togliere

PHP:
include('Sinistri_Insert.php');
Altrimenti hai ridondanza

Apri un sacco di volte la connessione al DB ma non la chiudi mai!
PHP:
mysql_close($myconn);
Ti conviene chiuderla ogni chiusura dei cicli while, for, ecc

Ricontrolla che ci sono dei tag non chiusi.

Una curiosità con che programma scrivi?
Dreamweaver, notepad, ...?
 
Provato, mi restituisce questo errore:
Parse error: syntax error, unexpected 'mysql_close' (T_STRING) in C:\xampp\htdocs\GestioneSinistri\views\function.php on line 423
se tolgo la chiusura dell connessione mi da errore sulla parentesi
Allego pagina function.php
Vedi l'allegato function.zip

Ciao
Max61
 
Ciao Max61,
ho fatto qualche prova; oltretutto mesi fa ho realizzato qualcosa di molto simile a ciò che vuoi fare tu.
Innanzi tutto secondo me (ma è solo un consiglio) dovresti eliminare tutti quei campi che vengono ripetuti più volte nelle varie tabelle (nominativo, indirizzo, telefono, mail ecc.) inserendo (solo x tua comodità) un unico campo comune a tutte e tre le tabelle come ad es. il codice fiscale (in questo modo hai la sicurezza di identificare in modo univoco il cliente) e sostituirei il campo nominativo (nella tabella ANAGRAFICA) con due campi separati nome_cliente e cogn_cliente.
Passiamo ora alla pratica: presumo che tu prenderai i dati da inserire nelle varie tabelle da un modulo web contenente i dati anagrafici del cliente e i dati riguardanti il sinistro. In sostanza dovrai 'scrivere' nella tabella SINISTRI ogni volta che invierai un nuovo modulo web, mentre nella tabella ANAGRAFICA scriverai solo nel caso in cui il cliente non è presente; quindi, dopo aver inviato un nuovo modulo, la prima cosa da fare è, tramite una query di lettura, controllare la presenza o meno del cliente. Per mia comodità ho contato le righe della tabella con le seguenti righe dsi codice:



Codice:
 // legge ANGRAFICA per controllare che il pz non sia già presente

    //connessione al server DB
	$link_connessione=mysql_connect("...","...","...") or die ("Connessione impossibile");
	//Selezione del database
	$db=mysql_select_db("...", $link_connessione) or die ("Database inesistente!");
	//zione dei record di una tabella
	$query="SELECT COUNT(*) as tot FROM ANGRAFICA WHERE COGNOME = '".$cognome."'and NOME = '".$nome."'";
	$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
	//Esecuzione della query
	$row=mysql_fetch_assoc($tabella);
	//$count=$row[' count'];
	$righetot=$row['tot'];

assegnando alla variabile $righetot il nr di righe (record) in cui compare il cliente che, se non ci sono errori, sarà 0 (non c'è) o 1 (c'è). Quindi, se il risultato è 1 (è presente) creerai una query di lettura



Codice:
$query="SELECT * FROM ANAGRAFICA WHERE COGNOME = '".$cognome."'and NOME = '".$nome. "'";
	    $tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
        $riga=mysql_fetch_array($tabella);
        $id_cli=$riga['ID_CLIENTE'];

con la quale andrai a leggere l'ID del cliente, che poi memorizzerai in una variabie ($id_cli); quindi ti collegherai alla tabella SINISTRI registrando i dati relativi al sinistro e, nel campo (che se non sbaglio) hai chiamato tblanagrafica_id, il contenuto di $id_cli


Codice:
    $query="INSERT INTO `nomeDB`.`SINISTRI` ('ID',`tblanagrafica_id `,`...`,`...`,`...`,`...`,`...`,`...,`)
    VALUES ('','$id_cli','...','...','...','...','...','...')";
    mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

leggermente diverso è il caso in cui il cliente non è presente in ANAGRAFICA ($rigjhetot == 0). In questo caso dovrai inserire il cliente tramite la query di inserimento:


Codice:
    $query="INSERT INTO `nomeDB`.`ANAGRAFK  (`ID `,`...`,`...`,`...`,`...`,`...`,`...,`)
    VALUES ('','...','...','...','...','...','...')";
    mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
quindi, con una query di lettura, andare a leggere il record appena scritto, leggere l'ID e memorizzarlo nella solita variabile $id_cli

Codice:
$query="SELECT * FROM ANAGRAFICA WHERE COGNOME = '".$cognome."'and NOME = '".$nome. "'";
	    $tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
        $riga=mysql_fetch_array($tabella);
        $id_cli=$riga['ID_CLIENTE'];

A questo punto, se tutto è corretto, nei campi ID della tabella ANAGRAFICA e nel campo tblanagrafica_id della tabella SINISTRI ci sarà lo stesso valore. Per comodità ti riepilogo tutto:

Codice:
<php

  // legge ANGRAFICA per controllare che il pz non sia già presente

    //connessione al server DB
	$link_connessione=mysql_connect("...","...","...") or die ("Connessione impossibile");
	//Selezione del database
	$db=mysql_select_db("...", $link_connessione) or die ("Database inesistente!");
	//zione dei record di una tabella
	$query="SELECT COUNT(*) as tot FROM ANGRAFICA WHERE COGNOME = '".$cognome."'and NOME = '".$nome."'";
	$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
	//Esecuzione della query
	$row=mysql_fetch_assoc($tabella);
	//$count=$row[' count'];
	$righetot=$row['tot'];

if ($righetot == 0) {
    $query="INSERT INTO `nomeDB`.`ANAGRAFICA` (`ID `,`...`,`...`,`...`,`...`,`...`,`...,`)
                 VALUES ('','...','...','...','...','...','...')";
    mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
}
$query="SELECT * FROM ANAGRAFICA WHERE COGNOME = '".$cognome."'and NOME = '".$nome. "'";    
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
$riga=mysql_fetch_array($tabella);
$id_cli=$riga['ID_CLIENTE'];

$query="INSERT INTO `nomeDB`.`SINISTRI` ('ID',`tblanagrafica_id `,`...`,`...`,`...`,`...`,`...`,`...,`)
              VALUES ('','$id_cli','...','...','...','...','...','...')";
mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

?>

Spero di essrti stato d'aiuto :byebye:


Zorro
 
Ultima modifica:
Ciao Max61,
ho fatto qualche prova; oltretutto mesi fa ho realizzato qualcosa di molto simile a ciò che vuoi fare tu.
Innanzi tutto secondo me (ma è solo un consiglio) dovresti eliminare tutti quei campi che vengono ripetuti più volte nelle varie tabelle (nominativo, indirizzo, telefono, mail ecc.) inserendo (solo x tua comodità) un unico campo comune a tutte e tre le tabelle come ad es. il codice fiscale (in questo modo hai la sicurezza di identificare in modo univoco il cliente) e sostituirei il campo nominativo (nella tabella ANAGRAFICA) con due campi separati nome_cliente e cogn_cliente.
Passiamo ora alla pratica: presumo che tu prenderai i dati da inserire nelle varie tabelle da un modulo web contenente i dati anagrafici del cliente e i dati riguardanti il sinistro. In sostanza dovrai 'scrivere' nella tabella SINISTRI ogni volta che invierai un nuovo modulo web, mentre nella tabella ANAGRAFICA scriverai solo nel caso in cui il cliente non è presente; quindi, dopo aver inviato un nuovo modulo, la prima cosa da fare è, tramite una query di lettura, controllare la presenza o meno del cliente. Per mia comodità ho contato le righe della tabella con le seguenti righe dsi codice:


Ciao e grazie per la risposta, ho provato il tuo codice ma mi restituisce errore nell'ultima query, ho lasciato per il momento il campo Nominativo senza dividerlo e cercando di inserire un nome esistente nel DB tblanagrafica mi restituisce il valore 1, quindi trova il nominativo esistente.
Allego il codice utilizzato così vedi dove è l'errore:
PHP:
 // legge ANGRAFICA per controllare che il pz non sia già presente

    //connessione al server DB
	$db_link=mysql_connect("localhost", "marzio", "max123") or die ("Connessione impossibile");
	//Selezione del database
	$db=mysql_select_db("gestionesinistri", $db_link) or die ("Database inesistente!");
	//zione dei record di una tabella
	$query="SELECT COUNT(*) as tot FROM tblanagrafica WHERE Nominativo = '$Nominativo'";
	$tabella=mysql_query($query, $db_link) or die ("Attenzione: errore nella query 1");
	//Esecuzione della query
	$row=mysql_fetch_assoc($tabella);
	//$count=$row[' count'];
	$righetot=$row['tot'];

if ($righetot == 0) {
    $query="INSERT INTO 'tblanagrafica'('id 'Nominativo', 'Residenza', 'Indirizzo', 'Cellulare', 'TelefonoFisso', 'Mail')
                 VALUES ('$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
    mysql_query($query, $db_link) or die ("Attenzione: errore nella query 2");
}
$query="SELECT * FROM tblanagrafica WHERE Nominativo = '$Nominativo'";    
$tabella=mysql_query($query, $db_link) or die ("Attenzione: errore nella query 3");
$riga=mysql_fetch_array($tabella);
$id_cli=$riga['tblanagrafica_id'];

$query="INSERT INTO tblsinistri ('id','tblanagrafica_id','Nominativo', 'Residenza', 'Indirizzo', 'Cellulare', 'TelefonoFisso', 'Mail')
              VALUES ('$id_cli','$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
mysql_query($query, $db_link) or die ("Attenzione: errore nella query 4");

Grazie
Max61
 
Ciao Max61,
ho fatto qualche prova; oltretutto mesi fa ho realizzato qualcosa di molto simile a ciò che vuoi fare tu.
Innanzi tutto secondo me (ma è solo un consiglio) dovresti eliminare tutti quei campi che vengono ripetuti più volte nelle varie tabelle (nominativo, indirizzo, telefono, mail ecc.) inserendo (solo x tua comodità) un unico campo comune a tutte e tre le tabelle come ad es. il codice fiscale (in questo modo hai la sicurezza di identificare in modo univoco il cliente) e sostituirei il campo nominativo (nella tabella ANAGRAFICA) con due campi separati nome_cliente e cogn_cliente.
Passiamo ora alla pratica: presumo che tu prenderai i dati da inserire nelle varie tabelle da un modulo web contenente i dati anagrafici del cliente e i dati riguardanti il sinistro. In sostanza dovrai 'scrivere' nella tabella SINISTRI ogni volta che invierai un nuovo modulo web, mentre nella tabella ANAGRAFICA scriverai solo nel caso in cui il cliente non è presente; quindi, dopo aver inviato un nuovo modulo, la prima cosa da fare è, tramite una query di lettura, controllare la presenza o meno del cliente. Per mia comodità ho contato le righe della tabella con le seguenti righe dsi codice:


Ciao e grazie per la risposta, ho provato il tuo codice ma mi restituisce errore nell'ultima query, ho lasciato per il momento il campo Nominativo senza dividerlo e cercando di inserire un nome esistente nel DB tblanagrafica mi restituisce il valore 1, quindi trova il nominativo esistente.
Allego il codice utilizzato così vedi dove è l'errore:
PHP:
 // legge ANGRAFICA per controllare che il pz non sia già presente

    //connessione al server DB
	$db_link=mysql_connect("localhost", "marzio", "max123") or die ("Connessione impossibile");
	//Selezione del database
	$db=mysql_select_db("gestionesinistri", $db_link) or die ("Database inesistente!");
	//zione dei record di una tabella
	$query="SELECT COUNT(*) as tot FROM tblanagrafica WHERE Nominativo = '$Nominativo'";
	$tabella=mysql_query($query, $db_link) or die ("Attenzione: errore nella query 1");
	//Esecuzione della query
	$row=mysql_fetch_assoc($tabella);
	//$count=$row[' count'];
	$righetot=$row['tot'];

if ($righetot == 0) {
    $query="INSERT INTO 'tblanagrafica'('id 'Nominativo', 'Residenza', 'Indirizzo', 'Cellulare', 'TelefonoFisso', 'Mail')
                 VALUES ('$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
    mysql_query($query, $db_link) or die ("Attenzione: errore nella query 2");
}
$query="SELECT * FROM tblanagrafica WHERE Nominativo = '$Nominativo'";    
$tabella=mysql_query($query, $db_link) or die ("Attenzione: errore nella query 3");
$riga=mysql_fetch_array($tabella);
$id_cli=$riga['tblanagrafica_id'];

$query="INSERT INTO tblsinistri ('id','tblanagrafica_id','Nominativo', 'Residenza', 'Indirizzo', 'Cellulare', 'TelefonoFisso', 'Mail')
              VALUES ('$id_cli','$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
mysql_query($query, $db_link) or die ("Attenzione: errore nella query 4");

Grazie
Max61



Ho riprovato, qualsiasi query deve fare in base ai dati presenti/non presenti nei vari DB mi restituisce sempre errore.
Grazie
Max61
 
Ciao Max61,
credo di aver capito dov'è l'errore.
I campi 'autoincrementanti' sono campi particolari, che vengono assegnati in modo automatico dalla macchina e, come dice il nome, si autoincrementano (x cui non puoi assegnargli un valore) ma il campo c'è e glielo devi indicare.
Nella tua query di inserimento gli dici che ANAGRAFICA è composta da un campo ID (autoincrementante) al primo posto, dal NOMINATIVO al secondo, da RESIDENZA al terzo e così via, però poi, nella clausola VALUES gli dici che al primo posto c'è il nominativo; ma al primo posto di ANAGRAFICA c'è l'ID, quindi lui non capisce e va in confusione; per cui anche nella clausola VALUES gli dovrai dire che al primo posto c'è un campo (delimitandolo da apici) ma all'interno non indicherai nessun valore in quanto è un campo 'autoincrementante'


PHP:
[PHP]
[/PHP]
Codice:
 VALUES ('','secondocampo','terzocampo',...........)



Zorro:byebye::byebye:
 
ciao
oppure è inutile indicare l'id primarykey autoincrement sia nei nomi che nel value ci pensa mysql a generarlo
comunque guardado una query presa a caso
PHP:
<?php
$query="INSERT INTO tblsinistri ('id','tblanagrafica_id','Nominativo', 'Residenza', 'Indirizzo', 'Cellulare', 'TelefonoFisso', 'Mail')
              VALUES ('$id_cli','$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
?>
non so proprio come funzioni, se non ho contato male
nei nomi dei campi indichi 8 campi
nel values dai 7 valori
 

Discussioni simili