Controlli variabili php

ste902

Utente Attivo
15 Nov 2012
32
0
0
Ciao a tutti. Ho database mysql formato da 3 tabelle. Vi allego lo script di creazione:
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);

La colonna CodCorso deve essere è la chiave primaria. Non so perchè ricevendo dei dati da un form e facendo un insert con tali dati mi inserisce il record anche senza CodCorso e il controllo variabili non funziona. Ecco il php:
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"];

if( !isset($CodC) or !isset($Tit) or !isset($Cred) or !isset($Tit) or !isset($DataA) or !isset($Data) or !isset($OraI) or !isset($CodP)){
  die("Errore: inserire tutti i dati richiesti");}



/* CONNESSIONE AL DB*/

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

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

$sql="INSERT INTO CORSI (CodCorso, Titolo, NumCrediti, DataAttivazione)
VALUES
('$CodC','$Tit','$Cred','$DataA')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }

$sql1="INSERT INTO CONSULENZE (CodP, CodCorso, Data, OraInizio, OraFine)
VALUES
('$CodP','$CodC','$Data','$OraI','$OraF')";

if (!mysql_query($sql1))
  {
  die('Error: ' . mysql_error());
  }
echo "Il corso $CodC è stato inserito nel database e la consulenza per tale corso è fissata per il giorno $Data.";


// chiudo la connessione a MySQL
mysql_close();



?>
</body>

</html>

Sapete spiegarmi il perchè? Grazie!
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Sostituisci isset con empty, poi utilizza mysql_real_escape_string per rendere sicure le variabili e inoltre aggiungi eventuali altri controlli di validazione
 

ste902

Utente Attivo
15 Nov 2012
32
0
0
Fatto, niente, mi da l'errore dati mancanti sia se inserisco il CodCorso sia se non lo faccio....
 

ste902

Utente Attivo
15 Nov 2012
32
0
0
Mi da il seguente errore :
Codice:
Notice: Use of undefined constant CodCorso - assumed 'CodCorso' in C:\xampp\htdocs\prova\CorsoInserito.php on line 15
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Mi da il seguente errore :
Codice:
Notice: Use of undefined constant CodCorso - assumed 'CodCorso' in C:\xampp\htdocs\prova\CorsoInserito.php on line 15
Magari posta la parte di codice no? Comunque ti basta fare un var_dump di $_GET e vedere se ci sono tutte le variabili
 

ste902

Utente Attivo
15 Nov 2012
32
0
0
Si scusa ora lo posto!
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 */


if( !empty($_GET[CodCorso]) or !empty($_GET[Titolo]) or !empty($_GET[Crediti]) or !empty($_GET[DataAtt]) or !empty($_GET[Data]) or !empty($_GET[OraI]) or !empty($_GET[CodP])){
  die("Errore: inserire tutti i dati richiesti");}



/* CONNESSIONE AL DB*/

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

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

$sql="INSERT INTO CORSI (CodCorso, Titolo, NumCrediti, DataAttivazione)
VALUES
('$_GET[CodCorso]','$_GET[Titolo]','$_GET[Crediti]','$_GET[DataAtt]')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }

$sql1="INSERT INTO CONSULENZE (CodP, CodCorso, Data, OraInizio, OraFine)
VALUES
('$_GET[CodP]','$_GET[CodCorso]','$_GET[Data]','$_GET[OraI]','$_GET[OraF]')";

if (!mysql_query($sql1))
  {
  die('Error: ' . mysql_error());
  }
echo "Il corso $_GET[CodCorso] è stato inserito nel database e la consulenza per tale corso è fissata per il giorno $_GET[Data].";


// chiudo la connessione a MySQL
mysql_close();



?>
</body>

</html>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Prova mettendo il valore della chiave fra apici

es.
PHP:
echo $_GET['CodCorso'];

Poi fai un var_dump e vedi i risultati
PHP:
var_dump($_GET);
 

ste902

Utente Attivo
15 Nov 2012
32
0
0
mi da questo errore:
HTML:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\prova\CorsoInserito.php on line 29

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 */

if( !empty($_GET['CodCorso']) or !empty($_GET[Titolo]) or !empty($_GET[Crediti]) or !empty($_GET[DataAtt]) or !empty($_GET[Data]) or !empty($_GET[OraI]) or !empty($_GET[CodP])){
  die("Errore: inserire tutti i dati richiesti");}

var_dump($_GET);

/* CONNESSIONE AL DB*/

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

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

$sql="INSERT INTO CORSI (CodCorso, Titolo, NumCrediti, DataAttivazione)
VALUES
('$_GET['CodCorso']','$_GET[Titolo]','$_GET[Crediti]','$_GET[DataAtt]')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }

$sql1="INSERT INTO CONSULENZE (CodP, CodCorso, Data, OraInizio, OraFine)
VALUES
('$_GET[CodP]','$_GET['CodCorso']','$_GET[Data]','$_GET[OraI]','$_GET[OraF]')";

if (!mysql_query($sql1))
  {
  die('Error: ' . mysql_error());
  }
echo "Il corso $_GET['CodCorso'] è stato inserito nel database e la consulenza per tale corso è fissata per il giorno $_GET[Data].";


// chiudo la connessione a MySQL
mysql_close();



?>
</body>

</html>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Dove le virgolette sono già applicate puoi anche non metterle e se le metti utilizza il punto per concatenare la variabile, poi le devi applicare anche agli altri elementi di $_GET, inoltre ricordati di utilizzare mysql_real_escape_string nelle variabili pubbliche che potrebbero andare ad intaccare la query, dopo vedo di riordinarti un po il codice semmai
 

ste902

Utente Attivo
15 Nov 2012
32
0
0
Ho risolto grazie! Era sbagliato l'if di controllo (non andava ! prima di empty) e le ' solo nell'if. Perfetto grazie mille!!!!
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Fatto:
PHP:
<!DOCTYPE html>
<html>
	<head>
		<title>Corso inserito</title>
		<meta charset="utf-8" />
	</head>

	<body>
		<?php
		$parameters = array('CodCorso', 'Titolo', 'Crediti', 'DataAtt', 'Data', 'OraI', 'OraF', 'CodP');
		$data = array();

		foreach ($parameters as $parameter) {
			if (!isset($_GET[$parameter])) { {
				die('Errore: inserire tutti i dati richiesti.');
			}

			$value = mysql_real_escape_string(trim($_GET[$parameter]));

			if (empty($value)) {
				die('Errore: inserire tutti i dati richiesti.');
			}

			$data[$parameter] = $value;
		}

		mysql_connect('localhost', 'root') or die(mysql_error());
		mysql_select_db('docenti') or die(mysql_error());

		$sql = "INSERT INTO corsi (CodCorso, Titolo, NumCrediti, DataAttivazione) VALUES ('%s', '%s', '%s', '%s')";
		mysql_query(sprintf(
			$sql,
			$data['CodCorso'],
			$data['Titolo'],
			$data['Crediti'],
			$data['DataAt']
		)) or die(mysql_error());

		$sql2 = "INSERT INTO consulenze (CodP, CodCorso, Data, OraInizio, OraFine) VALUES ('%s', '%s', '%s', '%s', '%s')";
		mysql_query(sprintf(
			$sql2,
			$data['CodP'],
			$data['CodCorso'],
			$data['Data'],
			$data['OraI'],
			$data['OraF']
		)) or die(mysql_error());

		echo "Il corso {$data['CodCorso']} è stato inserito nel database ";
		echo "e la consulenza per tale corso è fissata il giorno {$data['Data']}.";
		?>
	</body>
</html>
Qualche appunto:
  • usa GET invece di POST per la creazione di entità;
  • non usare l'estensione mysql che è deprecata di fatto;
  • usa nomi minuscoli nei parametri dell'URL e nei nomi delle tabelle e dei campi;
  • non è necessario eseguire mysql_close();
 
Discussioni simili
Autore Titolo Forum Risposte Data
K allineare controlli in un div HTML e CSS 3
M Effettuare i controlli di obbligatorietà lato server e, per quanto possibile, di tipo. PHP 0
M Controlli array PHP 0
H Controlli form jQuery 0
H [risolto] Controlli form iscrizione PHP 16
X Errore nei controlli! PHP 5
F Controlli form per Registrazione utenti PHP 9
M Problema controlli MySQL ( XOR ) MySQL 1
Emix Momento di lapsus... Controlli su user e pwd e campo booleano... PHP 5
P Miglioramento controlli su input PHP 57
O Controlli come parametri Javascript 3
S Eseguire controlli sul form delle foto PHP 17
P far sparire un tasto con i controlli PHP 1
T come mettere controlli su form di inserimento dati?? PHP 11
C controlli sulle registrazioni Sicurezza e Virus 0
Z problema con i controlli disattivati su IE 7 Javascript 2
M controlli radio button Javascript 2
E controlli su tabelle statiche Classic ASP 1
F me lo controlli per favore? PHP 0
Q VB6 Caricamento spezzettato matrici di controlli Programmazione 0
A controlli js Javascript 1
S Licenze?? controlli?? Flash 1
H controlli per la data Javascript 1
A Redirect 301 genera url statico con variabili Web Server 0
G file CSS contenente variabili HTML e CSS 1
M Passaggio variabili array php su un tasto jq PHP 3
K [PHP] Problema con variabili concatenate. PHP 1
MarcoGrazia Metodi static e passaggio di variabili PHP 1
N Problema passaggio variabili tra pagine PHP 4
S Utilizzo variabili di sessione tra PC e server PHP 0
T Circolo vizioso di variabili PHP 1
X Dichiarare variabili solo al caricamento della pagina PHP 3
R passaggio variabili tra modulo genitore a figlio jQuery 3
L [Javascript] input variabili di scrittura con canvas Javascript 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
zorro [PHP] passaggio di variabili PHP 7
Domenico_Falco1 Rendere dinamico un sito web con chiamate ajax e php e variabili json PHP 12
S [PHP] Estrarre elementi array su più variabili PHP 5
M Inviare variabili da menu a tendina a pagina php con post PHP 6
M [PHP] Selezione da menu a discesa con 2 variabili PHP 0
B [Visual Basic] Passaggio variabili da un progetto all'altro (Visual Studio 2017 C#/SQL) Visual Basic 0
A php echo get con variabili PHP 4
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
F [PHP] Cercare voci uguali nel db e unire alcune variabili PHP 0
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
F [PHP] if(isset($_POST['Invia'])) non mi riconosce le variabili PHP 3
K [PHP] variabili di tipo numerico nei Form PHP 1
B [PHP] variabili globali in chiamate ajax PHP 0
otto9due Concatenazione variabili jQuery 1

Discussioni simili