PROBLEMA PHP

killon

Utente Attivo
248
17
CPU
i36100
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
WIndows 10 64 bit
Salve a tutti,
Dovrei fare un programma che calcola la media, dopo aver inserito più voti, di più materie, ora il mio problema è il seguente: dovrei realizzare un array multidimensionale, ma con i valori inseriti dagli utenti, non con valori già prefissati, non so come si possa fare, chiedo se gentilmente riuscireste a spiegarmelo. Grazie per eventuali risposte
 

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
Salve a tutti,
Dovrei fare un programma che calcola la media, dopo aver inserito più voti, di più materie, ora il mio problema è il seguente: dovrei realizzare un array multidimensionale, ma con i valori inseriti dagli utenti, non con valori già prefissati, non so come si possa fare, chiedo se gentilmente riuscireste a spiegarmelo. Grazie per eventuali risposte

Un modo per creare un array multidimensionale è quello di utilizzare un form impostando i field come parte di un array:
PHP:
<?php
    var_dump($_POST);
    $nomeutente = 'utente1';
    $numValori = 10;
?>
<form action="" method="POST">

     <?php
        for ($i=0; $i <= $numValori; $i++) {
            echo '<input type="text" name="'.$nomeutente.'['.$i.']"><br>';
        }
     ?>
     <input type="submit" value="Send">
</form>

Risultato:
Schermata del 2017-12-06 15:44:32.png
 

killon

Utente Attivo
248
17
CPU
i36100
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
WIndows 10 64 bit
Un modo per creare un array multidimensionale è quello di utilizzare un form impostando i field come parte di un array:
PHP:
<?php
    var_dump($_POST);
    $nomeutente = 'utente1';
    $numValori = 10;
?>
<form action="" method="POST">

     <?php
        for ($i=0; $i <= $numValori; $i++) {
            echo '<input type="text" name="'.$nomeutente.'['.$i.']"><br>';
        }
     ?>
     <input type="submit" value="Send">
</form>

Risultato:
Visualizza allegato 272912
allora, dopo aver fatto un po di tentativi sono arrivato a questo punto, il calcolo della media lo farò successivamente in un php a parte, mi domando solamente cosa sia sbagliato, non riesco a gestire la matrice, credo di averla impostata male, grazie per le risposte comunque :)
 

Allegati

  • progetto.txt
    2.2 KB · Visualizzazioni: 36

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 aggiungere valori agli array è conveniente utilizzare la funzione array_push().

Ti ho aggiornato il codice:
PHP:
<html>
<body>
<?php
    session_start();

    if(    $_SERVER["REQUEST_METHOD"]=="POST") {
        $materie = array(
                "italiano" => array(),
                "storia" => array(),
                "matematica" =>array(),
                "informatica" => array(),
                "inglese" => array()
            );

        if (isset($_SESSION["materie"])) {
            $materie = $_SESSION["materie"];
        }

        switch ($_POST["materia"]) {
            case "italiano":
                array_push($materie['italiano'], $_POST["voto"]);
                break;
            case "storia":
                array_push($materie['storia'], $_POST["voto"]);
                break;
            case "matematica":
                array_push($materie['matematica'], $_POST["voto"]);
                break;
            case "informatica":
                array_push($materie['informatica'], $_POST["voto"]);
                break;
            case "inglese":
                array_push($materie['inglese'], $_POST["voto"]);
                break;
        }

        $_SESSION["materie"] = $materie;
    }
?>
<form method="post">
     Materia:
     <select name="materia">
        <option value="italiano">italiano</option>
        <option value="storia">storia</option>
        <option value="matematica">matematica</option>
        <option value="informatica">informatica</option>
        <option value="inglese">inglese</option>
    </select>
    Voto:
    <input type="number" name="voto" ><br><br>
    <input type="submit" name="submit" value="invio"><br><br>
    <a href="media.php">Clica qui per fare la media dei voti</a>
</form>
<?php
    if(    $_SERVER["REQUEST_METHOD"]=="POST")    {
        switch ($_POST["materia"]) {
            case "italiano":
                echo "Il voto registrato nella materia italiano è ".$_POST["voto"];
                break;
            case "storia":
                echo "Il voto registrato nella materia storia è ".$_POST["voto"];
                break;
            case "matematica":
                echo "Il voto registrato nella materia matematica è ".$_POST["voto"];
                break;
            case "informatica":
                echo "Il voto registrato nella materia informatica è ".$_POST["voto"];
                break;
            case "inglese":
                echo "Il voto registrato nella materia inglese è ".$_POST["voto"];
                break;
            default:
                    echo "";
        }
    }

?>

</body>
</html>
 
  • Mi piace
Reazioni: killon

killon

Utente Attivo
248
17
CPU
i36100
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
WIndows 10 64 bit
Per aggiungere valori agli array è conveniente utilizzare la funzione array_push().

Ti ho aggiornato il codice:
PHP:
<html>
<body>
<?php
    session_start();

    if(    $_SERVER["REQUEST_METHOD"]=="POST") {
        $materie = array(
                "italiano" => array(),
                "storia" => array(),
                "matematica" =>array(),
                "informatica" => array(),
                "inglese" => array()
            );

        if (isset($_SESSION["materie"])) {
            $materie = $_SESSION["materie"];
        }

        switch ($_POST["materia"]) {
            case "italiano":
                array_push($materie['italiano'], $_POST["voto"]);
                break;
            case "storia":
                array_push($materie['storia'], $_POST["voto"]);
                break;
            case "matematica":
                array_push($materie['matematica'], $_POST["voto"]);
                break;
            case "informatica":
                array_push($materie['informatica'], $_POST["voto"]);
                break;
            case "inglese":
                array_push($materie['inglese'], $_POST["voto"]);
                break;
        }

        $_SESSION["materie"] = $materie;
    }
?>
<form method="post">
     Materia:
     <select name="materia">
        <option value="italiano">italiano</option>
        <option value="storia">storia</option>
        <option value="matematica">matematica</option>
        <option value="informatica">informatica</option>
        <option value="inglese">inglese</option>
    </select>
    Voto:
    <input type="number" name="voto" ><br><br>
    <input type="submit" name="submit" value="invio"><br><br>
    <a href="media.php">Clica qui per fare la media dei voti</a>
</form>
<?php
    if(    $_SERVER["REQUEST_METHOD"]=="POST")    {
        switch ($_POST["materia"]) {
            case "italiano":
                echo "Il voto registrato nella materia italiano è ".$_POST["voto"];
                break;
            case "storia":
                echo "Il voto registrato nella materia storia è ".$_POST["voto"];
                break;
            case "matematica":
                echo "Il voto registrato nella materia matematica è ".$_POST["voto"];
                break;
            case "informatica":
                echo "Il voto registrato nella materia informatica è ".$_POST["voto"];
                break;
            case "inglese":
                echo "Il voto registrato nella materia inglese è ".$_POST["voto"];
                break;
            default:
                    echo "";
        }
    }

?>

</body>
</html>
ti ringrazio tantissimo, è più di una volta che rispondi sempre alle mie domande, te ne sono davvero grato, grazie mille
 
  • Mi piace
Reazioni: cdtux

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili