Newsgroup: it.comp.www.php
Titolo: Comando DIE oppure messaggi di errore

Ciao a tutti.
Ho un problema che mi assilla.. e non riesco a risolverlo :(
Vi prego aiutatemi.
Facciamo un esempio semplice, c'č un form da compilare dove bisogna per
forza scrivere qualcosa in tutte le righe.
nel file di "ACTION" del form, metto il seguente script per evitare che se
rimangano vuote le righe appaia un messaggio di errore:
per esempio:
if ($caselladiesempio1 == "")
print "non hai riempito la casella di esempio1";
oppure
if ($caselladiesempio1 == "")
die ("non hai riempito la casella di esempio1");
Ma il problema č questo:
Se io metto solamente il comando print, viene correttamente visualizzato il
messaggio di errore, ma il file php continua ad essere letto fino al fondo e
quindi ad eseguire tutti gli altri comandi..ecc. e non va bene! xkč io
voglio che si fermi a quel punto e basta.
Se invece metto il die, tutto il codice html scritto dopo di quel "die" non
viene letto.. e quindi la pagina che mi viene visualizzata, non mi appare
tutta....
Come posso fare???
Vi prego aiutatemi.........
Grazie mille a tutti in anticipo,
Ciao,
MaRco85

 tutta....
Sarà scomodo, ma non conosco altri sistemi per fare quello che ti serve.
if ($caselladiesempio1 == "") {
   echo ("non hai riempito la casella di esempio1");
} else {
   IL RESTO DEL CODICE
}
Certo, bisogna ottimizzare i controlli per evitare di indentare ogni riga!
Ludovico

 ha scritto nel messaggio
news:blhvq7$kta$1...@newsreader.mailgate.org...


> Torakiki

Grazie mille davvero ;-)
Usare un semplice javascript? E' proprio quello che ti serve secondo
me.
Francesco
_____________________________________
Per rispondere in e-mail togli NOSPAM 

 ha scritto nel messaggio
news:blj58k$d23br$1...@ID-204647.news.uni-berlin.de...



Obbligato no, e sicuramente č bello poter gestire adeguatamente gli errori
in php e mostrare tutto l'html... Quello che puoi fare con js č un controllo
aggiuntivo, ma non esclusivo.
Mi č anche venuto in mente che potresti fare cosě (che sbadato) per
mantenere un codice abbastanza chiaro e non sommergerti di if annidati.
$errors = array();
if (!controlloPrimaVariabile) {
    $errors[] = "Devi riempire il primo campo";
}
if (!controlloSecondaVariabile) {
    $errors[] = "Devi riempire il secondo campo";
}
if (!controlloTerzaVariabile) {
    $errors[] = "Devi riempire il terzo campo";
}
if (count($errors) > 0) {
    echo "Attenzione!<br>".implode("<br>",$errors);
} else {
    il resto del codice
    il resto del codice
    il resto del codice
    il resto del codice
    il resto del codice
}
Ludovico

 mantenere un codice abbastanza chiaro e non sommergerti di if annidati.
Anzi, puoi scrivere gli if su una riga, cosě viene piů ordinato
if (!controllo) $errors[] = "aaaaaa";
if (!controllo2) $errors[] = "bbbbb";
....
Ludovico

Vi prego aiutatemi.........
Due modi. Il primo e' capire PERCHE' non ti viene vista la pagina
nonostante tu abbia mandato il codice, e correggerlo, perche' non
e' normale. Un modo forse e' usare i flag come detto sotto.
Il secondo modo e' impostare un flag a ogni errore (cosi' segnali
anche tutti gli errori in una botta sola) e interrompere dopo, se
il flag e' impostato:
	$must_die = 0;
	$needed = array(
		'casella1', 'pippo', 'pluto', 'paperino',
	);
	foreach($needed as $field)
	{
		if (isset($_REQUEST[$field]))
			if ('' != trim($_REQUEST[$field]))
				continue;
		print "Il campo $field deve essere riempito!<br />";
		$must_die++;
	}
	...
	if ($must_die > 0)
	{
		die("Si sono verificati $must_die errori nell'esame della
form. Elaborazione interrotta<hr size=1 noshade>");
	}
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.