ho capito ora che non ti riferivi al flag ma all'uguaglianza del flag, comunque c'è una cosa che non va, in pratica, oltre al fatto che non tiene conto dell'if dell'username mi mandain ciclo l'echo della data...

il codice è questo:
codice:
<?php
$connessione=mysql_connect("localhost","root","miura77") or die(mysql_error());
$scelta_db=mysql_select_db("iscrizione") or die(mysql_error());
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>iscrizione in corso...</title>
</head>
<body>
<?php
$flag_controllo=0;
if(substr($chiave,0,3)=="ob_"){
if($valore ==""){
echo "non hai compilato il campo obbligatorio $chiave, l'iscrizione non può essere processata.";
$flag_controllo=1;
break;
}
}
while(list($chiave, $valore)=each($_POST)){
if($flag_controllo==0){
$res = mysql_query("select * from utenti where username = '{$_POST[username]}'"); 
if(mysql_num_rows($res)) {
echo "username già utilizzato";
}
$data_nascita=$_POST[giorno]."/".$_POST[mese]."/".$_POST[anno];
echo "la data di nascita è $data_nascita";
$stringa_query="insert into utenti (username,password,nome,cognome,indirizzo,citta,provincia,indirizzo_email,data_nascita,data_registrazione) 

values(\"$_POST[ob_username]\",\"$_POST[ob_password]\",\"$_POST[nome]\",\"$_POST[cognome]\",\"$_POST[indirizzo]\",\"$_POST[citta]\",$_POST[provincia],\"$_PO

ST[ob_indirizzo_email]\",\"$data_nascita\",now())";
$iscrizione_utente=mysql_query($stringa_query) or die(mysql_error());
}
}
?>
</body>
</html>
dategli un'occhiata, probabilmente è una bestialità così evidente che lo trovate subito...