Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    aiuto su session ed array multidimensionali

    Salve a tutti, vi chiedo un aiuto per uno script in php che sto realizzando cercando di illustrarvi al meglio il mio problema. Premettendo che sono sempre stato abituato a fare questo genere di script in JSP con dei Vector mi è sorta la necessità di realizzarne uno in PHP e forse il mio errore dipende dal non aver capito bene alcune funzioni basilari.
    In pratica necessito di realizzare un form per una sorta di sito di E-Commerce. Questo form prevede un modulo entro il quale si inseriscano tre dati "id", "descrizione", "quantità" di un determinato articolo (non ho il problema di avere dati pescati da mysql perchè i cataloghi da cui vengono presi sono cartacei). Ho creato un form che ogni volta che si inserisce uno di questi tre articoli, ricarica la pagina e riporta gli articoli dentro una tabella sotto il form di inserimento.
    Per fare ciò ho pensato di inserire gli articoli in un array multidimensionale che rimanesse salvato all'interno di un $_SESSION. E qui inizia il problema poichè il codice che riceve la POST e la salva dentro un SESSION è la seguente:

    <?
    //Inizializzazione e controllo della sessione
    session_start();

    //verifica il caso in cui SESSION non esiste
    if (isset($_SESSION['prodotti'],$_SESSION['count'])){
    echo "1";
    if(isset($_POST['idart'],$_POST['desc'],$_POST['tot'])){
    echo "2";
    $contatore = $_SESSION['count'];
    $_SESSION['prodotti'] = array($contatore => array(0 => $_POST['idart'],
    1 => $_POST['desc'],
    2 => $_POST['tot'])
    );
    $_SESSION['count'] = $contatore + 1;
    }
    } else {
    echo "3";
    if(isset($_POST['idart'],$_POST['desc'],$_POST['tot'])){
    echo "4";
    $_SESSION['prodotti'] = array(0 => array(0 => $_POST['idart'],
    1 => $_POST['desc'],
    2 => $_POST['tot'])
    );
    $_SESSION['count'] = 1;
    }
    }
    ?>

    Per intenderci quando viene aperta la pagina si passa al caso chiamato "3" che si limita ad intercettare la mancata esistenza della SESSION e va oltre.
    Inserito il primo dato si passa ad echo "4" che inserisce il primo gruppo di valori in un array multidimensionale. Mi trascino dietro una variabile di contatore che mi servirà nel forum sotto nel caso decida di cancellare un elemento dell'array.
    A questo punto iniziano i problemi perchè il codice relativo ad echo "2" è errato ma per correggerlo necessito di capire alcune cose. Attualmente il codice sovrascrive il mio array[0] con un array[1] e quando sotto apro il ciclo for per richiamare gli elementi, lui mi segnala che il valore array[0] non esiste e si blocca.
    Devo cercare di capire come poter fare una sorta di APPEND all'array $_SESSION['prodotti] in modo che poi alla fine con un ciclo for possa richiamare tutti gli elementi e nello stesso tempo se mi necessita, eliminarne.
    Spero di essermi spiegato il meglio possibile, qualcuno riesce a schiarirmi le idee?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    una cosa dei capire lavorando con le sessioni:
    se vuoi lavorare o cambiare il valore della variabile di sessione devi prima memorizzare la sessione in una variabile

    $a1=$_SESSION['prodotti'];
    $a1=array(0 => array(0 => $_POST['idart'],1 => $_POST['desc'],
    2 => $_POST['tot'])
    );

    in questo modo puoi lavorare col la sessione

  3. #3
    Ok, questa era una cosa che non sapevo quindi ho rimodificato il mio script come da te suggerito. Però concettualmente come è strutturata la mia sessione è corretto? Nel senso che non riesco a capire se la variabile $_SESSION['prodotti'] che a tutti gli effetti è un Array, possa essere anche un array multidimensionale.
    Quindi mi conviene percorrere questa strada oppure optare a creare uno script che crei invece 1 array di prodotti per ogni singolo campo di sessione, ovvero $_SESSION['prodotti1'], $_SESSION['prodotti2'], $_SESSION['prodotti3'], etc. ?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    puoi fare in questo modo:




    $a1=$_SESSION['prodotti'];
    $a1=array(
    array($_POST['idart']);
    array( $_POST['desc']);
    array($_POST['tot']);
    );
    in questo modo qui ogni sessione di prodotto conterra un arrai per idart desc e tot
    alla fine ricordati di registrare l'array in una sessione

  5. #5
    Ci sono quasi, un ultima domanda (spero sia l'ultima ad ogni modo ti ringrazio davvero per la tua disponibilità): per aggiungere la mia seconda tornata di dati all'array come devo fare? Perchè l'esempio che tu mi hai fornito serve per inserire i dati la prima volta, ma per aggiungere i dati al mio ipotetico $a1 che già contiene l'array precedente come si procede? In php non esiste un comando tipo $a1.append() ma non ho trovato un sistema valido se non qualcosa che poi mi cancelli i dati che ho già inserito.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    se questo è l'array

    $a1=$_SESSION['prodotti'];
    $a1=array(
    array($_POST['idart']);
    array( $_POST['desc']);
    array($_POST['tot']);
    );


    per inserire i vari valori fdai

    $a1[0][0]=nuovo valore_idart

    $a1[1][0]=nuovo valore_desc

    $a1[2][0]=nuovo valore_tot


    Per cancellare il valore esiste un modo semplice


    $a1[0][0]="";

    $a1[1][0]="";

    $a1[2][0]="";


    spero di essere stato cristallino.
    se hai bisogno non esitare vestini.gilda@libero.it

  7. #7
    Perfetto ed anche lo script è perfettamente funzionante. Grazie mille dell'aiuto.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.