[RISOLTO] Controllo su form

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

[RISOLTO] Controllo su form

Messaggio da Sam9999 »

Ciao, chi mi da un piccolo aiuto?
Metto il controllo ai campi del form, ma un campo vorrei che passi sia se è vuoto e sia se è compilato.

Con la seguente funzione o controllo se è compilato, ma se è vuoto non me lo fa passare, un suggerimento per come fare?

Codice: Seleziona tutto

	// verifico che il nome del tutore sia solo caratteri alfanumerici
	elseif (!preg_match('/^[A-Za-z \'-]+$/i',$stutor)) {
	  echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';  
Al momento, ma non credo la giusta soluzione, ho spostato il controllo dopo ELSE e quindi se è compilato mi fa il controlle, se non è compilato ed è vuoto "" continua lo stesso. Non è un campo richiesto ma se compilato magari lo controllo.

Codice: Seleziona tutto

	switch ($stutor) {
        case (!preg_match('/^[A-Za-z \'-]+$/i',$stutor)):
         echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
        exit;
	case "":
	}
Ultima modifica di Sam9999 il martedì 27 febbraio 2018, 14:08, modificato 2 volte in totale.
-------------
S. @-M.
-------------
Gianluca912
Prode Principiante
Messaggi: 135
Iscrizione: giovedì 20 dicembre 2012, 18:35
Desktop: XFCE
Distribuzione: Xubuntu 18.04 (x64)
Sesso: Maschile

Re: Controllo su form

Messaggio da Gianluca912 »

Devo dire che non è stato affatto semplice capire che c'era scritto. Comunque venendo alla soluzione del tuo problema esiste il moltiplicatore kleen (*) che permette il ripetersi di ZERO o più occorrenze, quindi potresti usarlo nel precedente elseif senza usare lo switch. Oppure la stringa vuota rappresentata da //. Però non sono in grado di farti un esempio.
Hello :)
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

Re: Controllo su form

Messaggio da Sam9999 »

Sto pensando e se mettessi un altro esleif con il controllo:

Codice: Seleziona tutto

if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}
e sotto ci aggiungo un comando break: uscirebbe fuori dal ciclo if e continua il programma in caso di stringa vuota?

Ho provato ad aggiungere un controllo, in maniera da chiedere se è composta da carattteri e diversa da vuota, ma mi da errore di php.

Codice: Seleziona tutto

	// verifico che il nome del tutore sia solo caratteri alfanumerici
	elseif (!preg_match('/^[A-Za-z \'-]+$/i',$stutor)) && ($tutor != "") {
     echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
	} 
Ultima modifica di Sam9999 il sabato 17 febbraio 2018, 21:07, modificato 1 volta in totale.
-------------
S. @-M.
-------------
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 852
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: Controllo su form

Messaggio da TommyB1992 »

Il nome del tutore deve essere solo caratteri alfanumerici
Questo non è italiano.

Codice: Seleziona tutto

       switch ($stutor) {
            case (!preg_match('/^[A-Za-z \'-]+$/i',$stutor)):
             echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
            exit;
       case "":
       }
ma che cos'è X-D
e sotto ci aggiungo un comando break: uscirebbe fuori dal ciclo if e continua il programma in caso di stringa vuota?
X-D

Comunque:
Da dove hai fatto copia e incolla per la regex? se utilizzi la regex options "i" il tutto diventa alfanumerico.

La soluzione è:

Codice: Seleziona tutto

if (!empty($tutor ) && !preg_match('/^[a-z \'-]+$/i',$stutor)) {
   exit('Aramaico antico.');
}
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

Re: Controllo su form

Messaggio da Sam9999 »

Sto provando così:

Codice: Seleziona tutto

	// verifico che il nome del tutore sia solo caratteri alfanumerici
	elseif (!preg_match('/^[A-Za-z \'-]+$/i',$stutor)) && (__isset($stutor)) {
     echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
	} 
E non va.. provo com dici tu a mettere empty per primo...
Ora messa così:

Codice: Seleziona tutto

	elseif (!empty($tutor) && (!preg_match('/^[a-z \'-]+$/i',$stutor))) {
     echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
	} 
Non da errore PHP ma mi passa sempre, mentre io voglio che passi solo se uguale a nullo oppure con i caratteri che chiedo.
Solo che anche mettendo (empty($stutor))

Cioè dovrebbe essre così:

Codice: Seleziona tutto

	elseif (empty($stutor) && (!preg_match('/^[a-z \'-]+$/i',$stutor))) {
     echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
	} 
non i passa se vuoto e poi non controlla i caratteri inseriti, la loro conrrispondenza con il preg_match. :birra:
-------------
S. @-M.
-------------
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 852
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: Controllo su form

Messaggio da TommyB1992 »

Certo... non va...

Codice: Seleziona tutto

<?php

