creazione carrello - unire sito al database

  • Creatore Discussione Creatore Discussione robylo
  • Data di inizio Data di inizio

robylo

Nuovo Utente
25 Mag 2008
8
0
0
ciao a tutti...complimenti per il forum...davvero interessante...
come da titolo la mia domanda riguarda la creazione di un carrello...sono riuscito a trovare un paio di pagine gia scritte in php che si adattano meglio a quello che serve a me e a quello che cercavo...l'unica cosa è che queste pagine usano la gestione di un catalogo tramite un array invece che con un database come serviva a me!
sapete aiutarmi?? se vi può essere utile vi posto il codice delle due pagine che sono il catagolo e il carrello!fatemi sapere!
ciao e grazie
 
avevo gia visto questo sito ma più che un software mi interessava qualcosa di veramente più semplice...mi spiego:
- 2 pagine una con il catalogo e una con il carrello;
- nella pagina del catalogo un pulsante per ogni oggetto da vendere che reindirizza l'utente al carrello e aggiunge l'oggetto scelto al carello prima vuoto. a livello grafico il carrello sarà una pagina con una tabella con 3 colonne: descrizione del prodotto, prezzo e quantita ed n righe, tante quanti sono gli oggetti che seleziona l'utente e che si creano automaticamente quando l'utente aggiunge l'oggetto al carrello. de difault ci sarà una casella con il prezzo totale e dove verrà calcolato il prezzo totale degli oggetti messi nel carrello.
io in rete ho trovato questo ma gestisce i prodotti con gli array e non con il database come mi interessava:
PAGINA DEL CATALOGO:
PHP:
<?php
$items = array(
    'Canadian-Australian Dictionary',
    'As-new parachute (never opened)',
    'Songs of the Goldfish (2CD Set)',
    'Ending PHP4 (O\'Wroxey Press)');
$prices = array(24.95, 1000, 19.99, 34.95);
?>
<table border="1">
  <thead>
    <tr>
      <th>Item Description</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
<?php
  for ($i = 0; $i < count($items); $i++) {
    echo '<tr>';
    echo '<td>' . $items[$i] . '</td>';
    echo '<td>$' . number_format($prices[$i], 2) . '</td>';
    echo '<td><a href="' . $_SERVER['PHP_SELF'] .
        '?buy=' . $i . '">Buy</a></td>';
    echo '</tr>';
  }
?>
  </tbody>
</table>

PAGINA DEL CARRELLO:

PHP:
<?php
session_start();
if (!isset($_SESSION['cart'])) {
  $_SESSION['cart'] = array();
}
if (isset($_GET['empty'])) {
  // Empty the $_SESSION['cart'] array
  unset($_SESSION['cart']);
  header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);
  exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shopping cart</title>
<meta http-equiv="content-type"
    content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Your Shopping Cart</h1>
<?php
$items = array(
  'Canadian-Australian Dictionary',
  'As-new parachute (never opened)',
  'Songs of the Goldfish (2CD Set)',
  'Ending PHP4 (O\'Wroxey Press)');
$prices = array( 24.95, 1000, 19.99, 34.95 );
?>
<table border="1">
  <thead>
    <tr>
      <th>Item Description</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
<?php
  $total = 0;
  for ($i = 0; $i < count($_SESSION['cart']); $i++) {
    echo '<tr>';
    echo '<td>' . $items[$_SESSION['cart'][$i]] . '</td>';
    echo '<td align="right">$';
    echo number_format($prices[$_SESSION['cart'][$i]], 2);
    echo '</td>';
    echo '</tr>';
    $total = $total + $prices[$_SESSION['cart'][$i]];
  }
?>
  </tbody>
  <tfoot>
    <tr>
      <th align="right">Total:</th><br>
      <th align="right">$<?php echo number_format($total, 2); ?></th>
    </tr>
  </tfoot>
</table>
<p><a href="catalog.php">Continue Shopping</a> or
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?empty=1">Empty your cart</a></p>
</body>
</html>

questo va benissimo per quello che mi interessa ma come dicevo gestisce i prodotti tramite un array e non tramite un database come interessava a me...spero riuscite ad aiutarmi!
 
mi sembra giusto...diciamo che mi sto informando e sono stato istruito "malamente" a scuola...so dove devono essere scritti...a grandi linee i comandi principali e so come metterli sul server...nel mio caso uso easyphp per controllare il funzionamento!
 
  • Crea una tabella mysql con i seguenti campi:
    • id - INT
    • item_title - VARCHAR 255
    • item_price - VARCHAr 255
    
  • Per ottenere le varie cose:
    PHP:
    <?php
    $host = '';
    $username = '';
    $password = '';
    $database_name = '';
    $table_name = '';
    
    $conn = mysql_connect($host, $username, $password);
    mysql_select_db($database_name, $conn);
    $query = mysql_query('SELECT * FROM ' . $table_name, $conn);
    while ($res = mysql_fetch_array($query)) {
        $items[] = $res['item_title'];
        $prices[] = $res['item_price'];
    }
    mysql_close($conn);
    ?>
  • Ora basta che sostituisci al tuo codice ($prices e $items) quello che ti ho dato io (modificando i vari dati di configurazione con i tuoi)
In questo ottieni lo stesso risultato...
 
Eh, allora ti dò un consiglio: studia.
Per capire qualcosa (qualunque cosa) di quello che ti sto dicendo dobbiamo parlare la stessa lingua (in questo caso il php) e quindi è il caso che tu ti metta a studiare qualcosa.

Comunque, quel codice ti fa ottenere dal database mysql i vari records inseriti.
 
lo so e più studio il php più capisco...il tuo codice crea una connessione con il database, seleziona tutto dalla tabella e poi non ho capito cosa fa il while...ho capito che al posto del mio $items= array etc e al posto del mio $price = array devo mettere il tuo codice che crea la connessione con il database e non usa più gli array...giusto?
 
Quel codice praticamente "ricrea" i tuoi array in automatico da mysql.
Non è un metodo molto sensato perchè fai eseguire il lavoro due volte... però in questo modo ti evita ti modificare troppo il codice e visto che le tue conoscenze sono parecchio limitate questo ti avvantaggia notevolmente!
 
allora ho inserito il codice nella mia pagina del catalogo...
mi esce questo errore
Parse error: syntax error, unexpected T_VARIABLE in C:\Programmi\EasyPHP 2.0b1\www\catalog.php on line 31

la linea di errore (31) è in quella in grassetto...ho messo localhost come host, root come username e ho cancellato la parte della password dato che non c'è password, lasciando solo il dollaro!


<?php
$host = '';
$username = '';
$password = '';
$database_name = 'ecommerce';
$table_name = 'tabella';

$conn = mysql_connect($localhost $root, $);
mysql_select_db($ecommerce, $conn);
$query = mysql_query('SELECT * FROM ' . $tabella, $conn);
while ($res = mysql_fetch_array($query)) {
$items[] = $res['item_title'];
$prices[] = $res['item_price'];
}
mysql_close($conn);
?>
 
Madonna mia... questa è proprio l'a-b-c-.
Fa così: leva quella roba che hai scritto e rimetti per filo e per segno quello che ti ho dato io.
Quello da modificare è il valore delle variabili, NON le variabili.
PHP:
$host = 'localhost'; 
$username = 'root'; 
$password = ''; 
$database_name = 'ecommerce'; 
$table_name = 'tabella';
Comunque amico mio, tu ti php ne sai quanto io ne so di cinese.
STUDIA!
 
ok il codice inserito è giusto...purtroppo successivamente per caricare la tabella usa un for legato all'array...dato che l'array non esiste più, il for non funziona perchè non trova la variabile items...infatti mi da questo errore:

Undefined variable: items in c:\programmi\...catalog1.php on line 49
la linea di errore è quella in grassetto...
<?php
for ($i = 0; $i < count($items); $i++) {
echo '<tr>';
echo '<td>' . $items[$i] . '</td>';
echo '<td>$' . number_format($prices[$i], 2) . '</td>';
echo '<td><a href="' . $_SERVER['PHP_SELF'] .
'?buy=' . $i . '">Buy</a></td>';
echo '</tr>';
}
?>

da quello che ho capito questo for crea le colonne e le righe degli "items" dell'array nella pagina del catalogo...se si clicca su buy, inserisce l'oggetto nel carrello, facendo riferimento, con $_SERVER['PHP_SELF], alla pagina del carrello...giusto?
dato l'errore devo mettere item_title?
ho provato a cercare qualcosa in rete e ho letto un paio di guide php/mysql ma non ho trovato nessun riscontro...grazie ancora per la pazienza...
 
sottoponi l'esistenza della variabile ad una condizione,
PHP:
if(!$items)
 {
 $items =0; 
 }
 
ho provato a mettere il codice che mi hai scritto prima del for dato che è in quel caso che mi serve, ma non è servito a nulla:

Undefined variable: items in C:\Programmi\EasyPHP 2.0b1\www\catalog1.php on line 50

PHP:
<?php
if(!$items)
 {
 $items =0; 
 }
 if(!$prices)
 {
 $prices =0; 
 }
  for ($i = 0; $i < count($items); $i++) {
    echo '<tr>';
    echo '<td>' . $items[$i] . '</td>';
    echo '<td>$' . number_format($prices[$i], 2) . '</td>';
    echo '<td><a href="' . $_SERVER['PHP_SELF'] .
        '?buy=' . $i . '">Buy</a></td>';
    echo '</tr>';
  }
?>

altra cosa...questo codice serve soltanto a far vedere il catalogo e attraverso il buy e il codice in un altra pagina .php a creare la tabella del carrello...girando su un sito nella tua firma ho trovato un codice abbastanza interessante per quello su cui sto lavorando:
PHP:
<?php
define("DB_HOST", 'localhost'); 
define("DB", 'nome_database');
define("DB_USER", 'nome_utente');
define("DB_PW", 'password');

mysql_connect(DB_HOST, DB_USER, DB_PW);
mysql_select_db(DB);

$query="select * from tabella order by Id";
$result= mysql_query($query);
$numfields = mysql_num_fields($result);

echo "<table>\n<tr>";
for ($i=0; $i < $numfields; $i++) 
  { 
   echo '<th>'.mysql_field_name($result, $i).'</th>'; 
   }
   echo "</tr>\n";
   
   while ($row = mysql_fetch_row($result)) 
  { 
   echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n"; 
  }
echo "</table>\n";
  ?>

ora questo codice l'ho provato e va bene ma l'unica cosa da aggiungere è appunto quel buy che fa riferimento alla pagina del carrello...ho provato ad inserirlo io ma lo trovo sempre sballato rispetto alla tabella che il codice crea...o in alto, o in basso o tra i prodotti! comunque credo che continuerò a lavorare con questo codice...mi sembra meno comlesso e intrecciato...al massimo torno sempre a quello prima..
grazie ancora
roby
 
Ultima modifica:

Discussioni simili