stampa array

Ciao a tutti, avrei ancora una domanda.

provo a stampare il risultato di 2 array su di una singola riga usando questa istruzione

else

{

foreach($_SESSION['cart'] as $array_articoli){

foreach($array_articoli as $v);

foreach($_SESSION['quantity'] as $array_qta){

foreach($array_qta as $valore) echo " $v  " , " $valore  \n"; 

}}}

però anzicchè stampare un solo valore per riga mi manda in stampa questa sequenza:

CASSETTO INOX FIORE 1000   2 

CASSETTO INOX FIORE 1000   5 

CASSETTO TERMOPLASTICA   2 

CASSETTO TERMOPLASTICA   5

io ho inviato solo 1 cassetto per tipo  ed una quantità per tipo.

posso porre rimedio in qualche modo oppure devo necessariamente separe l'istruzione per avere la riga completa

CASSETTO INOX FIORE 1000   2

CASSETTO TERMOPLASTICA   5

spero di essere stato chiaro  ???

grazie per la risposta.

inviato 10 anni fa
aldebaran
X 0 X

Credo di essere stato chiaro come un libro a cui mancano le pagine, per cui ho fatto delle modifiche e quello che segue è il codice.

riesco a visualizzare entrambe le variabili assieme ( cassetto 1000 x 500 1)

però ne visualizzo solo una anche se la variabile ne contiene di più.

<?php

session_start();

if (!isset($_SESSION['carrello'])){

$_SESSION['carrello']= array();

}

?>

<?php

print("ID: " . session_id() . "<br>\n");

?>

</p>

<form id="form1" name="form1" method="post" action="memorizzo.php">

<label>

<input name="codice[]" type="text" value="CASSETTO 1000x500" size="50" />

<input name="quantita[]" type="text" value="" size="5" />

</label>

<label>

<input type="submit" name="Submit" value="Submit" />

</label>

</form>

<form id="form2" name="form2" method="post" action="memorizzo.php">

<label>

<input name="codice[]" type="text" value="CASSETTO 1000x600" size="50" />

<input name="quantita[]" type="text" value="" size="5" />

</label>

<label>

<input type="submit" name="Submit2" value="Submit" />

</label>

</form>

<p><a href="carrello.php">carrello </a></p>

<p> Il tuo carrello contiene <?php echo count($_SESSION['carrello']); ?> articoli.</p>

</body>

</html>

<?php

session_start();

if (!isset($_SESSION['carrello'])) {

$_SESSION['carello'] = array();

}

$_SESSION['carrello'][]=array($_POST['codice'],$_POST['quantita']);

header("Location: index.php");

?>

<?php

session_start();

?>

<body>

<form id="form1" name="form1" method="post" action="">

<label>

<textarea name="textarea" cols="80" rows="10"><?php

if ($_SESSION['carrello'] == 0)

{

print "Il tuo carrello è vuoto";

}

else

{

foreach($_SESSION['carrello'] as $array_articoli);{

foreach($array_articoli as $val){

foreach($val as $chiave)

echo " $chiave \n";

}}}

?>

</textarea>

</label>

</form>

Potete aituarmi anche questa volta??

Grazie

 ::)

risposto 10 anni fa
aldebaran
X 0 X

Togli:

foreach($_SESSION['carrello'] as $array_articoli);{
foreach($array_articoli as $val){
foreach($val as $chiave)
echo " $chiave \n";
}}

e prova con:

foreach($_SESSION['carrello'] as $articolo)
{
   echo $articolo['codice'] . " " . $articolo['quantita'];
}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao

ho provato come hai scritto però mi dice che l'indice codice e quello quantità sono indefiniti, devo modificare anche qualche altra riga?

In ogni caso grazie :)

risposto 10 anni fa
aldebaran
X 0 X

Mi sembra strano, quei due indici gli ho recuperati guardando l'istruzione che salva in sessione i dati del prodotto selezionato:

$_SESSION['carrello'][]=array($_POST['codice'],$_POST['quantita']);

se fai un print_r($_SESSION); cosa ottieni?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La risposta del print_r è corretta.

In effetti non riesco a spiegarmi come mai mi dica che gli indici sono sconoscitui quando,tra l'altro, nella parte di codice che mi dice quanti articoli ho nel carrello, il numero è esatto quindi gli indici sono esistenti.

Qui di seguito cosa stampa print_r.

  Array

(

    [carrello] => Array

        (

            [0] => Array

                (

                    [0] => Array

                        (

                            [0] => CASSETTO 1000x500

                        )

                    [1] => Array

                        (

                            [0] => 1

                        )

                )

            [1] => Array

                (

                    [0] => Array

                        (

                            [0] => CASSETTO 1000x600

                        )

                    [1] => Array

                        (

                            [0] => 3

                        )

                )

        )

)

Spero tanto tu riesca a capirci qualche cosa, io se non fossi quasi calvo mmi strapperei capelli dalla disperazione.  :)

risposto 10 anni fa
aldebaran
X 0 X

Il problema è causato dall'organizzazione dei form. Per una soluzione immediata prova a cambiare i nomi dei campi input da codice[] e quantita[] a codice e quantita

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Purtroppo neanche così cambia.

Io nel frattempo ho provato in un altro modo e riesco a vedere gli articoli e le quantità ma con il raddoppio, ossia:

CASSETTO INOX FIORE 1000   1 

CASSETTO INOX FIORE 1000   2 

CASSETTO INOX FIORE 1000   5 

CASSETTO TERMOPLASTICA   1 

CASSETTO TERMOPLASTICA   2 

CASSETTO TERMOPLASTICA   5 

CASSETTO INOX  1000x5000   1 

CASSETTO INOX  1000x5000   2 

CASSETTO INOX  1000x5000   5 

ovviamente io ho inserito 1 pezzo del primo 2 del secondo e 5 del terzo articolo.

Le righe sono quelle che seguono

PRODOTTO

<?php

session_start();

if (!isset($_SESSION['cart'])) {

$_SESSION['cart'] = array();

}

if (!isset($_SESSION['quantity'])) {

$_SESSION['quantity'] = array();

}

?>

<?php

print("ID: " . session_id() . "<br>\n");

?>

</p>

<form id="form1" name="form1" method="post" action="memorizzo.php">

<label>

<input name="codice[]" type="text" value="CASSETTO INOX FIORE 1000" size="50" />

<input name="quantita[]" type="text" value="" size="5" />

</label>

<label>

<input type="submit" name="Submit" value="Submit" />

</label>

</form>

<form id="form2" name="form2" method="post" action="memorizzo.php">

<label>

<input name="codice[]" type="text" value="CASSETTO TERMOPLASTICA" size="50" />

<input name="quantita[]" type="text" value="" size="5" />

</label>

<label>

<input type="submit" name="Submit2" value="Submit" />

</label>

</form>

MEMORIZZO

session_start();

if (!isset($_SESSION['cart'])) {

$_SESSION['cart'] = array();

}

if (!isset($_SESSION['quantity'])) {

$_SESSION['quantity'] = array();

}

$_SESSION['cart'][] = $_POST['codice'];

$_SESSION['quantity'][] = $_POST['quantita'];

header("Location: index.php");

?>

CARRELLO

<form id="form1" name="form1" method="post" action="">

  <label>

  <textarea name="textarea" cols="80" rows="10"><?php

if ($_SESSION['cart'] == 0)

{

print "Il tuo carrello è vuoto";

}

else

{

foreach($_SESSION['cart'] as $array_articoli){

foreach($array_articoli as $v);

foreach($_SESSION['quantity'] as $array_qta){

foreach($array_qta as $valore) echo " $v  " . " $valore  \n"; 

}}}

?>

</textarea>

</label>

</form>

Ho provato  eliminando anche in questo caso le parentesi quadre all'interno dei forms come mi hai suggerito.

Mi sai dire qualche cosa? :)

In ogni caso grazie sei gentilissimo.

risposto 10 anni fa
aldebaran
X 0 X

le parentesi quadre nel tuo caso non servono, anzi complicano la cosa perché fanno si che la variabile $_POST['codice'] diventa un array e non un semplice valore.

Le parentesi quadre nei nomi dei campi di un form si usano quando nello stesso form hai più campi con lo stesso nome. Allora dovendo gestire diversi valori associati ad uno stesso nome le parentesi organizzano il tutto in un array. Ma tu non hai questa esigienza.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda