• User Attivo

    unset() non funziona!

    Ciao a tutti voi gentili colleghi,
    premetto che sto lavorando in abinente di sviluppo in ambiente Windows Vista.
    Sto tentando di implementare una funzionalità da utilizzare in un modulo d'ordine in PHP.
    L'intenzione, in questo caso, è di stampare nella pagina due campi text adiacenti il primo contiene il valore di una taglia e il secondo deve consentire di specificarne la rispettiva quantità.
    Ho due difficoltà:

    1. Stampare, per ogni riga, il campo text per la Taglia e rispettivo valore e il campo text per la rispettiva Quantità da ogni selezione nel campo select sottostante alla prima riga stampata nella pagina.

    2. Nel contempo che clicko su Vai (input submit) l'array dovrebbe essere aggiornato per eliminare la Taglia che ho già utilizzato.

    Con lo script seguente riesco solo a modificare il valore della Taglia mentre unset() non lavora e quindi non aggiorna l'array.

    [PHP]
    <body>
    <?php
    $dettagli = array ("S", "M", "L", "XL", "XXL"); <--- Valori iniziali
    global $dettagli;
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <?php
    if (isset($_POST['dettaglio']))
    {
    $det = $_POST['dettaglio'];

    setcookie("dettaglio", $det);

    echo "<p><input type="text" value="".$_POST['dettaglio']."" size="3" /> ";
    echo "Quantità <input type="text" value="" size="6" /></p>";

    if (!in_array($_COOKIE['dettaglio'], $dettagli))
    {
    $detadesso = $_COOKIE['dettaglio'];
    unset($detadesso);
    }
    }

    ?>
    <p><select size="1" name="dettaglio">
    <option value="">Scegli ...</option>
    <?php
    $x = 0;

    while ( $x < sizeof ($dettagli) )
    {
    print "<option value='$dettagli[$x]'>$dettagli[$x]</option>";
    $x++;
    }
    ?>
    </select></p>

    <input type="submit" value="Vai!">
    </form>
    </body>
    [/PHP]

    Forse devo utilizzare count () invece di sizeof ()?


  • Admin

    Ciao antoniog2,

    Il cookie dove lo setti?
    Hai provato a controllare che i vari valori esistano?


  • User Attivo

    1 - sizeof() e count() in PHP sono equivalenti
    2 - a cosa serve fare l'unset() di una variabile appena assegnata?
    3 - se all'inizio dello script gli assegni sempre l'array pieno è normale che non rimuova mai

    Io direi di affidare all'array di sessione gli elementi rimossi, e di visualizzare un array_diff() tra tutte le taglie e quelle in sessione.