Problema inserimento nuovo record da form

  • Creatore Discussione Creatore Discussione ste902
  • Data di inizio Data di inizio

ste902

Utente Attivo
15 Nov 2012
32
0
0
Ciao a tutti! Ho tre tabelle:
Professori: (CodP, Nome, Cognome, DataNascita)
Corsi: (CodCorso, Titolo, NumCrediti, DataAttivazione)bene
Consulenze (CodP, CodCorso, Data, OraInizio, OraFine)
Ho un form dove posso inserire un nuovo corso, scegliendo un CodP esistente e creare una nuova consulenza.
Se va tutto bene, la nuova pagina php mi deve scrivere ciò:
HTML:
Il corso $CodCorso è stato inserito nel database e la consulenza per tale corso è stata fissata per il giorno $Data.
.
Il form l'ho già fatto, non so come fare 2 query e un messaggio di avvenuto successo relativo ad entrambe le query.
Per ora ho scritto questo:
PHP:
<html>

<head>
<title>CorsoInserito</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1">
</head>
<body>
<?php
/* ASSEGNAZIONE VARIABILI */

$CodC = $_GET["CodCorso"];
$Tit = $_GET["Titolo"];
$Cred = $_GET["Crediti"];
$DataA = $_GET["DataAtt"];
$Data = $_GET["Data"];
$OraI = $_GET["OraI"];
$OraF = $_GET["OraF"];
$CodP = $_GET["CodP"];


/* CONNESSIONE AL DB*/

if( !mysql_connect("localhost","root","") ){
  die('Connect error: ' . mysql_error());}

if( !mysql_select_db("docenti") ){
  die('Select error: ' . mysql_error());}

/* QUERY SQL */
$query = "INSERT INTO Corsi
         (CodCorso, Titolo, NumCrediti, DataAttivazione)
VALUES   ('$CodC', '$Tit', '$Cred', '$DataA');
INSERT INTO CONSULENZE
         (CodP, CodCorso, Data, OraInizio, OraFine)
VALUES   ('$CodP', '$CodC', '$Data', '$OraI', '$OraF')";

$result = mysql_query($query);

if (!$result) {
  die("Errore nella query $query: " . mysql_error());
}

// chiudo la connessione a MySQL
mysql_close();


?>
</body>

</html>
 
ciao
potresti risolvere così
PHP:
<?php
//...........
$query_1 = "INSERT INTO Corsi
         (CodCorso, Titolo, NumCrediti, DataAttivazione)
VALUES   ('$CodC', '$Tit', '$Cred', '$DataA')";
$query_2 ="INSERT INTO Consulenze
         (CodP, CodCorso, Data, OraInizio, OraFine)
VALUES   ('$CodP', '$CodC', '$Data', '$OraI', '$OraF')";
if(mysql_query($query_2)){
	echo "errore nella query corsi: ".mysql_error());
}else{
	echo "corso inserito";
}
if(mysql_query($query_1)){
	echo "errore nella query consulenze: ".mysql_error());
}else{
	echo "consulenza inserita";
}
//..........
?>

p.s.
perchè usi il metodo GET? il metodo POST è più sicuro.
poi sarebbe opportuno fare dei controlli sui dati ricevuti dal form

edit
mi sembra che la consulenza debba essere legata al nuovo corso (vero?) se è così dopo l'insert del corsi devi leggere last_id (cioè l'id che o stato inseriti nella tabella con l'inserimento) e quindi usarlo nell'insert della consulenza
 
Ultima modifica:
Grazie! Purtroppo la stampata di avvenuto inserimento defo farla in una riga unica come nell'esempio che ho scritto prima. Posso annidare 2 if? Non ho capito cosa intendevi con last_id, sapresti farmi un esempio? COmunque si la consulenza è riferita al nuovo corso che inserisco!
 
ciao
prima di proseguire.
mi è venuto un dubbio: potresti postare il dump delle tabelle?
CodP e CodCorso sono gli id univoci del record?
 
Ultima modifica:
Ti allego lo script sql della creazione database:

Codice:
SET storage_engine=InnoDB;
SET FOREIGN_KEY_CHECKS=1;
CREATE DATABASE IF NOT EXISTS Docenti;
USE Docenti;
DROP TABLE IF EXISTS Professori;
DROP TABLE IF EXISTS Corsi;
DROP TABLE IF EXISTS Consulenze;

CREATE TABLE IF NOT EXISTS Professori (
CodP VARCHAR(15) UNIQUE NOT NULL,
Nome VARCHAR(255) NOT NULL,
Cognome VARCHAR(255) NOT NULL,
DataNascita DATE NOT NULL,
NumCel VARCHAR(255) NULL,
PRIMARY KEY (CodP));

CREATE TABLE IF NOT EXISTS Corsi (
CodCorso VARCHAR(15) UNIQUE NOT NULL,
Titolo VARCHAR(255) NOT NULL,
NumCrediti SMALLINT NOT NULL,
DataAttivazione DATE NOT NULL,
PRIMARY KEY (CodCorso)
);

CREATE TABLE IF NOT EXISTS Consulenze (
CodP VARCHAR(15) NOT NULL,
CodCorso VARCHAR(15) NOT NULL,
Data DATE NOT NULL,
OraInizio TIME NOT NULL,
OraFine TIME NULL,
PRIMARY KEY (CodP, CodCorso, Data, OraInizio),
FOREIGN KEY (CodP)
REFERENCES Professori (CodP)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (CodCorso)
REFERENCES Corsi (CodCorso)
ON DELETE CASCADE
ON UPDATE CASCADE);
 

Discussioni simili