Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    aggiornare un carrello elettronico

    salvo in sessione i miei prodotti in questo modo:
    codice:
    Array
    (
        [P8] => Array
            (
                [NUM_PEZZI] => 7
            )
    
        [P6] => Array
            (
                [NUM_PEZZI] => 1
            )
    
        [P10] => Array
            (
                [NUM_PEZZI] => 2
            )
    
        [P5] => Array
            (
                [NUM_PEZZI] => 1
            )
    
    )
    e in un form faccio vedere gli n prodotti con in parte un campo di testo per modificarne la quantità. Alla fine del form c'è il bottone aggiorna i prezzi, che dovrebbe aggiornarmi i campi e mi deve far vedere i prezzi e le quantità aggiornate, ma non ho idea di come operare. I campi quantità si chiamano quantitaP6 (dove naturalmente 6 è l'id del prodotto e cambia di volta in volta).
    Ad aggiornarli uno alla volta sono riuscito, infatti in parte ad ogni text field c'è un link per aggiornare quella determinata quantità, ma se li devo aggiornare tutti in un colpo solo come posso fare?





    grazie molte!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    up
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    di solito io metto in sessione gli articoli separati:

    codice:
    Array
    (
        [P8] => Array
            (
                [NUM_PEZZI] => 7
                [PREZZO] => 10.00
                [CODICE] => AB-02
            )
        [P8] => Array
            (
                [NUM_PEZZI] => 2
                [PREZZO] => 10.00
                [CODICE] => AB-03
            )
    
    )
    Poi fai ciclare l'array prendendo le quantita e ricalcolando tutto...

    Forse questo metodo ti permette + elasticità, o forse è solo questione di abitudine...


  4. #4
    vi dico intanto come sono riuscito a fare io, ma la soluzione non mi sembra molto ottimale.

    praticamente il form con i prodotti viene fatto scrivere tramite un ciclo che mi scorre l'array di sessione, una cosa del genere foreach ($newarr as $key=>$value) all'interno del quale scrivo riga per riga, tutti i prodotti del carrello e un campo di testo quantità.

    All'interno dello stesso ciclo ho piazzato queste righe:
    codice:
    <?php
    if (isset($_POST["quantita$key"]) && $_POST["quantita$key"]!=$newarr[$key]["NUM_PEZZI"]){
    	$carrello->updateQuantity( $key, $_POST["quantita$key"] );
    	?>
    	<script type="text/javascript">
    	document.getElementById('f').submit();
    	</script>
    	<?php
    }
    ?>
    dove praticamente confronto la quantità che sta nella sessione con quella che viene passata dal POST del form e se queste risultano diverse provvedo ad aggiornarle. Per far si che si veda l'aggiornamento devo però ricaricare la pagina, ecco il perché di quelle righe di js.

    ho fatto una prova ed anche con una 30ina di prodotti non vado mai sopra il decimo di secondo per aggiornare la pagina. Però il fatto di fare il confronto e poi aggiornare mi sembra un po' macchinoso.

    mi è stato suggerito di aggiornare una volta all'inizio senza stare a fare nessun confronto...però pensavo che in questo caso se uno ha 50 prodotti e ne vuole aggiornare solo 1 perde un sacco di tempo.


    voi avete qualcosa da suggerirmi?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Originariamente inviato da gianiaz
    di solito io metto in sessione gli articoli separati:

    ...

    Poi fai ciclare l'array prendendo le quantita e ricalcolando tutto...

    Forse questo metodo ti permette + elasticità, o forse è solo questione di abitudine...

    grazie per la risposta...
    l'ho vista solo ora! però non mi risulta chiara una cosa, cioè: anche io ho i prodotti separati come si vede nel primo post, ma non capisco la storia del ciclare che mi hai accennato. Dovrei ciclare tutto l'array di volta in volta e aggiornare tutto? dici che non sia dispendioso in termini di tempo?




    grazie ancora
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da 13manuel84
    grazie per la risposta...
    l'ho vista solo ora! però non mi risulta chiara una cosa, cioè: anche io ho i prodotti separati come si vede nel primo post, ma non capisco la storia del ciclare che mi hai accennato. Dovrei ciclare tutto l'array di volta in volta e aggiornare tutto? dici che non sia dispendioso in termini di tempo?

    grazie ancora
    Non credo, anche perchè altri metodi non ce ne sono...

    Forse puoi accorciare un po' i tempi usando un ciclo for anzichè un foreach (che appunto è + lento perchè ogni volta crea una copia dell'array in memoria).

    ciao

  7. #7
    ok! allora ho fatto come mi hai suggerito e ho visto che anche aggiornando tutti i prodotti nel carrello il tempo totale di elaborazione e caricamento risulta decisamente minore di quello che avevo utilizzando il mio metodo, quindi direi che è perfetto.

    Proverò ad utlizzare un for allora, non sapevo di questa differenza di tempo tra for e foreach.


    grazie! ciauzz
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    ah, solo una domanda ancora se posso


    sto andando in palla per capire come posso fare a scorrere quell'array con un for, visto che le chiavi che ho non sono numeriche ma sono tipo P1, P7, P3

    hanno un suffisso più l'id del prodotto :master:
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non puoi usare chiavi numeriche?

    altrimenti credo che comunque questo sia + veloce (ma non ne sono sicuro):

    codice:
     while( list($chiave, $valore) = each($array) ) {
    ciao

  10. #10
    per scorrere un array il piu' veloce e' il foreach. Si erano fatte prove tempo fa al proposito ed il foreach e' risultato sempre il piu' rapido di tutti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.