function test($stutor) {
    if (!empty($stutor) && !preg_match('/^[a-z \'-]+$/i',$stutor)) {
       echo('Aramaico antico.');
    }
    echo '<br>';
}

echo '1. ' . test('');
echo '2. ' . test('tizio caio');
echo '3. ' . test('h4c%3r');
Output:

1.
2. Aramaico antico.
3.

Io non capisco quando scrivi...

Allora provo a scriverti tutte e due le varianti possibili:

Codice: Seleziona tutto

<?php

function test($stutor) {
    if ($stutor == '' || !preg_match('/^[a-z \'-]+$/i',$stutor)) {
       echo($stutor . ' Aramaico antico.<br>');
    }

}

test('');
test('tizio caio');
test('h4c%3r');
Output:
Aramaico antico.
h4c%3r Aramaico antico.

Una delle due deve essere per forza
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

Re: Controllo su form

Messaggio da Sam9999 »

Non passa se il campo tutor è vuoto:

Codice: Seleziona tutto

	elseif ($stutor == '' || !preg_match('/^[a-z \'-]+$/i',$stutor)) {
     echo '<h2>Il nome del tutore deve essere solo caratteri alfanumerici</h2><br><p align="center"><i><a href="javascript:window.history.go(-1);">Torna al Form</a></i></p>';
	} 
Mi controlla i caratteri del tutore, ma se è vuoto non mi ignora il controllo.
IO controllo il campo tuttore colo in caso sia compilato, in caso non sia compilato, non è richeisto, in quanto è richiesto solo se esiste il tutore in caso di iscrizione di minorenne. (e mi fermo solo a questo altrimenti dovrei controllare se il campo minorenne $sminus è con la "X" e quindi effettuare il controllo su $tutor o ignorare il controllo se il campo maggiorenne Ssmaggio è con la X)

Bene mi sono complicato la vita e adesso controllo se il campo minore o maggiore sono uguali a X oppure no e dopo anche faccio i vari casi, se minore è compilato allora anche tutore deve essere compilato, se è compilato maggiorenne salta, se sono compialti tutti e due, ne può essere compilato uno solo. Quindi mantengo l'opzioone switch.... non più su $tutor ma su $minus

E visto che mi ci trovavo ho aggiunto i controlli a tutti i campi ove è richiesta la X. Non la spunta in quanto dopo vado a compilare un PDF e per ora mi serve un carattere da inserire.
-------------
S. @-M.
-------------
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: Controllo su form

Messaggio da Eresia »

metti lo spazio dentro agli apici

Codice: Seleziona tutto

$stutor == ' '
oppure

Codice: Seleziona tutto

if(empty($stutor)) {
 // blablabla
}
oppure [brutta pratica]

Codice: Seleziona tutto

if (strlen($stutor) < 1) {
   // blablabla
}
c'e' anche isset()
emerge --auD --oneshot life/lucky-*
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

Re: Controllo su form

Messaggio da Sam9999 »

Grazie, ho poi incasinato con altri controlli e lascio cos' con lo switch.
Il controllo del campo vuoto lo fa è che il controllo incrociato, se è pieno controllare che non ci siano caratterei strani, ceh non fa.
Controllo se è vuoto e salto, ok, ma lo faccio in switch in quanto se lo faccio in if mi salta i successivi controlli e l'else.
Controllo se è pieno lo fa ma poi non controlla il pregmatch... non so perché

In un altro form ho usato poi questa cosa per controllare un campo se è compilato, lo confronto se è diverso dai precedneti che mi interessa non sia uguale e quindi lo inserisco nel titolo del documento a cui rinomino il pdf compilato.
Ed mi controlla senza problemi anche 6 campi.
Il fatto è che penso che IF sia un po' tonto, nel senso che, è riempito allora va bene e mi salta il preg match anche se gli ho detto che la condizione deve essere non vuoto e solo con i caratteri voluti.
Nel ciclo switch ho poi inserito anche un if e funziona.Ma lo swicth e sul campo con la X, nel senso se è con X il campo minus allora se vi sono caratteri non voluti segnala altrimenti va avanti. Se il campo minus è senza X almeno il campo maggio deve avere la X altrimenti segnala.
-------------
S. @-M.
-------------
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: Controllo su form

Messaggio da Eresia »

Non ho capito molto bene, comunque puoi usare i cicli if else annidati tra di loro

Codice: Seleziona tutto

if(condizione){
   if(condizione) { 
      // blablabla
   }
}
emerge --auD --oneshot life/lucky-*
Avatar utente
Sam9999
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1983
Iscrizione: lunedì 9 giugno 2014, 8:59
Desktop: Studio Xfce
Distribuzione: Ubuntu 20.04 LTS (Focal)
Località: BO
Contatti:

Re: Controllo su form

Messaggio da Sam9999 »

Ci avevo provato con i cicli if.. ma forse non chiudevo bene le graffe... poi alla fine sono la stessa cosa...
-------------
S. @-M.
-------------
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti