Newsgroup: it.comp.www.php
Titolo: X Marco Napolitano

Ciao, scusa se ti disturbo ma ho visto in un tuo post una cosa che vorrei
realizzare pure io.(il carrello della spesa).
Io Ho realizzato questo codice per visualizzare i prodotti
     <?php
 $comic=array(array("Articolo"=> "xxxxx",
                   "Titolo"=>"tit.xxxx",
                "Prezzo"=>totx,
       "Id"=>"DD01"),
                array("Articolo"=>"yyyyyy",
                   "Titolo"=>"tit.yyyyyy",
             "Prezzo"=>toty,
       "Id"=>"DD02"),
ecc. ecc.
    echo '<table border=1 width=80% border=1 bordercolor=#000000>';
                echo '<tr>';
    echo '<td><b>Immagine</b></td>';
                echo '<td><b>Articolo</b></td>';
                echo '<td><b>Titolo</b></td>';
                echo '<td><b>Prezzo</b></td>';
    echo '<td><b>Ordinazione</b></td>';
                echo'</tr>';
      for($i=0; $i<4; $i=$i+1)
                       {
                echo '<tr>';
    echo '<form action="carrello.php" method="POST">';
                echo '<td>'.$comic[$i]["Articolo"].'</td>';
                echo '<td>'.$comic[$i]["Titolo"].'</td>';
                echo '<td>'.$comic[$i]["Prezzo"].'</td>';
    echo '<input type="hidden" name="Id" value="'.$comic[$i]["Id"].'">';
    echo '<input type="hidden" name="Articolo"
value="'.$comic[$i]["Articolo"].'">';
    echo '<input type="hidden" name="Prezzo"
value="'.$comic[$i]["Prezzo"].'">';
    echo '<td><div align="center"><input type="submit"></div></td>';
    echo '</form>';
                echo'</tr>';
                       }
                echo '</table>';
        ?>
e questo per gli acquisti:
   <?php
    echo '<strong>I SUOI ACQUISTI: </strong><p></p>';
 echo '<table border=1 width=70% border=1 bordercolor=#000000>';
                echo '<tr>';
                echo '<td><b>Articolo</b></td>';
                echo '<td><b>Id</b></td>';
                echo '<td><b>Prezzo</b></td>';
                echo'</tr>';
 {
    echo '<tr>';
 echo '<td>';
 echo $_POST['Articolo'];
 echo '</td>';
 echo '<td>';
 echo $_POST['Id'];
 echo'</td>';
 echo '<td>';
 echo $_POST['Prezzo'];
 echo'</td>';
 echo'</tr>';
                       }
                echo '</table>';
  ?>
Ora come applico le sessioni qua sopra? Io ho provato( è un mese che
provo )ma non funziona niente anzi vengono fuori delle cose mostruose.
Avresti voglia di darmi una mano?
Ti ringrazio in anticipo, ciao

 realizzare pure io.(il carrello della spesa).
Se nessuno mi batte sul tempo, domattina ti spiego tutto.
Intanto mi leggo il tuo codice.
Ciao
Marco

Ok, ho letto il tuo codice. Ma non ho ben capito il funzionamento.
O meglio, l'ho capito ma non mi è chiaro il senso.
Dunque, tu crei la variabile $comic che è un array contenente tutti gli
articoli.
Ogni articolo è a sua volta un array contenente tutti i dettagli
dell'articolo.
Quindi $comic è un array di array.
Ora, da dove spunta $comic? Cosa rappresenta? Come fai a riempirlo?
Di certo non lo creerai a mano, spero. Illuminami.
Vabbè, poi fai la tabella che visualizza il contenuto di $comic.
Ogni articolo è legato ad un form che punta a carrello.php.
Quindi $comic è il tuo listino? E quindi il form rappresenta l'inserimento
di un articolo nel carrello?
Infine, fai la pagina degli acquisti.
Che in realtà è inutile perchè non fa altro che visualizzare i dati passati
dal form.
Ti ricordo che la piattaforma web non ha stato, quindi sei tu che te lo devi
creare con cookie, sessioni, ecc...
Tu visualizzi solo i dati, ma non li memorizzi da nessuna parte.
E' giusto quello che ho capito?
Adesso vado a letto e domani sistemiamo il tutto.
Tu intanto leggiti il mio post del 21/11.
E se qualcuno del ng vuole rispondere, NON LO FACCIA.
Questo è il mio thread. Il mio primo thread!!   :-)
Visto il subject?! Eh, non so se mi spiego.   :-)
Ciao
Marco

 Tu intanto leggiti il mio post del 21/11.
