Campo non obbligatorio con else

Ho qursto codice $citta = htmlentities(stripslashes(trim($_POST['citta']))); che però non è un campo obbligatorio, però vorrei che se il campo non viene compilato mi metta a video 3 barrette ---.

Come metto l'else?

inviato 8 anni fa
php
php
6
X 0 X

vorresti fare una cosa così??

if (trim($_POST['città']) == "")
{
    echo "---";
}
else
{
  $citta = htmlentities(stripslashes(trim($_POST['citta']))); 
}
risposto 8 anni fa
Hroud
X 0 X

Mi da errore, dice che c'è un'else di troppo, quello che contatena un codice sotto

if (trim($_POST['città']) == "")

{

    echo "---";

}

else

{

  $citta = htmlentities(stripslashes(trim($_POST['citta'])));

}

else

...

risposto 8 anni fa
php
php
6
X 0 X

Usare le parentesi sembra brutto?

if (condizione) { // if che metti prima... aggiungi la parentesi
  if (trim($_POST['città']) == "") {
      echo "---";
  }
  else {
     $citta = htmlentities(stripslashes(trim($_POST['citta']))); 
  }
}         // questa parentesi è compagna di quella sopra
else { // quello che ti da errore
}
risposto 8 anni fa
Gly
Gly
1
X 0 X

Non ho capito questa parte

