INSERIMENTO NELLA TABELLA ASSOCIATIVA

di il
1 risposte

INSERIMENTO NELLA TABELLA ASSOCIATIVA

Sale, non riesco a riempire i campi della mia tabella associativa. Mi spiego meglio. In pratica ho una relazione N a N tra l'entità Segretario e Studente(il segretario può inserire N studenti e lo studente può essere inserito da più segretari). Essendo N a N, ho una tabella per la mia relazione INSERIMENTO che ha come campi due FK (Matricola studente e id segretario, entrambi calcolati come autoincrement nelle loro rispettive tabelle). Quando ora con questo script php riesco ad inserire uno studente (e quindi aggiungere un record alla tabella STUDENTE), vorrei rimepire anche la tabella INSERIMENTO , con l'id del segretario che l'ha aggiunto e la matricola dello studente. Vi lascio lo script php dove inseriesco lo studente nella tabella STUDENTE e lo schema delle tre tabelle
SEGRETARIO (nota,erroneamente chiamato SEGRETERIA NELLO SCRIPT php): (ID_SEG(pk,autoincrement) ,USERNAME,PASS)
STUDENTE:( MATRICOLA(pk,autoincrement),Nome,Cognome.Email,Pass_Stud)
INSERIMENTO( ID_Seg(fk),Mat(fk))

<?php

include('session.php');


if ($_SERVER["REQUEST_METHOD"] == "POST") { // verifica se la richiesta ricevuta è un POST
    $nome = test_input($_POST['Nome']);
	 $cognome = test_input($_POST['Cognome']);
    $password = test_input($_POST['Pass_Stud']);
	 $email = test_input($_POST['Email']);
	 $conn = new mysqli("localhost","root","","scuola");
	 if ($conn->connect_error) {
            die("connessione fallita: " . $conn->connect_error);
        } 
  $select = mysqli_query($conn, "SELECT * FROM STUDENTE WHERE email = '".$_POST['Email']."'");
if(mysqli_num_rows($select)) { // controllo se un'email simile già esiste per un altro studente
  
   echo"<script> alert('email già esistente!!'); </script>";
}      
		else{ $sql = "
                INSERT INTO STUDENTE(Nome,Cognome,Email,Pass_Stud)
                VALUES ('" . $nome . "', '" . $cognome . "','" . $email . "','" . $password . "')";
			// qui dovrei riempire tabella inserimento ma non so come fare!!!!	
				
            
         if ($conn->query($sql) === TRUE  ) {
			 header("Location: inserimentoStud.php");
           /* echo "New record creato";
			echo "<br>";
			echo "Effettua logout: <a href=logout.php>Logout</a>";
			echo "<br>";
			echo "Inserisci voti: <a href=inserimentoVoti.html>Inserisci Voti</a>";
			echo "<br>";
			echo "Inserisci studente: <a href=inserimentoStud.html>Inserisci stud</a>";*/
        } 
        else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
		}
}
function test_input($data) {
    $data = trim($data); // rimuovo caratteri strani
    $data = stripslashes($data); // rimuovo backslashes 
    $data = htmlspecialchars($data); // converto caratteri predefiniti in entità hmtl
    return $data;
}
?>
		
<html>
<head>
 <title>Inserimento Studente</title>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap">
        <link rel="stylesheet" href="style2.css">
		   <meta name="viewport" content="width=device-width,initial-scale=1.0">
	<script type="text/javascript">
	
	<!--
		function valida(){

			var nom = document.inserimento.Nome.value;
			var cogn=document.inserimento.Cognome.value;
			var pass = document.inserimento.Pass_Stud.value;
			var email = document.inserimento.Email.value;
	        var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

			if(nom == ""){
				
			alert("inserisci nome!");
				return false;
			} 
				if(cogn == ""){
				
			alert("inserisci cognome!");
				return false;
			} 
			


			if(pass== ""){
				
				alert("inserisci password!");
				return false;
			}
			if((pass.length <= 5) || (pass.length > 20)) {
				
				alert("La password deve essere compresa tra i 5 e 20 caratteri!!");
				return false;	
			}

			if(email == ""){
				
				alert("inserisci email!");
				return false;
			}
			if(!email.match(mailformat))
			{
				alert(" email address non valido!");
				document.inserimento.Email.focus();
					return false;
}
    
          alert("Inserimento inviato!!");
		   return true;


		}
		
//-->
	
	
	</script>
</head>

<body>
<form method ="post" action="" name="inserimento">
<h1>Inserimento Stud</h1>
            <input type="text" id="Nome" placeholder="Nome" name="Nome" required>
		 <input type="text" id="Cognome" placeholder="cognome" name="Cognome" required>
            <input type="password" id="Pass_Stud" placeholder="Password" name="Pass_Stud" required>
			<input type="text" id="Email" placeholder="email" name="Email" required>
            <button type="sumbit" name="Registra" onClick="return valida()">Inserisci</button>
			<br>
			<a href="logout.php">Logout </a>
			<br>
			<a href="inserimentoVoti.php">Inserisci voti </a>
        </form>

			

</body>
</html>


1 Risposte

  • Re: INSERIMENTO NELLA TABELLA ASSOCIATIVA

    Salve, vediamo se ho capito.
    Hai due tabelle, segretari e studenti, la tabella studenti è gestita dai segretari e hai la necessità di sapere e visualizzare quale segretario ha agito su uno specifico record o i record gestiti da un segretario.

    Se ho capito correttamente allora la soluzione è davvero banale.

    Il segretario ( uno dei tanti) si connette al sistema e avvia una sessione, salvi in una variabile $_SESSION l'id del segretario e
    quando salvi/editi il record dello studente aggiungi un campo ( o due se devi conoscere chi ha inserito e chi ha modificato) e in questo salvi l'id del segretario contenuto nella variabile $_SESSION.

    Per visualizzare editare basta una join tra utenti e segretari basata su segretari.id_segretario e utente.segretario.

    L'applicazione dovrà avere una parte CRUD per la gestione dei segretari gestita da un admin e una parte utenti/voti etc gestita dai segretari, i quali dovrebbero avere un campo <livello> per i privilegi del database (add delete edit etc)

    Probabilmente però ho frainteso il tuo problema.
Devi accedere o registrarti per scrivere nel forum
1 risposte