Letto e salvato.
Allora a domani... e ancora grazie.
Ciao.

Bene, eccoci qui.
Cercherò di spiegarti come integrare le sessioni nel tuo codice e procederò
per punti.
LISTINO
-------
Lascia perdere quello che hai fatto con la creazione di $comic.
I dati saranno contenuti in un db, e da lì li preleviamo.
Pertanto per visualizzare il listino, facciamo semplicemente una query al db
e poi inseriamo gli oggetti in una bella <table>.
Per ogni oggetto creiamo un form, come hai fatto anche tu. I moduli da usare
nel form saranno l'ID dell'oggetto (hidden) e la quantità (supponiamo di
inserire nella <table> un campo di testo per specificare la quantità). Poi
ci sarà il bottone per il submit.
Il form punta alla pagina di inserimento degli oggetti nel carrello.
INSERIMENTO NEL CARRELLO
------------------------
In questo caso, ti propongo direttamente il codice, da cui si capisce il
funzionamento.
<?
    // $idoggetto e $quantita arrivano dal form
    session_start();
    // la variabile di sessione che viene usata per il carrello
    // si chiama proprio "carrello".
    // la prima volta creo la variabile di sessione, perchè non esiste
    if (!session_is_registered("carrello")){
        // creo un array, perchè il carrello sarà
        // un array di oggetti
        $carrello = array();
        session_register("carrello");
    }
    // a questo punto creo il prodotto che devo inserire nel carrello
    // lo creo come array i cui componenti sono il suo id e
    // la quantità
    $prodotto = array($idoggetto, $quantita);
    // poi inserisco il prodotto nel carrello
    array_push($carrello, $prodotto);
    // alla fine carico una pagina
    header("location: index.php");
?>
Questo è quanto.
Sottolineo soltanto il fatto che dell'articolo memorizzo nel carrello solo
l'id e la quantità, che sono i dati principali.
Il resto dei dati li puoi prelevare da db quando ti servono.
VISUALIZZARE IL CARRELLO
------------------------
Anche in questo caso, il codice.
<?
    session_start();
?>
<html>
<head>
    <title>Carrello della spesa</title>
</head>
<body>
<?
    // conto gli articoli presenti nel carrello
    $num = count($carrello);
    echo "<p>Trovati $num oggetti nel carrello</p>\n";
    // effettuo un ciclo sul carrello
    echo "<p>\n";
    for($i=0; $i < $num; $i++) {
        // ogni articolo è un componente dell'array "carrello"
        $prodotto = $carrello[$i];
        // ogni articolo è a sua volta un array di 2 componenti
        echo $prodotto[0] . " - q.tà " . $prodotto[1] . "<br>\n";
    }
    echo "</p>\n";
?>
<p><a href="index.php">Home</a></p>
</body>
</html>
Fatto. Tieni presente che il codice sopra visulizza id e quantità. E basta.
Se vuoi visualizzare tutti i dati dell'articolo, cosa peraltro sensata, devi
procedere in maniera leggermente diversa.
Ossia, devi prima prelevare tutti gli id dal carrello e fare una bella query
sul db per recuperare i dati. Poi li visualizzi.
Spero che sia tutto chiaro.
Ciao
Marco

Quasi dimenticavo.
Per svuotare il carrello:
<?
    session_start();
    session_unregister("carrello");
    header("location: index.php");
?>
Tieni presente che il codice potrebbe non funzionare a seconda del settaggio
di register_globals.
Ma si tratta poi di aggiungere $_SESSION[].
Ciao
Marco

 Pertanto per visualizzare il listino, facciamo semplicemente una query al
db
Sai indicarmi un tutorial o un articolo che spiega come fare una query al
db.
Grazie.
Ciao Ste

 db.
http://it2.php.net/manual/it/ref.mysql.php
Ciao
Marco

Ciao, sto provando a costruire un db. Il db viene, la tabella anche, ma
quando vado a inserire i dati mi da errore.Eppure scrivo correttamente,
almeno mi sembra.
mysql>create database catalogo;
mysql>use catalogo;
mysql>create table lista(Id char(35) not null,  Articolo char(35) not null,
Titolo char(35) not null, Prezzo_unitario int not null);
mysql> insert into lista (Id, Articolo, Titolo, Prezzo_unitario)
VALUES('DD/01`, `DYLAN DOG N°:1', `IL CLUB DELL'ORRORE`, 20);
Quando qua premo enter mi scriveERROR 1054: unknown column `DD/01` in `field
list`. Perchè?
Ciao ciao e grazie.

ah scusa ho delle domande da farti. Una volta creato il db dove viene
salvato? e poi se io avessi necessità di usare il db su un altro computer,
funziona?E poi (ti prego non ridere) come si fanno gli apici singoli
('')(<=sono due apostrofi questi.)?
Grazie per la tua pazienza...
Mi sta facendo impazzire sto carrello :-(

 list`. Perchè?
Molto probabilmente è un problema di apici.
Per identificare le stringhe usa l'apice singolo '.
Ciao
Marco

 Mi sta facendo impazzire sto carrello :-(
Beh, forse con qualche nozione di base in più...
Ciao
Marco

Ciao,
allora ho fatto dei miglioramenti (penso):
- il db è stato creato.
-riesco ad aprirlo e a visualizzare tutta la lista di prodotti.
-riesco ad inviare i dati che volevo(costo,id,articolo)
-si visualizzano.
Ora i problemi:
Ho provato a fare come mi hai spiegato ma non ho capito molto bene perchè
non funziona niente.
Questo è il mio script che visuaizza la lista dei prodotti:
   <?php
    $db = mysql_connect();
    $res = mysql_db_query("catalogo",
                                         "select * from lista");
    $num = mysql_num_rows($res);
    echo '<table border=1 width=90% border=1 bordercolor=#000000>';
    echo "<tr><td><div align='center'><b>CODICE</b></div></td>
    <td><div align='center'><b>ARTICOLO</b></div></td>
    <td><div align='center'><b>TITOLO</b></div></td>
    <td><div align='center'><b>PREZZO UNITARIO</b></div></td>
    <td><div align='center'><b>ORDINAZIONE</b></div></td></tr>";
    for ($i=0; $i<$num;$i++)
    {
    $codice = mysql_result($res,$i,"Codice");
    $Articolo = mysql_result($res,$i,"Articolo");
    $Titolo = mysql_result($res,$i,"Titolo");
    $Prezzo_unitario = mysql_result($res,$i,"Prezzo_unitario");
    echo "<tr>";
Qui invio i dati:
    echo "<form action='COMICSHOP_carrello.php' method='POST'>";
    echo "<td><div align='center'>$codice</div></td>";
    echo "<td><div align='center'>$Articolo</div></td>";
    echo "<td><div align='center'>$Titolo</div></td>";
    echo "<td><div align='right'>$Prezzo_unitario ?</div></td>";
    echo "<input type='hidden' name='codice' value='$codice'>";
    echo "<input type='hidden' name='Articolo' value='$Articolo'>";
    echo "<input type='hidden' name='Prezzo_unitario'
value='$Prezzo_unitario'>";
    echo "<td><div align='center'><input type='submit' name='ORDINAZIONE'
value='ORDINAZIONE'></div></td>";
    echo "</form>";
    echo "</tr>";
    }
    echo"</table>";
    mysql_close($db);
        ?>
Giusto?
Ora:
    // $codice,  $Articolo e $Prezzo_unitario arrivano dal form
    session_start();
    // la variabile di sessione che viene usata per il carrello
    // si chiama proprio "carrello".
    // la prima volta creo la variabile di sessione, perchè non esiste
    if (!session_is_registered("carrello")){
        // creo un array, perchè il carrello sarà
        // un array di oggetti
        $carrello = array();
        session_register("carrello");
    }
    // a questo punto creo il prodotto che devo inserire nel carrello
    // lo creo come array
    $prodotto = array($codice,  $Articolo, $Prezzo);
    // poi inserisco il prodotto nel carrello
    array_push($carrello, $prodotto);
    // alla fine carico una pagina (non ho capito bene che pagina è questa.
è forse quella di visalizzazione del carrello?E quindi in header("location:
index.php")devo  scrivere header("location: carrello.php")?);
    header("location: index.php");
?>
E ora la domanda più stupida: Ma tutto questo script va in una pagina php a
parte, o alla fine dello script che invia i dati ?
lo script per VISUALIZZARE IL CARRELLO è invece la mia pagina carrello.php
Giusto?
Grazie mille per l'infinita pazienza, ciao
Ste

 Giusto?
Yez.
Ciao
Marco

 contenuto del carrello, cosě ad ogni aggiunta vedi subito le modifiche.
Non ho capito bene come fare per poter visualizzare subito le modifiche.
Poi io ho provato a fare la pagina di inserimento:
 <?php
    session_start();
    session_register("carrello");
    $carrello = array();
    $prodotto = array($codice,  $Articolo, $Prezzo_unitario);
    array_push($carrello, $prodotto);
    header("location: index.php");
    ?>
Ma risponde cosě:
Warning: session_start(): Cannot send session cookie - headers already sent
by (output started at c:\inetpub\wwwroot\COMICSHOP_carrello1.php:1) in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started at
c:\inetpub\wwwroot\COMICSHOP_carrello1.php:1) in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 2
Notice: Undefined variable: codice in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 5
Notice: Undefined variable: Articolo in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 5
Notice: Undefined variable: Prezzo_unitario in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 5
Warning: Cannot modify header information - headers already sent by (output
started at c:\inetpub\wwwroot\COMICSHOP_carrello1.php:1) in
c:\inetpub\wwwroot\COMICSHOP_carrello1.php on line 7
Warning: Unknown(): Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension
does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to off,
respectively. in Unknown on line 0
Perchč?
Ciao Ste.

Ho provato ad usare un db per memorizzare i dati potresti controllarmi lo
script?
<?php
  $db = mysql_connect();
  $data = "acquisti";
  $database = mysql_create_db($data,$db);
  $table = "CREATE TABLE listato (Codice CHAR(40), Articolo CHAR(80),
Prezzo_unitario int)";
  $ri = mysql_db_query( $data, $table, $db );
  $Codice = $_POST["Codice"];
        $Articolo = $_POST["Articolo"];
        $Prezzo_unitario = $_POST["Prezzo_unitario"];
        $queri = "INSERT INTO listato ( Codice, Articolo, Prezzo_unitario )
VALUES( '$Codice', '$Articolo', '$Prezzo_unitario' )";
  $rio = mysql_db_query( $data, $queri, $db );
  $res = mysql_db_query("acquisti",
       "select * from listato");
    $num = mysql_num_rows($res);
    echo '<table border=1 width=90% border=1 bordercolor=#000000>';
    echo "<tr><td><div align='center'><b>CODICE</b></div></td>
    <td><div align='center'><b>ARTICOLO</b></div></td>
    <td><div align='center'><b>PREZZO UNITARIO</b></div></td></tr>";
    for ($i=0; $i<$num;$i++)
    {
    $Codicea = mysql_result($res,$i,"Codice");
    $Articoloa = mysql_result($res,$i,"Articolo");
    $Prezzo_unitarioa = mysql_result($res,$i,"Prezzo_unitario");
    echo "<tr>";
    echo "<td><div align='center'>$Codicea</div></td>";
    echo "<td><div align='center'>$Articoloa</div></td>";
    echo "<td><div align='right'>$Prezzo_unitarioa ?</div></td>";
    echo "</tr>";
    }
    echo"</table>";
    mysql_close($db);
  ?>
Premetto non funziona ma non ho capito dove ho sbagliato.
Se il concetto è giusto mi sembra più facile che usare le sessioni ,no?