if (condizione) { // if che metti prima... aggiungi la parentesi

risposto 8 anni fa
php
php
6
X 0 X

Se sostituendo il codice

$citta = htmlentities(stripslashes(trim($_POST['citta'])));

con quello consigliato da Hroud ti da errore per un else duplicato presuppongo che il tuo codice sia in un qualche modo racchiuso in una struttura if else che non so assolutamente come sia visto che non hai postato il codice ma sicuramente non hai usato le parentesi per racchiuderlo

risposto 8 anni fa
Gly
Gly
1
X 0 X

Questo è il mio codice (ho lasciato lo spazio per metterci quello della Città fra email e messaggio)

tieni presente che Città è l'unico campo non obbligatorio.

//Campi obbligatori
if( $nome == '' ) // anche se inserito un solo 0 (zero) viene riconosciuto come carattere 
$errore .= "Inserire il Nome";
else
//Valida l'Email
//valida pippo@email.{2,4}//pip.po@email.{2,4}//pip_po@email.{2,4}//pip-po@email8.{2,4}   info@bncf.rom1eo.sbn.it
if( $suoemail == '' )
$errore .= "Inserire l'Email";
else
if (!ereg("^([-_.#$&a-z0-9])+[@][a-z0-9]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})$",$suoemail))
$errore .= "Inserire un'Email valida";
else





if( $messaggio == '' )
$errore .= "Inserire il Messaggio";  
else
if (empty($_POST['validator']))
$errore .= "Inserire il Codice";
else
...
risposto 8 anni fa
php
php
6
modificato 8 anni fa
X 0 X

Questo è il mio codice (ho lasciato lo spazio per metterci quello della Città fra email e messaggio)

tieni presente che Città è l'unico campo non obbligatorio.

//Campi obbligatori
if( $nome == '' ) // anche se inserito un solo 0 (zero) viene riconosciuto come carattere 
$errore .= "Inserire il Nome";
else
//Valida l'Email
//valida pippo@email.{2,4}//pip.po@email.{2,4}//pip_po@email.{2,4}//pip-po@email8.{2,4}   info@bncf.rom1eo.sbn.it
if( $suoemail == '' )
$errore .= "Inserire l'Email";
else
if (!ereg("^([-_.#$&a-z0-9])+[@][a-z0-9]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})$",$suoemail))
$errore .= "Inserire un'Email valida";
else





if( $messaggio == '' )
$errore .= "Inserire il Messaggio";  
else
if (empty($_POST['validator']))
$errore .= "Inserire il Codice";
else
...

Nello spazio ci ho messo questo, non da più errore ma a video non appaiono le 3 barrette

//Campo non obbligatorio
if (($citta) == ' '){
echo "---";
}
else{
$citta; 
}
risposto 8 anni fa
php
php
6
X 0 X

nel codice che hai postato la condizione per la quale si deve avverare echo "---" è che il campo città sia == ' ' (con uno spazio), quindi se lasci il campo vuoto ti si avvera la seconda condizione che in pratica non fa niente!

risposto 8 anni fa
Hroud
X 0 X
nel codice che hai postato la condizione per la quale si deve avverare echo "---" è che il campo città sia == ' ' (con uno spazio), quindi se lasci il campo vuoto ti si avvera la seconda condizione che in pratica non fa niente!

Ho fatto come dici tu ma delle 3 lineette  a video nemmeno l'ombra  :wallbash:

//Campo obbligatorio
if( $nome == '' ) // anche se inserito un solo 0 (zero) viene riconosciuto come carattere 
$errore .= "inserire il Nome";
else
//Campo non obbligatorio
if (($citta) == ' '){
echo "---";
}
else{
$citta; 
}
//Campo obbligatorio. valida l'Email
//valida pippo@email.{2,4}//pip.po@email.{2,4}//pip_po@email.{2,4}//pip-po@email8.{2,4}   info@bncf.rom1eo.sbn.it
if( $suoemail == '' )
$errore .= "Inserire l'Email";
else
if (!ereg("^([-_.#$&a-z0-9])+[@][a-z0-9]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})$",$suoemail))
$errore .= "Inserire un'Email valida";
else
//Campo obbligatorio
if( $messaggio == '' )
$errore .= "Inserire il Messaggio";  
else
...
risposto 8 anni fa
php
php
6
X 0 X

mi sa che mi sn spiegato male, comunque devi modificare questo:

da così:

if (($citta) == ' ')

a così:

if (($citta) == '')

prima ti avevo spiegato solo dov'era l'errore e perchè lo script non funzionava.

così dovrebbe andare..spero! XD

Ciao!

risposto 8 anni fa
Hroud
X 0 X

Ho corretto e succede qualcosa di strano:

Se inserisco la città viene poi messa a video, perciò va bene.

Se invece lascio il campo vuoto e invio, nella pagina che elabora (e che mostra "Messaggio inviato") appaiono anche le 3 barrette ma poi a video no.

Ho provato a spostare il codice in varie parti della pag. ma non cambia niente.

risposto 8 anni fa
php
php
6
X 0 X

Dopo vari tentativi, l'unico modo che ho trovato funzionale è mettere il codice direttamente nel value del form:

<input class="campi1" name="citta" value="<?php echo($_SESSION['citta']);if ($citta == ''){echo '---';}?>" size="30" type="text" maxlength="15" onblur="this.value=this.value.replace(/\s*$|^\s*/,'')" />

l'unica pecca che mi devi aiutare a togliere è che nel form ancora vuoto appaiono già da subito le 3 barrette proprio perchè sono nel value

risposto 8 anni fa
php
php
6
modificato 8 anni fa
X 0 X

Ah quindi le vuoi fare apparire nel campo di testo, non l'avevo capito! Perdonami :D.

Ricapitoliamo: vorresti far inviare un form, se il campo città non è inserito vorresti far apparire nel campo città "---".

Sotto a tutto il form appare una scritta Messaggio inviato oppure la scritta "Messaggio inviato" la fai apparire in una pagina bianca?

- Se è la seconda opzione non avrebbe senso far apparire le liniette nel form perchè il form non ci sarebbe.

- Se è la prima dovresti riscrivere tutto il form con i dati inseriti al loro posto (come hai fatto tu nell'ultimo esempio).

Ciao

risposto 8 anni fa
Hroud
X 0 X

Ah quindi le vuoi fare apparire nel campo di testo, non l'avevo capito! Perdonami :D.

Ricapitoliamo: vorresti far inviare un form, se il campo città non è inserito vorresti far apparire nel campo città "---".

Sotto a tutto il form appare una scritta Messaggio inviato oppure la scritta "Messaggio inviato" la fai apparire in una pagina bianca?

- Se è la seconda opzione non avrebbe senso far apparire le liniette nel form perchè il form non ci sarebbe.

- Se è la prima dovresti riscrivere tutto il form con i dati inseriti al loro posto (come hai fatto tu nell'ultimo esempio).

Ciao

Ho 2 pag. quella del form e  quella che elabora, se lascio come ho messo nell'ultimo esempio, come dicevo funziona, però quando l'utente apre il form per scrivermi invece di vedere il campo Città vuoto, lo vede con già dentro le 3 barrette, io invece vorrei che il campo appaia subito vuoto, se poi l'utente ci mette la città andrà anche a video, diversamente andrano automaticamente le 3 barrette.

risposto 8 anni fa
php
php
6
modificato 8 anni fa
X 0 X

Se non devi mettere subito a video le linette salvale nella variabile citta: in modo da riutilizzarla quando vuoi.

Intendo così:

if ($citta == '') {
$citta = "---";
}
else
{
$citta;
}
risposto 8 anni fa
Hroud
modificato 8 anni fa
X 0 X

Se non devi mettere subito a video le linette salvale nella variabile citta: in modo da riutilizzarla quando vuoi.

Intendo così:

if ($citta == '') {
$citta = "---";
}
else
{
$citta;
}

Non ho capito, questo tuo nuovo codice lo mette nel value in nella pag. che elabora?

risposto 8 anni fa
php
php
6
X 0 X

in pratica se il campo è vuoto la variabile che dovrebbe salvare la città (presa con $_POST['citta']) contiene invece le tre barrette. Dato che sei fai echo "---" te le mette a video subito in un posto che non vuoi tu, così invece le puoi mettere a video dove vuoi tu. Però è ovvio che deve andare nella pagina che elabora i dati.

risposto 8 anni fa
Hroud
X 0 X
in pratica se il campo è vuoto la variabile che dovrebbe salvare la città (presa con $_POST['citta']) contiene invece le tre barrette. Dato che sei fai
echo "---"
te le mette a video subito in un posto che non vuoi tu, così invece le puoi mettere a video dove vuoi tu. Però è ovvio che deve andare nella pagina che elabora i dati.

Ora va bene, ho notato che funziona anche così:

$citta = htmlentities(stripslashes(trim($_POST['citta']))); 
//Questo codice se il campo è vuoto mette a video la barretta 
if ($citta == '') {
$citta = "-";
}
risposto 8 anni fa
php
php
6
modificato 8 anni fa
X 0 X

Ora mi si presenta il problema di formattare il colore, se metto una barretta il form parte ma a video invece della barretta esce zero 0, se invece metto 2 barrette (come qui) esce l'alert "Max 20 caratteri" e "Caratteri non ammessi."

Senza formattazione va tutto bene

if ($citta == '') {
$citta ="<font color=\"red\">"--"</font>";
}
else
{
$citta;
}
risposto 8 anni fa
php
php
6
X 0 X

mmmmmh, non saprei forse ci sono dei conflitti nel codice.

risposto 8 anni fa
Hroud
X 0 X

Prova con

if ($citta == '') {
$citta ="<font color=\"red\">\"--\"</font>";
}
else
{
$citta;
}

Mi sa che sta cercando di farti una sottrazione :D

risposto 8 anni fa
Gly
Gly
1
modificato 8 anni fa
X 0 X

si infatti, non l'avevo notato, lo considera un operatore e non una stringa se non è tra le virgolette.

risposto 8 anni fa
Hroud
X 0 X

Ho individuato il codice che da ma non so come sistemare.

Se metto cosi funziona:

//Questo codice se il campo è vuoto mette a video la barretta 
if ($email == '') {
$email ="&nbsp;<font color=\"green\">-</font>";
}

Però c'è anche questo sotto:

//Dopo un tot di caratteri mette i 3 puntini
$email1 = $email; 
if (strlen($email1) >= 15){   //Se la stringa è 15 caratteri o più (senza puntini), viene accorciata a 12...
$email=substr($email1,0,12)."...";
}

perciò, se tolgo il codice sotto a video appare la barretta giusta, se invece lascio il codice sotto a video appare così: -">

risposto 8 anni fa
php
php
6
X 0 X

Prova a modificare lo script così, aggiungendogli un "else if", l'ho provato e funziona

if ($email == '') {
$email ="&nbsp;<font color=\"green\">-</font>";
}
else if (strlen($email) >= 15)
{   //Se la stringa è 15 caratteri o più (senza puntini), viene accorciata a 12...
$email=substr($email,0,12)."...";
}
risposto 8 anni fa
Hroud
X 0 X

Prova a modificare lo script così, aggiungendogli un "else if", l'ho provato e funziona

if ($email == '') {
$email ="&nbsp;<font color=\"green\">-</font>";
}
else if (strlen($email) >= 15)
{   //Se la stringa è 15 caratteri o più (senza puntini), viene accorciata a 12...
$email=substr($email,0,12)."...";
}

Tu provi codici? Effettivamente funziona  :rm_shifty:

risposto 8 anni fa
php
php
6
X 0 X

sisi, l'ho provato per evitare di postare un codice sbagliato. Inoltre non avevo niente da fare  ;D

risposto 8 anni fa
Hroud
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda