Vai al contenuto

Gestire E-commerce fatto in casa


imart

Messaggi raccomandati

Ciao ragazzi una semplice domanda:

Se non ho un sistema di registrazione, come posso gestire il carrello e gli articoli?

nel senso, visito un sito, senza registrarmi aggiungo al carrello della roba e poi cliccando "ordina" manda via email la merce che ho nel carrello....

Grazie!

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

bhe avviene tramite le sessioni.. ovvero quando qualcuno clikka su aggiungi al carrello diciamo che viene creata una sessione o più sessioni per quella persona che contengono tali informazioni.

Anche se guarda, il metodo più sicuro è far eseguire la registrazione.

Link al commento
Condividi su altri siti

eh infatti ma il tizio dice che per ora non vorrebbe la registrazione...

Ho un problema...sto risolvendo in altro modo, funziona tutto tranne' il "mostra carrello"

Ecco le pagine fatte al volo che sto utilizzando (accetto consigli ovviamente)

L'elenco dei libri con il tasto aggiungi al carrello:

<?php
session_start();
include('pagine/config.php');
$libri = mysql_query("SELECT * FROM libri");
while ($row = mysql_fetch_array($libri)) {
echo "$row[titolo]<br />
<form method=\"POST\" action=\"memorizzaprodotto.php\">
<input type=\"image\" name=\"aggiungi\" src=\"immagini/carrello.gif\" border=\"0\">
<input type=\"text\" name=\"quantita\" maxlength=\"2\" style=\"width:20; text-align:center\">
<input type=\"hidden\" name=\"prezzo\" value=\"$row[prezzo]\">
<input type=\"hidden\" name=\"titolo\" value=\"$row[titolo]\">
<input type=\"hidden\" name=\"autore\" value=\"$row[autore]\">
<input type=\"hidden\" name=\"copertina\" value=\"$row[copertina]\">
</form>
";
}
?>

Questo e' memorizzaprodotto.php

<?php
session_start();
if (ctype_digit($_REQUEST['quantita']))
{
$riga = $_SESSION["riga"];
$riga++;

$_SESSION["prezzo[$riga]"] = $_REQUEST["prezzo"]; // memorizzo il prezzo nel vettore SESSIONE prezzo
$_SESSION["titolo[$riga]"] = $_REQUEST["titolo"]; // memorizzo il testomarca nel vettore SESSIONE testomarca
$_SESSION["autore[$riga]"] = $_REQUEST["autore"]; // memorizzo il testomarca nel vettore SESSIONE descrizione
$_SESSION["copertina[$riga]"] = $_REQUEST["copertina"]; // memorizzo il testomarca nel vettore SESSIONE descrizione

$_SESSION["riga"] = $riga;
}
header("Location: carrello.php");
?>

ed infine, carrello.php che dovrebbe mostrarmi cio' che ho aggiunto al carrello, ma mi visualizza infinite x nella pagina...

<?php
session_start();
if ($_SESSION["riga"] == 0) printf($_SESSION["codice[0]"]);
if ($_SESSION["riga"] > 0)
{
// stampa dei prodotti scelti
for ($riga = 1; $riga <= $_SESSION["riga"]; $riga++)
{ printf($_SESSION["titolo[$riga]"]);?>
x<? printf($_SESSION["quantita[$riga]"]); ?>

<? } } ?>

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

riguardo l'id hai ragione, il resto lo prelevo dal database tramite where id= ecc..

Il problema della x rimane anche sostituendo header("") con echo "prodotti aggiunti" ...

Secondo me il problema e' nel for :

for ($riga = 1; $riga <= $_SESSION["riga"]; $riga++)

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

ma forse nn mi hai capito.. se metti l'echo i dati te li visualizza?? non hai mai eseguito un debug di una applicazione grande?? si usano mysql_error echo posti dappertutto.. cosi da verificare dove sia l'intoppo..

comunque per il for prova $riga >= 0 e non $riga = 1

Link al commento
Condividi su altri siti

niente, ancora x infinite... non riesco a venirne a capo, oggi riscrivo tutto il codice e vedo.... magari quando l'ho scritto non ero troppo fresco :)

Comunque devo approfondire il ciclo for perche' e' l'unico con cui ho maggiori difficolta' ... poi devo studiare bene le sessioni perche' non le ho mai usate per un carrello...

