PROBLEMA CODICE NON FUNZIONANTE

ImA13programmer

Nuovo Utente
125
0
Salve ragazzi,come ho detto in altri post voglio specificare che sono nuovo nella programmazione,quindi sto riscontrando ancora parecchi problemi: sto sviluppando un sito per la scuola per lo studio di vocaboli inseriti dall'utente:appare un form,dove si inserisce il numero di vocaboli che si vuole imparare e dopo aver premuto invio,bisogna inserire inserire i vocaboli sia nellaprima che nella seconda lingua:subito dopo appare un nuovo form,dove bisogna inserire il vocabolo così come lo si è scritto nel form.Il problema?Il form che serve per inserire la risposta e per fare gli esercizi non appare, e quindi, ritorna al form iniziale.Mi potete spiegare il perchè?Magari dal codice capirete meglio


PHP:
<html>
<head></head>
<body>


<form action='iovogliophp.php' method='post'>
Decidi,quanti vocali vorresti memorizzare e imparare?<input type='text' name='numerovoc'>
</form>



<?php
if(isset($_POST['numerovoc'])) {
isset($_POST['numerovoc']);
$vocabolinum= $_POST['numerovoc'];
isset($vocabolinum);
//da 2

if ( is_numeric($vocabolinum) & $vocabolinum == 2 ) {
  //prossimo echo per i primi vocaboli:creare spazi per form !ricordati di cambiare anche il 2 con la quantità di vocaboli per il numero indicato del form iniziale
echo '<html><head></head><body>
          <form action="iovogliophp.php" method="post">
          Primo vocabolo
          <input type="text" name="vocabolouno2" required> 
          <input type="text" name="traduno2" required>  </br >
          Secondo vocabolo
          <input type="text" name="vocabolodue2" required>
          <input type="text" name="traddue2" required>
          <input type="submit" value="submit">
          </form></body><html>';
          //settaggio e isset  variabili e index :setta le variabili con i name degli input form
        if (isset($_POST['vocabolouno2'])){
          $_POST["vocabolouno2"];   
          $_POST["traduno2"]; 
          $_POST["vocabolodue2"]; 
          $_POST["traddue2"];
          isset($_POST["vocabolouno2"]);   
          isset($_POST["traduno2"]); 
          isset($_POST["vocabolodue2"]); 
          isset($_POST["traddue2"]);
          $vocabolouno2= $_POST["vocabolouno2"];
          $traduno2=     $_POST["traduno2"];
          $vocabolodue2= $_POST["vocabolodue2"];
          $traddue2=     $_POST["traddue2"];
          isset($vocabolouno2);   
          isset($vocabolodue2);   
          isset($traduno2); 
          isset($traddue2);
       
       
          //conclusione:constatare se gli input non sono falzi e creare le textarea per constatare le competenze
          if (empty($traduno2)==false) {
          echo '<form action="" method="post">' . $vocabolodue2 .
                 '<input type="text" name="trad2">
                  </form>';



          };
         
       
        };
            } ;
};

?>

</body></html>



ecco,questo è il codice,spero che voi mi possiate aiutare a trovare l'errore
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
iovogliophp.php immagino sia il nome del file php che hai postato. Se operi nello stesso file lascia la action del form vuota.
Ritorni al form iniziale perchè al secondo submit $_POST['numerovoc'] non esiste quindi la condizione è falsa.
L'operatore logico AND si fa con due && e non con un solo &..

Suggerimento:
Per rendere il tutto più manutentibile spezza i form in file differenti e utilizza le sessioni per portarti dietro i valori delle variabili.
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Per le sessioni: http://www.html.it/articoli/sessioni-php-cosa-sono-come-si-usano-1/

Per il resto basta spostare la logica fuori dal primo IF:
PHP:
<html>
<head></head>
<body>


<form action='' method='post'>
    Decidi,quanti vocali vorresti memorizzare e imparare?
    <input type='text' name='numerovoc'>
</form>



<?php
if(isset($_POST['numerovoc'])) {
    isset($_POST['numerovoc']);
    $vocabolinum= $_POST['numerovoc'];
    isset($vocabolinum);
    //da 2

    if (is_numeric($vocabolinum) && $vocabolinum == 2 ) {
      //prossimo echo per i primi vocaboli:creare spazi per form !ricordati di cambiare anche il 2 con la quantità di vocaboli per il numero indicato del form iniziale
        echo '<form action="" method="post">
            Primo vocabolo
            <input type="text" name="vocabolouno2" required>
            <input type="text" name="traduno2" required>  </br >
            Secondo vocabolo
            <input type="text" name="vocabolodue2" required>
            <input type="text" name="traddue2" required>
            <input type="submit" value="submit">
            </form>';
    };
};

//settaggio e isset  variabili e index :setta le variabili con i name degli input form
if (isset($_POST['vocabolouno2'])){
    $_POST["vocabolouno2"];
    $_POST["traduno2"];
    $_POST["vocabolodue2"];
    $_POST["traddue2"];
    isset($_POST["vocabolouno2"]);
    isset($_POST["traduno2"]);
    isset($_POST["vocabolodue2"]);
    isset($_POST["traddue2"]);
    $vocabolouno2= $_POST["vocabolouno2"];
    $traduno2=     $_POST["traduno2"];
    $vocabolodue2= $_POST["vocabolodue2"];
    $traddue2=     $_POST["traddue2"];
    isset($vocabolouno2);
    isset($vocabolodue2);
    isset($traduno2);
    isset($traddue2);
};

//conclusione:constatare se gli input non sono falsi e creare le textarea per constatare le competenze
if (!empty($traduno2)) {
    echo '<form action="" method="post">' . $vocabolodue2 .
    '<input type="text" name="trad2">
    </form>';
};

?>

</body></html>

Nell'ultima parte la condizione if (empty($traduno2)==false) è più corretto/leggibile scriverla utilizzando l'operatore logico NOT (!)
 
  • Mi piace
Reazioni: ImA13programmer

ImA13programmer

Nuovo Utente
125
0
Per le sessioni: http://www.html.it/articoli/sessioni-php-cosa-sono-come-si-usano-1/

Per il resto basta spostare la logica fuori dal primo IF:
PHP:
<html>
<head></head>
<body>


<form action='' method='post'>
    Decidi,quanti vocali vorresti memorizzare e imparare?
    <input type='text' name='numerovoc'>
</form>



<?php
if(isset($_POST['numerovoc'])) {
    isset($_POST['numerovoc']);
    $vocabolinum= $_POST['numerovoc'];
    isset($vocabolinum);
    //da 2

    if (is_numeric($vocabolinum) && $vocabolinum == 2 ) {
      //prossimo echo per i primi vocaboli:creare spazi per form !ricordati di cambiare anche il 2 con la quantità di vocaboli per il numero indicato del form iniziale
        echo '<form action="" method="post">
            Primo vocabolo
            <input type="text" name="vocabolouno2" required>
            <input type="text" name="traduno2" required>  </br >
            Secondo vocabolo
            <input type="text" name="vocabolodue2" required>
            <input type="text" name="traddue2" required>
            <input type="submit" value="submit">
            </form>';
    };
};

//settaggio e isset  variabili e index :setta le variabili con i name degli input form
if (isset($_POST['vocabolouno2'])){
    $_POST["vocabolouno2"];
    $_POST["traduno2"];
    $_POST["vocabolodue2"];
    $_POST["traddue2"];
    isset($_POST["vocabolouno2"]);
    isset($_POST["traduno2"]);
    isset($_POST["vocabolodue2"]);
    isset($_POST["traddue2"]);
    $vocabolouno2= $_POST["vocabolouno2"];
    $traduno2=     $_POST["traduno2"];
    $vocabolodue2= $_POST["vocabolodue2"];
    $traddue2=     $_POST["traddue2"];
    isset($vocabolouno2);
    isset($vocabolodue2);
    isset($traduno2);
    isset($traddue2);
};

//conclusione:constatare se gli input non sono falsi e creare le textarea per constatare le competenze
if (!empty($traduno2)) {
    echo '<form action="" method="post">' . $vocabolodue2 .
    '<input type="text" name="trad2">
    </form>';
};

?>

</body></html>

Nell'ultima parte la condizione if (empty($traduno2)==false) è più corretto/leggibile scriverla utilizzando l'operatore logico NOT (!)








Ok,grazie tante,mi hai aiutato a risolvere,ma ora lo stesso problema si ripresenta nell'ultima parte,quando devo far notare all'utente eventuali errori,oppure constatare se è giusto.Quindi printa il form per verficare le competenze,ma non la verifica degli input. Ecco il codice:




<html>
<head></head>
<body>


<form action='' method='post'>
Decidi,quanti vocali vorresti memorizzare e imparare?
<input type='text' name='numerovoc'>
</form>



<?php
if(isset($_POST['numerovoc'])) {
isset($_POST['numerovoc']);
$vocabolinum= $_POST['numerovoc'];
isset($vocabolinum);
//da 2

if (is_numeric($vocabolinum) && $vocabolinum == 2 ) {
//prossimo echo per i primi vocaboli:creare spazi per form !ricordati di cambiare anche il 2 con la quantità di vocaboli per il numero indicato del form iniziale
echo '<form action="" method="post">
Primo vocabolo
<input type="text" name="vocabolouno2" required>
<input type="text" name="traduno2" required> </br >
Secondo vocabolo
<input type="text" name="vocabolodue2" required>
<input type="text" name="traddue2" required>
<input type="submit" value="submit">
</form>';
};
};

