• Home
  • Forum
  • Fare Web
  • PHP

Relazione uno a molti

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio 10 Nov 2015
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 13 Nov 2015
  • #21
alankanz ha scritto:
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?
Clicca per allargare...


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
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 13 Nov 2015
  • #22
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
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 13 Nov 2015
  • #23
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
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 13 Nov 2015
  • #24
ok questo è l'anagrafica ed è ok anche se si può migliorare.

No intendevo quando inserisci un sinistro, o la stai ancora progettando?
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 13 Nov 2015
  • #25
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
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 13 Nov 2015
  • #26
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);
}
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 13 Nov 2015
  • #27
alankanz ha scritto:
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);
}
Clicca per allargare...

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
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 16 Nov 2015
  • #28
Max61 ha scritto:
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
Clicca per allargare...


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
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 18 Nov 2015
  • #29
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
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 18 Nov 2015
  • #30
alankanz ha scritto:
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
Clicca per allargare...


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: 18 Nov 2015

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 18 Nov 2015
  • #31
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
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 18 Nov 2015
  • #32
alankanz ha scritto:
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
Clicca per allargare...

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
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
  • 19 Nov 2015
  • #33
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, ...?
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 19 Nov 2015
  • #34
Uso notepad
Più tardi ci provo a fare le modifiche suggerite...
Ciao
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 19 Nov 2015
  • #35
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
 

zorro

Utente Attivo
20 Ott 2014
334
22
28
ROMA
  • 19 Nov 2015
  • #36
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: 19 Nov 2015
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 19 Nov 2015
  • #37
zorro ha scritto:
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
Clicca per allargare...
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 20 Nov 2015
  • #38
Max61 ha scritto:
zorro ha scritto:
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
Clicca per allargare...



Ho riprovato, qualsiasi query deve fare in base ai dati presenti/non presenti nei vari DB mi restituisce sempre errore.
Grazie
Max61
Clicca per allargare...
 

zorro

Utente Attivo
20 Ott 2014
334
22
28
ROMA
  • 20 Nov 2015
  • #39
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 20 Nov 2015
  • #40
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
 
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

M
Creare stampe pdf con tabelle relazione uno a molti
  • Max61
  • 17 Dic 2015
  • PHP
Risposte
0
Visite
2K
PHP 17 Dic 2015
Max61
M
M
Problema relazione uno a molti con 3 tabelle
  • Max61
  • 22 Mag 2015
  • MySQL
Risposte
4
Visite
3K
MySQL 5 Nov 2015
Max61
M
T
[PHP] Relazione uno a uno
  • tigrhes salty
  • 3 Giu 2017
  • PHP
Risposte
1
Visite
1K
PHP 4 Giu 2017
marino51
S
Consiglio si relazione tabelle
  • staiul
  • 7 Gen 2024
  • MS Access
Risposte
1
Visite
2K
MS Access 16 Gen 2024
max75
E
Info relazione tabelle
  • Emanuele85
  • 16 Set 2023
  • MySQL
Risposte
17
Visite
5K
MySQL 19 Set 2023
marino51
D
Laravel8 relazione molti a molti
  • dani9191
  • 11 Mag 2021
  • Programmazione
Risposte
2
Visite
2K
Programmazione 13 Mag 2021
dani9191
D
R
Relazione tra tabelle
  • Rach3
  • 5 Apr 2020
  • MS Access
Risposte
5
Visite
2K
MS Access 7 Apr 2020
Rach3
R
M
[MS Access] Relazione tra maschere
  • Mac_Gf
  • 29 Lug 2019
  • MS Access
Risposte
1
Visite
2K
MS Access 19 Set 2019
gianphy
G
V
[PHP] Relazione molti a molti
  • vincenzo_d.elia
  • 28 Giu 2018
  • PHP
Risposte
2
Visite
2K
PHP 28 Giu 2018
marino51
M
registrazione in relazione ai commenti
  • Massimiliano_m
  • 30 Gen 2017
  • Programmazione
Risposte
0
Visite
1K
Programmazione 30 Gen 2017
Massimiliano_m
M
T
Domanda su Schema e Relazione
  • themagiciant95
  • 8 Nov 2016
  • Database
Risposte
0
Visite
1K
Database 8 Nov 2016
themagiciant95
T
[MySQL] "Sicronizzare" due tabelle tramite il campo di relazione
  • felino
  • 17 Feb 2016
  • MySQL
Risposte
0
Visite
2K
MySQL 17 Feb 2016
felino
F
Gestione portfolio / categorie con relazione molti a molti
  • Fabio Grasso
  • 15 Nov 2014
  • MySQL
Risposte
7
Visite
2K
MySQL 17 Nov 2014
Fabio Grasso
F
M
relazione ricorsiva
  • mteresa
  • 13 Set 2014
  • Database
Risposte
0
Visite
2K
Database 13 Set 2014
mteresa
M
F
record accodati non in relazione
  • fede4130
  • 27 Mar 2013
  • MS Access
Risposte
3
Visite
1K
MS Access 29 Mar 2013
HolidaySoft.it
E
ACCESS-il capo interessato in relazione non si autocompila!
  • explayer
  • 22 Mar 2013
  • MS Access
Risposte
0
Visite
1K
MS Access 22 Mar 2013
explayer
E
M
query su relazione molti a molti
  • marmar.it
  • 16 Gen 2013
  • MS Access
Risposte
1
Visite
8K
MS Access 17 Gen 2013
HolidaySoft.it
A
Parametro visibility hidden in relazione a window.screen.width
  • Angelabit
  • 4 Set 2012
  • Javascript
Risposte
10
Visite
3K
Javascript 5 Set 2012
Angelabit
A
D
relazione tra 2 tabelle (datiutenti e slide)
  • darkman_1975
  • 27 Giu 2011
  • PHP
Risposte
1
Visite
2K
PHP 3 Lug 2011
darkman_1975
D
W
Relazione tra tabelle
  • wizard86
  • 5 Gen 2011
  • MySQL
Risposte
15
Visite
8K
MySQL 12 Gen 2011
alessandro1997
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?