Grazie ciccio :(

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

risolto. Cercando ho trovato uno script semplice gia' fatto...

Adesso ho un altro piccolo problema per la gestione dei pagamenti...

Ho un tag select con le varie opzioni, vorrei che quando scelgo ad esempio "pagamento tramite paypal" esca scritto sotto "paga al seguente indirizzo email ecc.."...

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

allora quando compara paga con paypal.. devi eseguire un reindirazzemento alla pagina paypal tramite la quale si esegue il pagamento.. non puoi mettere tu i campi di input..

io se su un sito faccio un pagamento paypal e non mi esce la pagina di paypal io non inserisco alcun indirizzo email o password.. quindi la cosa che chiedi non la vedo possibile.

Link al commento
Condividi su altri siti

no non volevo fare cosi ...

Esempio:

Appena seleziono l'opzione "bonifico bancario", sotto mi compare la descrizione del pagamento...

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

ma vedi che non puoi mettere un input nel quale scrivere l'indirizzo email da dove proverrà il pagamento paypal.. non esiste una cosa del genere.. lo hai mai visto percaso in altro siti??? non credo proprio.. metti solamente un collegamento a paypal per il pagamento di tale oggetto.. tramite il quale chi vende.. possiede già i dati di indirizzo dove spedire l'oggetto, nome e cognome di chi ha comprato l'oggetto.

Link al commento
Condividi su altri siti

dimentica paypal :fiorellino:

Voglio solo che quando seleziono un opzione, mi escano delle informazioni scritte sotto il <select>...

ho letto che si tratta di onchange di javascript, ma non ho idea di come fare...

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

una soluzione cosi su due piedi potrebbe essere:

<head>

<script language="javascript">

function open(div){

document.getElementById(div).style.display="block";

}

function close(div){

document.getElementById(div).style.display="none";

}

function changeLocation(menuObj) {

var i = menuObj.selectedIndex;

if(i > 0) {

window.location = menuObj.options[ i ].id;

}

}

</script>

<style type="text/css">

.prova{

display: none;

width: 100%;

}

</style>

</head>

<body>

<select onChange="javascript:changeLocation(this)">

<option selected>Scegli</option>

<option value="1" id="javascript:open(1); close(2);">Apri il div 1</option>

<option value="2" id="javascript:open(2); close(1);">Apri il div 2</option>

</select>

<div id="1" class="prova">

Ecco il div 1

</div>

<div id="2" class="prova">

Ecco il div 2

</div>

</body>

Link al commento
Condividi su altri siti

alora imart.. ho capito.. quando copi e incolli si formano degli spazi.. prova a incollarlo e togliere gli spazi che la formattazione del forum crea.. tipo in alto a displ ay

o il javascript nel select..

Link al commento
Condividi su altri siti

gradissimo, non avevo notato gli spazi in displ ay ma solo in (this )...

Devo sperare che non passi mai da Varese, seno' con tutte le birre che ti devo, vado in rovina...hehe!

Grazie!

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

haha sisi ... funziona tutto perfettamente solo una cosa mi turba... ora gli ordini dovrei mandarli tramite email quando viene schiacciato il bottone "ordina prodotti"...

la funzione che mi mostra il riepilogo degli ordini e' la seguente:

function showOrdiniCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
	$items = explode(',',$cart);
	$contents = array();
	foreach ($items as $item) {
		$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
	}
	$output[] = '<form action="http://***************ordina.html" method="post" id="cart">';
	$output[] = '<table>';
	foreach ($contents as $id=>$qty) {
		$sql = 'SELECT * FROM libri WHERE id = '.$id;
		$result = $db->query($sql);
		$row = $result->fetch();
		extract($row);
		$titolo = str_replace("_"," ",$titolo);
		$output[] = '<tr>';
		$output[] = '<td>'.$titolo.' di '.$autore.' </td>';
		$output[] = '<td>Quantita\': <b>'.$qty.'</b></td>';
		$output[] = '<td>Prezzo: €<b>'.$prezzo. '</b></td>';
		$total += $prezzo * $qty;
		$output[] = '</tr>';
	}
	$output[] = '</table>';
	$output[] = '<p>Totale: <strong>€'.$total.'</strong></p><br /><br />';
	$output[] = '<input type="submit" value="ordina prodotti">';
	$output[] = '</form>';
} else {
	$output[] = '';
}
return join('',$output);
}

Quando il cliente guarda gli ordini e vuole inviarli al negoziante, schiaccia "ordina prodotti", e al negoziante gli arriva un mail che contiene tutti gli ordini richiesti dal cliente.. ma non mi e' mai capitato di mandare email che contengono dati delle sessioni...

il var_dump($_SESSION); dice

array(1) { ["cart"]=> &string(2) "64" }

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

praticamente tu quando compri online poi ti trovi nella pagina di riepilogo degli ordini e devi confermare che vuoi ordinare quella roba... quando clicchi "ordina" , parte l'email e arriva al negoziante con dentro tutta la roba che vorresti ...

Quella funzione, mi mostra il riepilogo degli ordini, sotto c'e' il bottone "ordina", ma non saprei cosa scrivere nella pagina ordina.php ....

una roba del genere:

$a = "miamail";
$oggetto = "ciupa";
$messaggio = "elenco dei prodotti";
mail($a,$oggetto,$messaggio);

al posto di "elenco dei prodotti", andrebbe tutto il contenuto della sessione, ovvero gli articoli che ci sono nel carrello...

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

quello che ti voglio dire io è.. quando clikka su 'ordina' nell'email fai comparira la stessa lista che appare all'utente.. nella pagina ordina.php esegui la stessa query per visualizzare gli oggetti.. magari cambi il layout.. ma per il resto va bene..

Link al commento
Condividi su altri siti

che picio, era semplicissimo... non capisco pero' perche' non va a capo nell'email :\

		$output[] = ''.$titolo.' di '.$autore.'\n ';
		$output[] = 'Quantita\': '.$qty.'\n';
		$output[] = 'Prezzo: €'.$prezzo. '\n ';

grazie ciccio :ghghgh:

Belli come la vita, neri come la morte.

FOLGORE!!!

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...