form controllo con il for "Tutti i dati sono richiesti".

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, come posso risparmiare codice per controllare che tutti i dati devono essere inseriti e far venire fuori un messaggio tipo "La data non è corretta ",
"Non è stato inserito il titolo.. etc......etc.....

mi sembra di aver capito con gli array e le [] .. ma non so come fare. mi date una mano?

vi posto il codice:
PHP:
<?php
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . '/admin_mod.php');

$page = new Page;

$page->setTitle('Gestione NEWS');

$page->startBody();

?>
<?php

	$cat = (isset($_POST["cat"])) ? trim ($_POST["cat"]): '';
	$user = (isset($_POST["user"])) ? trim ($_POST["user"]): '';	
	$active = (isset($_POST["active"])) ? trim ($_POST["active"]): '';
	
if(isset($_POST["invia"]))
{
	$cat = protect($_POST["cat"]);
	$user = protect($_POST["user"]);
    $titolo = protect($_POST["titolo"]);
    $testo = protect($_POST["testo"]);
    $intro = protect($_POST["intro"]);
  	
	$dtmPubblicazione = protect($_POST["data"]);

	
	if(empty($_POST["user"]))
	{
	$error = "L'username non &egrave; stato inserito.";
	}elseif($_POST["cat"] == "0")
	{
	$error = "La categoria non &egrave; stata inserita.";
	}
	elseif(empty($titolo))
	{
	$error = "Il titolo non &egrave; stato inserito";
	}elseif(!isString($titolo))
	{
	  $error = "Nel titolo ci sono simboli non consentiti nell'inserimento.";
	}
	elseif(empty($intro))
	{
	$error = "La introduzione non &egrave; stato inserito";
	}
	elseif(empty($testo))
	{
	$error = "Il testo non &egrave; stato inserito";
	}
	elseif(empty($dtmPubblicazione))
	{
	$error = "La data di pubblicazione non &egrave; stata inserita";
	}elseif(!isData($_POST["data"]))
	{
	$error = "La data deve avere il formato inglese data/tempo";
	}
	elseif(empty($active))
	{
	$error = "Lo stato della notizia non &egrave; stato selezionato";
	}
	else
	{
	
	$db_cat = $db->real_escape_string($cat);
	$db_user_id = $db->real_escape_string($user);
    $db_titolo = $db->real_escape_string($titolo);
	$db_testo = $db->real_escape_string($testo);
	$db_intro = $db->real_escape_string($intro);
    $db_dtmPubblicazione = $db->real_escape_string($dtmPubblicazione);
    $db_active = $db->real_escape_string($active);
	
		$strSQL = "INSERT INTO news(";
		$strSQL.="_userid,";
		$strSQL.="_catid,";
		$strSQL.="titolo,";
		$strSQL.="intro,";
		$strSQL.="testo,";
		$strSQL.="data,";
		$strSQL.="active)";
		$strSQL.= "VALUES(";
		$strSQL.="".$db_user_id.",";
		$strSQL.="'".$db_cat."',";
		$strSQL.="'".$db_titolo."',";
		$strSQL.="'".$db_intro."',";
		$strSQL.="'".$db_testo."',";
		$strSQL.="'".$db_dtmPubblicazione."',";
		$strSQL.="".$db_active.")";
		$db->query($strSQL) or die($db->error);
       
		$msg = "<p>Aggiunto</p>";
		$msg.="<p><a href=\"news.php\">Torna alla lista</a></p>";
		$msg.="<p><a href=\"news_aggiungi.php\">Aggiungi ancora</a></p>";
		}
	}
	
	require_once(dirname(__FILE__) . "/tiny_mce_news.php");
?>
<p align="center"><a href="news.php">Torna indietro</a></p>
<p class="titolo">Aggiungi</p>
<?php
 if(isset($error)){ echo "<p class=\"error\">".$error."</p>";}
if(isset($msg)){ echo $msg;} else {
?>
	<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">



<table width="100%" align="center">
<tr>
	<td>User</td>
	
					
				<td><input class="input" type="text" name="user_text" id="user_text" size="25" value="<?php  echo htmlspecialchars(get_username($_SESSION["user_crypt"]));   ?>" readonly />
				<input class="input" type="hidden" name="user" id="user" size="25" value="<?php echo htmlspecialchars($_SESSION["user_id"]);?>" /></td>
			</tr>
<tr>
      <td>Seleziona Categoria</td>
      <td><?php echo "<select  name=\"cat\">";?>

        <option  selected="selected" value="0">Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM news_categorie");
	
	while($row = $result->fetch_array())
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
    <option value="<?php echo $id; ?>"<?php if($cat=="".$id."") echo ' selected'?> ><?php echo $row["titolo"]; ?></option>
           <?php
  }
?>
      </select></td>
    </tr>
<tr>
	<tr>
	<td>Titolo</td>
	<td><input name="titolo" type="text" id="titolo"  value="<?php if(isset($_POST['titolo'])){echo htmlspecialchars($_POST['titolo']);}?>" size="40"  /></td>
</tr>
<tr>
	<td>Introduzione</td>
	<td><textarea cols="50" rows="10" name="intro"><?php if(isset($_POST['intro'])){echo htmlspecialchars($_POST['intro']);}?></textarea></td>
</tr>
<tr>
	<td>Testo</td>
	<td><textarea cols="50" rows="10" name="testo"><?php if(isset($_POST['testo'])){echo htmlspecialchars($_POST['testo']);}?></textarea></td>
</tr>

<tr>
	<td>Data</td>
	<td><input name="data" type="text" id="data"  value="<?php if(isset($_POST['data'])){echo $_POST['data'];}else { echo  "".date("Y-m-d H:i:s").""; }?>"  /></td>
</tr>
<tr>
	<td>Stato di attivazione</td>
	<td>
		 Pubblica<input type="radio" name="active" value="1"  <?php if($active=='1') echo 'checked="checked"'?> />
     Nascosto<input type="radio" name="active" value="2" <?php if($active=='2') echo 'checked="checked"'?>/>
</td>
</tr>
<tr>
	<td></td>
	<td></td>
</tr>
</table>
		<input type="submit" value="Aggiungi" name="invia" />
	</form>
	<?php 
	}?>
<?php
$page->endBody();
echo $page->render('layout/template.php');
?>

vi ringrazio molto. e buona giornata.
 

alexa337

Nuovo Utente
5 Apr 2013
9
0
0
Milano
Sicuramente puoi risparmiare una montagna di codice!
Innanzi tutto ti consiglio di mettere tutti i campi del tuo form in un array dedicato.
Questo puoi farlo specificando gli <input> in questo modo

HTML:
<input type='text' name='nomeform[nomecampo]'/>

Cosi' se in grado di accedere al dato tramite php utilizzando

$_POST['nomeform']['nomecampo'];

Grazie a questa tecnica, sei in grado di scorrerti l'array e valutare l'esistenza dei campi all'interno del ciclo.
Ecco l'esempio

PHP:
foreach ($_POST['nomeform'] as $campo)
   if(empty($campo))
     $error="Errore! il campo $campo e' vuoto!".

In queste 3 righe riusciamo ad automatizzare cio' che tu hai postato in circa 30 righe :)
Ovviamente, se vuoi dei messaggi di errore piu' specifici, dobbiamo aggiungere un array di mappatura.
Ecco l'esempio

PHP:
$errori['nomeform']['nomecampo1']="Questo e' l'errore per il campo1";
$errori['nomeform']['nomecampo2']="Questo e' un errore diverso per il campo2";

A questo punto il ciclo diventerebbe:
PHP:
foreach ($_POST['nomeform'] as $campo)
   if(empty($campo))
     $error=$errori['nomeform'][$campo];

Fammi sapere se hai bisogno di altri chiarimenti!
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
oltre a quanto ti ha detto alexa per mostrare tutti gli errori (se più di uno) concatena la variabile $error
PHP:
<?php
//.....
	$error="";
	foreach ($_POST['nomeform'] as $campo => $val){
		if(empty(trim($val)){
			$error.="Errore! il campo $campo &egrave; vuoto!<br />";
		}
	}
	if($error==""){
		//fai quello che devi fare
	}else{
		//mostri gli errori
		echo $error;
		//e rimandi al form
	}
//.....
?>
certo presenta un piccolo difetto, in questo modo verifichi solo una caratteristica (in questo caso se è vuoto)
ma se vuoi verificare di un campo anche altre cose, e non solo se vuoto, devi verificare il campo specifico, quindi la serie di if diventano indipensabili.
se come dici vuoi verificare una data oltre al fatto che non sia vuota devi verificare es. che non sia 31.02.2013 e se tale data ti serve poi nel db (es order by data) devi verificare anche che sia inserita con un formato unico
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema con controllo form in real time jQuery 6
F controllo form php con restituzione errori nella form PHP 10
T problema strano con procedura di controllo da database, di dati immessi in un form asp Classic ASP 5
P controllo dati form con jquery e php PHP 8
P controllo in form con 2 submit Javascript 7
A [PHP] Controllo nome utente form di registrazione PHP 4
M [ASP] Upload file da form controllo Classic ASP 5
M [PHP] controllo inserimento dati un un form PHP 4
gandalf1959 Funzione di controllo su un form, comportamento inaspettato Javascript 6
M controllo di quantità in un form Javascript 0
P controllo sul form Javascript 1
S Controllo di due form in Javascript Javascript 1
P invio form non corretto dopo controllo dati PHP 8
Z Controllo campi di un form php PHP 5
H Effettuare il controllo dei campi di un form e cambiare l' action dinamicamente Javascript 1
K controllo testo da form PHP 7
K Controllo FORM e invio dati al DB PHP 43
P controllo campo select nel form Javascript 6
ivarello Form Che avvia upload e controllo automatico PHP 1
P controllo dati mentre s'inseriscono nel form PHP 17
P controllo campi form istantaneo PHP 4
L controllo form radio prima di inviare jQuery 1
T Impostare un controllo da database, di dati immessi in un form asp Classic ASP 6
T impostare il controllo dei dati immessi dagli utenti su form asp Classic ASP 8
L Controllo campi di un form Ajax 0
D script controllo campi form non va su FF Javascript 2
B Controllo form Javascript 2
B controllo su form PHP 4
B Controllo form: uno dei 2 campi obbligatorio Javascript 11
Robby84 Codice di controllo per form mail PHP 4
L Controllo e confronto dati immessi in 2 campi Data in un form (mysql) PHP 1
P Predefinito Controllo campi form contenuto in un DIV Classic ASP 0
D Controllo su campi Form Javascript 3
M Controllo campi in un form Javascript 2
sbobby Codice di controllo su form mail!! PHP 4
A controllo in js dei campi di un form Javascript 1
A Problema form: controllo campi vuoti e inibizione pulsante invio Javascript 5
T controllo form: data inserita > maggiore di data odierna Javascript 4
N Controllo form da altri frame HTML e CSS 0
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
D Form contatti non funzionante HTML e CSS 0
A Stampare dati da form PHP 15

Discussioni simili