//settaggio e isset variabili e index :setta le variabili con i name degli input form
if (isset($_POST['vocabolouno2'])){
$_POST["vocabolouno2"];
$_POST["traduno2"];
$_POST["vocabolodue2"];
$_POST["traddue2"];
isset($_POST["vocabolouno2"]);
isset($_POST["traduno2"]);
isset($_POST["vocabolodue2"]);
isset($_POST["traddue2"]);
$vocabolouno2= $_POST["vocabolouno2"];
$traduno2= $_POST["traduno2"];
$vocabolodue2= $_POST["vocabolodue2"];
$traddue2= $_POST["traddue2"];
isset($vocabolouno2);
isset($vocabolodue2);
isset($traduno2);
isset($traddue2);
};

//conclusione:constatare se gli input non sono falsi e creare le textarea per constatare le competenze
if (!empty($traduno2) || !empty($traddue2)) {
echo '<form action="" method="post">' . $vocabolodue2 .
'<input type="text" name="trad2"></br >'.$vocabolouno2.
'<input type="text" name="trad1"></br >
<input type="submit" name="inserisci" value="vedi risultati">
</form>';
if(isset($_POST['trad22']) && !empty($_POST['trad22'])){
isset($_POST['trad22']);
isset($_POST['trad12']);
$trad22=($_POST['trad22']);
$trad12=($_POST['trad12']);
isset($trad22);
isset($trad12);
//ultra conclusione:constatazione risultati
if ( (!empty($trad22) && !empty($trad12) ) && ($trad22 !== $traddue2 or $trad12 !== $traduno2)) {
echo 'Mi dispiace,qualcosa è sbagliato,ricontrolla!Ecco qui ciò che hai scritto!</br >'.
$vocabolouno2.'-->'.$traduno2.'-->'.$trad12.'</br >'.
$vocabolodue2.'-->'.$traddue2.'-->'.$trad22.'</br >';
}elseif($trad22 == $traddue2 && $trad12 == $traduno2) {
echo 'complimenti,sei riuscito a ricordare 2 vocaboli!';
};
};
};

?>

</body></html>


ecco,questo è il codice: dovresti considerare dal penultimo if,dove esegue l'isset di $_POST['trad22']:infatti da lì il codice non funge più.Penso che però dovresti notare meglio l'ultima parte,quella che inizia con il commento //ultra conlusione..... grazie per l'aiuto, e scusami per tutti questi problemi,ma appunto,sto ancora imparando
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Prima di tutto quando posti codice, utilizza il tag code (php) come da regolamento.

E' sempre lo stesso errore.. devi spostare la logica al di fuori if del form.
In più, la condizione if
PHP:
if(isset($_POST['trad22']) && !empty($_POST['trad22'])){
è sempre falsa perchè nell'ultimo form i name degli input sono errati.

A parte che tutti quei controlli isset non si sa che ci stanno a fare, per confrontare i valori nella parte constatazione risultati, o passi i valori (vocabolouno/due e traduno/due) tramite form (ad esempio con campi hidden) oppure li salvi in una variabile di sessione.
 
  • Mi piace
Reazioni: Mursey

ImA13programmer

Nuovo Utente
125
0
Prima di tutto quando posti codice, utilizza il tag code (php) come da regolamento.

E' sempre lo stesso errore.. devi spostare la logica al di fuori if del form.
In più, la condizione if
PHP:
if(isset($_POST['trad22']) && !empty($_POST['trad22'])){
è sempre falsa perchè nell'ultimo form i name degli input sono errati.

A parte che tutti quei controlli isset non si sa che ci stanno a fare, per confrontare i valori nella parte constatazione risultati, o passi i valori (vocabolouno/due e traduno/due) tramite form (ad esempio con campi hidden) oppure li salvi in una variabile di sessione.


quindi il codice sarebbe?So che sto dando fastidio,ma ripeto che sto imparando,quindi è utile per me.Puoi perfavore mettere il codice io modo che io possa confrontare gli errori?
 

ImA13programmer

Nuovo Utente
125
0
Prima di tutto quando posti codice, utilizza il tag code (php) come da regolamento.

E' sempre lo stesso errore.. devi spostare la logica al di fuori if del form.
In più, la condizione if
PHP:
if(isset($_POST['trad22']) && !empty($_POST['trad22'])){
è sempre falsa perchè nell'ultimo form i name degli input sono errati.

A parte che tutti quei controlli isset non si sa che ci stanno a fare, per confrontare i valori nella parte constatazione risultati, o passi i valori (vocabolouno/due e traduno/due) tramite form (ad esempio con campi hidden) oppure li salvi in una variabile di sessione.
ma allora come dovrei fare?
 

ImA13programmer

Nuovo Utente
125
0
Prima di tutto quando posti codice, utilizza il tag code (php) come da regolamento.

E' sempre lo stesso errore.. devi spostare la logica al di fuori if del form.
In più, la condizione if
PHP:
if(isset($_POST['trad22']) && !empty($_POST['trad22'])){
è sempre falsa perchè nell'ultimo form i name degli input sono errati.

A parte che tutti quei controlli isset non si sa che ci stanno a fare, per confrontare i valori nella parte constatazione risultati, o passi i valori (vocabolouno/due e traduno/due) tramite form (ad esempio con campi hidden) oppure li salvi in una variabile di sessione.


Ho provato a rifare il codice,aggiungendo un'altra condizione nell'if,cioè,visto che le ho provato quasi tutte,ho provato a fare il !isset ,visto che non erano settate le variabili,ma,una volta inserite le ''soluzioni'',ovvero $trad22 e $trad12, ritorna sempre alla situazone del primo form,ovvero ''Quanti vocaboli desideri imparare?''. Ecco il codice
PHP:
 //ultra conclusione:constatazione risultati
    if(isset($_POST['trad22'],$_POST['trad12'])) {
    $trad22 =$_POST['trad22'];
    $trad12 =$_POST['trad12'];
          if (( !isset($trad22,$trad12) && (!empty($trad22) && !empty($trad12)) && $trad22 !== $traddue2 or $trad12 !== $traduno2)) {
          echo 'Mi dispiace,qualcosa è sbagliato,ricontrolla!Ecco qui ciò che hai scritto!</br >'.
                 $vocabolouno2.'-->'.$traduno2.'-->'.$trad12.'</br >'.
                 $vocabolodue2.'-->'.$traddue2.'-->'.$trad22.'</br >';
               } elseif ($trad22 == $traddue2 && $trad12 == $traduno2) {
                echo 'complimenti,sei riuscito a ricordare 2 vocaboli!';
                 };
    };
};
};

?>
Questo è il codice,spero che tu mi possa aiutare
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
NB. Scritto al volo e non testato!!!

PHP:
<html>
<head></head>
<body>


<form action='' method='post'>
    Decidi,quanti vocali vorresti memorizzare e imparare?
    <input type='text' name='numerovoc'>
</form>



<?php
if(isset($_POST['numerovoc'])) {
    $vocabolinum= $_POST['numerovoc'];
    //da 2

    if (is_numeric($vocabolinum) && $vocabolinum == 2 ) {
        //prossimo echo per i primi vocaboli:creare spazi per form !ricordati di cambiare anche il 2 con la quantità di vocaboli per il numero indicato del form iniziale
        echo '<form action="" method="post">
        Primo vocabolo
        <input type="text" name="vocabolouno2" required>
        <input type="text" name="traduno2" required> </br >
        Secondo vocabolo
        <input type="text" name="vocabolodue2" required>
        <input type="text" name="traddue2" required>
        <input type="submit" value="submit">
        </form>';
    };
};

//settaggio e isset variabili e index :setta le variabili con i name degli input form
if (isset($_POST['vocabolouno2']) && isset($_POST["vocabolodue2"])){
    $vocabolouno2= $_POST["vocabolouno2"];
    $traduno2= $_POST["traduno2"];
    $vocabolodue2= $_POST["vocabolodue2"];
    $traddue2= $_POST["traddue2"];
};

//conclusione:constatare se gli input non sono falsi e creare le textarea per constatare le competenze
if (!empty($traduno2) || !empty($traddue2)) {
    echo '<form action="" method="post">' . $vocabolodue2 .
    '<input type="text" name="trad22"></br >'.$vocabolouno2.
    '<input type="text" name="trad12"></br >
    <input type="hidden" name="vocabolouno2" value="'.$vocabolouno2.'">
    <input type="hidden" name="traduno2" value="'.$traduno2.'">
    <input type="hidden" name="vocabolodue2" value="'.$vocabolodue2.'">
    <input type="hidden" name="traddue2" value="'.$traddue2.'">
    <input type="submit" name="inserisci" value="vedi risultati">
    </form>';
};

if(isset($_POST['trad22']) && isset($_POST['trad12'])){
    //ultra conclusione:constatazione risultati
    $trad22 =$_POST['trad22'];
    $trad12 =$_POST['trad12'];
    if (!empty($trad12) && !empty($trad22)) {
        if ($trad22 !== $traddue2 || $trad12 !== $traduno2) {
            echo 'Mi dispiace,qualcosa è sbagliato,ricontrolla!Ecco qui ciò che hai scritto!</br >'.
            $vocabolouno2.'-->'.$traduno2.'-->'.$trad12.'</br >'.
            $vocabolodue2.'-->'.$traddue2.'-->'.$trad22.'</br >';
        } else {
            echo 'complimenti,sei riuscito a ricordare 2 vocaboli!';
        }
    }
};
?>
</body></html>
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!