Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    19

    Errore 'undefined index'

    Ciao a tutti. Sono nuovo del forum e sto studiando da poco PHP. Ho un problema con un esercizio.
    Il testo dell'esercizio è il seguente:
    Crea un form che mostri i piatti ordinabili in un ipotetico ristorante online. Il menu contiene antipasti, primi, secondi, contorni e bevande. A seconda
    della scelta effettuata, deve mostrare il prezzo complessivo utilizzando la tecnica postback.

    il mio script è il seguente:
    <!DOCTYPE html>
    <html>
    <head>
    <title> Ristorante </title>
    </head>
    <body style="text-align: center; background-color: #000080; color: white;">
    <h1>Menu</h1>
    <hr/>
    <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">

    <h2>Antipasti</h2>
    <select name="antipasti">
    <option value="salumi" name="salumi">Salumi</option>
    <option value="formaggi" name="formaggi">Formaggi</option>
    </select>
    <br/>

    <h2>Primi</h2>
    <select name="primi">
    <option value="agloli" name="agloli">Spaghetti aglio olio</option>
    <option value="carbo">Spaghetti alla carbonara</option>
    </select>
    <br/>

    <h2>Secondi</h2>
    <select name="secondi">
    <option value="filetto">Filetto alla griglia</option>
    <option value="cozze">Zuppa di cozze</option>
    </select>
    <br/>

    <h2>Contorni</h2>
    <select name="contorni">
    <option value="insalata">Insalata</option>
    <option value="patate">Patate al forno</option>
    </select>
    <br/>

    <h2>Bevande</h2>
    <select name="bevande">
    <option value="acqua">Acqua</option>
    <option value="vino">Vino</option>
    </select>

    <p><input type="submit" name="invio" value="Invia"/>
    <input type="reset" name="annulla" value="Cancella"/>
    </form>
    <?php
    /*
    Autore: Vincenzo Iannucci
    Data: 09/12/2018
    Titolo: Crea un form che mostri i piatti ordinabili in un ipotetico ristorante
    online. Il menu contiene antipasti, primi, secondi, contorni e bevande. A seconda
    della scelta effettuata, deve mostrare il prezzo complessivo utilizzando la tecnica
    postback.
    */
    if(isset($_POST["invio"]))
    {
    //antipasti
    $antipasti = $_POST["antipasti"];
    $ap1 = $_POST["ap1"];
    $ap2 = $_POST["ap2"];
    //primi
    $primi = $_POST["primi"];
    $p1 = $_POST["agloli"];
    $p2 = $_POST["carbo"];
    //secondi
    $secondi = $_POST["secondi"];
    $s1 = $_POST["filetto"];
    $s2 = $_POST["cozze"];
    //contorni
    $contorni = $_POST["contorni"];
    $c1 = $_POST["insalata"];
    $c2 = $_POST["patate"];
    //bevande
    $bevande = $_POST["bevande"];
    $b1 = $_POST["acqua"];
    $b2 = $_POST["vino"];

    $listinoAntipasti = array($ap1 => 10.50, $ap2 => 11.50);
    $listinoPrimi = array($p1 => 10.50, $p2 => 10);
    $listinoSecondi = array($s1 => 12.50, $s2 => 12);
    $listinoContorni = array($c1 => 5.50, $c2 => 5);
    $listinoBevande = array($b1 => 1, $b2 => 15.50);

    $tot = 0;

    for ($i = 0; $i < 2; $i++)
    {
    if ($antipasti == $listinoAntipasti[$i]) {
    $tot += $listinoAntipasti[$i];
    }
    else if ($primi == $listinoPrimi[$i]) {
    $tot += $listinoPrimi[$i];
    }
    else if ($secondi == $listinoSecondi[$i]) {
    $tot += $listinoSecondi[$i];
    }
    else if ($contorni == $listinoContorni[$i]) {
    $tot += $listinoContorni[$i];
    }
    else if($bevande == $listinoBevande[$i]) {
    $tot += $listinoBevande[$i];
    }
    }

    echo "Totale: $tot";
    }

    ?>
    </body>
    </html>

    Vorrei sapere perchè mi da i seguenti errori:

    Notice: Undefined index: ap1 in C:\xampp\htdocs\PHP\ristorante.php on line 61

    Notice: Undefined index: ap2 in C:\xampp\htdocs\PHP\ristorante.php on line 62

    Notice: Undefined index: agloli in C:\xampp\htdocs\PHP\ristorante.php on line 65

    Notice: Undefined index: carbo in C:\xampp\htdocs\PHP\ristorante.php on line 66

    Notice: Undefined index: filetto in C:\xampp\htdocs\PHP\ristorante.php on line 69

    Notice: Undefined index: cozze in C:\xampp\htdocs\PHP\ristorante.php on line 70

    Notice: Undefined index: insalata in C:\xampp\htdocs\PHP\ristorante.php on line 73

    Notice: Undefined index: patate in C:\xampp\htdocs\PHP\ristorante.php on line 74

    Notice: Undefined index: acqua in C:\xampp\htdocs\PHP\ristorante.php on line 77

    Notice: Undefined index: vino in C:\xampp\htdocs\PHP\ristorante.php on line 78

    Notice: Undefined offset: 0 in C:\xampp\htdocs\PHP\ristorante.php on line 90

    Notice: Undefined offset: 0 in C:\xampp\htdocs\PHP\ristorante.php on line 93

    Notice: Undefined offset: 0 in C:\xampp\htdocs\PHP\ristorante.php on line 96

    Notice: Undefined offset: 0 in C:\xampp\htdocs\PHP\ristorante.php on line 99

    Notice: Undefined offset: 0 in C:\xampp\htdocs\PHP\ristorante.php on line 102

    Notice: Undefined offset: 1 in C:\xampp\htdocs\PHP\ristorante.php on line 90

    Notice: Undefined offset: 1 in C:\xampp\htdocs\PHP\ristorante.php on line 93

    Notice: Undefined offset: 1 in C:\xampp\htdocs\PHP\ristorante.php on line 96

    Notice: Undefined offset: 1 in C:\xampp\htdocs\PHP\ristorante.php on line 99

    Notice: Undefined offset: 1 in C:\xampp\htdocs\PHP\ristorante.php on line 102
    Totale: 0

    Grazie anticipatamente per le risposte!!

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,551
    Stai facendo un po' di confusione con la select: una volta fatto il post, avrai su $_POST un elemento con chiave pari al name della select e di valore pari al value della option selezionata. Quindi ad esempio nella select name="primi", avrai solo $_POST['primi'], che contrerrà "carbo" o "agloli".
    Di conseguenza non esisteranno chiavi come "carbo" o "agloli".

    Per quanto riguarda gli array $listino, tu crei degli array associativi e quindi non hanno chiave numerica (inoltre metti chiavi che non esistono, quindi non se effettivamente ti vengono creati gli elementi) con cui scorrere con il ciclo.
    Tra l'altro potresti anche fare a meno di scorrere l'array, perchè il valore del post è la tua chiave nell'array:
    Codice PHP:
    $listinoPrimi = array('carbo' => 10.5'agloli' => 10);
    $primo $_POST['primi'];
    $prezzo $listinoPrimo[$primo];
    // Dovresti comunque fare dei controlli su $primo 

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.