Controllo su campo prima di inserire

  • Creatore Discussione Creatore Discussione pup3770
  • Data di inizio Data di inizio

pup3770

Utente Attivo
30 Mag 2012
122
0
16
Ciao ragazzi,
come sempre la sera mi vengono le idee più strane che però mi piacciono perché mi fanno migliorare anche se sono banali.

Ho creato un codice di inserimento dei dipendenti mediante script php con inserimento in un database sql.

Voglio inserire i dipendenti in modo che se il nome termina con la lettera "a" e il radio button è settato su "F" e viceversa per i maschietti quindi "o" come finale e radio button settato su "M" procede per l'inserimento diversamente no.

Sorge il problema. Se l'utente si chiama "MATTIA" come mio nipote che è maschietto ma il nome esiste sia al maschile e sia al femminile, il controllo precedente sballa e quindi ho incluso nel controllo (come eccezioni) i due nomi che mi venivano in mente che sia al maschile che al femminile rimangono invariati: MATTIA e ANDREA.
Ho implementato un controllo molto brutto ma funzionale:
Codice:
//controllo sul sesso - viene controllata l'ultima lettera del nome, se è "a" e il sesso è "F" oppure se è "o" e il sesso è "M" inserisce
	$ultima_nome = substr($_POST['nome'], -1); //substr($variabile, -1); = restituisce ultima lettera di $variabile
	if ((($ultima_nome == 'o') && ($_POST['sesso'] == 'M')) || (($ultima_nome == 'a') && ($_POST['sesso'] == 'F')) || (($_POST['nome'] == 'mattia') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'Mattia') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'andrea') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'Andrea') && ($_POST['sesso'] == 'M')))
		
	$query = "INSERT INTO dipendenti (nome, cognome, sesso, telefono, mansione) VALUES ('{$_POST['nome']}','{$_POST['cognome']}','{$_POST['sesso']}','{$_POST['telefono']}','{$_POST['mansione']}')";

lo so che è una cosa troppo statica ma sarà l'orario sarà che ho un casino in testa non ho trovato altre soluzioni.

Vi posto comunque il codice intero e funzionante in modo da farvi capire meglio se sono stato poco comprensibile e se serve a qualcuno almeno ne può usufruire:
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title> Inserimento dati </title>
</head>

<font color="#FF0000" size = 5> Pagina dedicata all'inserimento di un nuovo utente </font>


<h2> Inserimento dati tabella dipendenti </h2>


	<FORM METHOD="post" ACTION="insert.php">
	<b>Nome:</b><br> <INPUT TYPE="text" NAME="nome" value="Inserisci un termine" onfocus="if(this.value==this.defaultValue)this.value=''"><br>
	<b>Cognome:</b><br> <INPUT TYPE="text" NAME="cognome" value="Inserisci un termine" onfocus="if(this.value==this.defaultValue)this.value=''"><br><br>
	
//Radio button = scelta obbligata - in modo che l'utente non sbagli nell'inserimento dei dati
	Uomo: <INPUT TYPE="radio" NAME="sesso" value="M"/>
	Donna: <INPUT TYPE="radio" NAME="sesso" value="F"/><br><br>

	<b>Telefono:</b><br> <INPUT TYPE="text" NAME="telefono" value="Inserisci un termine" onfocus="if(this.value==this.defaultValue)this.value=''"><br>
	<b>Mansione:</b><br> <INPUT TYPE="text" NAME="mansione" value="Inserisci un termine" onfocus="if(this.value==this.defaultValue)this.value=''"><br>
	<INPUT TYPE="submit" VALUE="Inserisci">
	</FORM>	
	
	
<!TARGET="_blank" se lo si aggiunge nel form dopo action apre un'altra pagina dove mostra quello che c'è in action>


<?php
	
	$connessione = mysql_connect("localhost","root","root") or die ("ATTENZIONE: Errore di connessione al database\n");
	$selezione_db = mysql_select_db("ProgDataWarehouse",$connessione) or die ("ATTENZIONE: Errore nella selezione del database\n");

//controllo sul sesso - viene controllata l'ultima lettera del nome, se è "a" e il sesso è "F" oppure se è "o" e il sesso è "M" inserisce
	$ultima_nome = substr($_POST['nome'], -1); //substr($variabile, -1); = restituisce ultima lettera di $variabile
	if ((($ultima_nome == 'o') && ($_POST['sesso'] == 'M')) || (($ultima_nome == 'a') && ($_POST['sesso'] == 'F')) || (($_POST['nome'] == 'mattia') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'Mattia') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'andrea') && ($_POST['sesso'] == 'M')) || (($_POST['nome'] == 'Andrea') && ($_POST['sesso'] == 'M')))
		
	$query = "INSERT INTO dipendenti (nome, cognome, sesso, telefono, mansione) VALUES ('{$_POST['nome']}','{$_POST['cognome']}','{$_POST['sesso']}','{$_POST['telefono']}','{$_POST['mansione']}')";
	

	if (mysql_query ($query, $connessione))
		echo ("Inserimento riuscito!");
	else
		echo ("Errore nell'inserimento :-(");	

?>

<body>
</body>
</html>

Come potrei migliorare il codice. Di funzionare funziona ma se viene fuori un altro nome che sia al maschile e sia al femminile rimane invariato?
 
Ehmmmmm.... Hai ragione
, effettivamente non ci avevo pensato affatto e non so perché non ho fatto neanche le prove.
Ma conviene inserire anche queste eccezioni nell'if? Attualmente non mi viene nessun'altra soluzione.
 
ciao
dovresti prendere un "nomario" dei nomi italiani (anche esteri perchè qualcuno può avere un nome esotico), verificare tutti quelli che finiscono per "a" o "o" se sono ambisessi, analogamente per le altre finali (manuel).
poi non ne farei di nulla:mexican:
 

Ciao, secondo me è meglio conoscerli di persona questi dipendenti :quote: (scherzo)
Penso che le variabile da controllare sono molte, tranne se nell'iscrizione non obblighi l'inserimento del cosice fiscale, allora con quel dato in più che hai puoi fare le verifiche di cui hai bisogno
Ciao
 
grazie mille per le risposte. Cmq si quello di conoscerli sarebbe ottimo;-) cmq per il controllo su un nomario sarebbe buona idea ed anche quella del codice fiscale. ma come vi dicevo essendo un progetto, penso che forse è meglio studiare per bene l'orale e fare la relazione.

Grazie cmq
 

Discussioni simili