|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2004
Messaggi: 42
|
problemi con il carrello php
Ciao a tutti,
Ho un problema nel far funzionare un carrello, vi spiego cosa ho fatto: 1) ho fatto un database vuoto con mysql, l'ho chiamato carrello. E' formato da questi campi id (chiave primaria), codice, nome, descrizione, quantita, prezzo, totale 2) nel sito che sto costruendo ho inserito una immagine e un posto per scrivere la quantita di prodotto che si vuole ordinare affianco a ogni prodotto. La funzione di questa immagine è quella di aggiungere i prodotti e la quantità al carrello. Problema: quando clicco sull'immagnine non mi aggiunge niente al carrello mi visualizza solo la tabella del database vuota. Io vi invio due codici: CODICE DEL CARRELLO: <?php $conn = @mysql_connect("localhost","root","") or die("connessione fallita"); @mysql_select_db("test") or die ("connessione fallita"); $sql="INSERT INTO carrello (codice,nome,descrizione,quantita,prezzo,totale) VALUES ('". $_GET['codice'] ."','". $_GET['nome'] ."','". $_GET['descrizione'] ."','". $_GET['prezzo'] ."','". $_GET['quantita'] ."','".$_GET['totale']."');"; @mysql_query($sql) or die ("query fallita : $sql"); $sql = "SELECT codice,nome,descrizione,quantita,prezzo,totale FROM carrello WHERE carrello.codice"; $risultato = @mysql_query($sql) or die ("query fallita : $sql"); print "<table border=1 bordercolor=white background=sfondo.gif align=center width=80%>"; print "<tr> <td><b>CODICE</b></td> <td><b>NOME</b></td> <td><b>DESCRIZIONE</b></td> <td><b>PREZZO</b></td> <td><b>QUANTITA</b></td> <td><b>PREZZO TOTALE</b></td> </tr>"; $qtatot = 0; $prezzotot = 0; while ($linea = mysql_fetch_array($risultato)) { $prezzo = $linea["quantita"]*$linea["prezzo"]; print "<tr>"; print "<td>".$linea["codice"]."</td>"; print "<td>".$linea["nome"]." </td>"; print "<td>".$linea["descrizione"]."</td>"; print "<td>".$linea["qta"]." </td>"; print "<td>".$linea["prezzo"]." €</td>"; print "<td>".$linea["totale"]." €</td>"; print "<td>".$prezzo." €</td>"; print "</tr>"; } print "<tr> </table>"; mysql_free_result($risultato); mysql_close($conn); ?> CODICE DEI PRODOTTI DOVE CE L'IMMAGINE, PRECHE SECONDO ME NON DO UN COMANDO ALL'IMMAGINE: <?php print "<table border= bordercolor=#676767 background=sfondo.gif align=center width=80% > <form action=carrel.php name=frm method=get>"; $fd= fopen ("accessori.csv", "r"); while (!feof ($fd)){ $riga=fgets($fd, 4096); if($riga!=""){ $arr=split(';', $riga); print "<tr>"; print "<td>".$arr[0]."</td>"; print "<td>".$arr[1]."</td>"; print "<td>".$arr[2]."</td>"; print "<td>".$arr[5]."</td>"; print "<td><input type=text size=3 name=qta> <img border=0 src=carrello.gif onclick=\"document.frm.submit()\"> </td>"; } print "</tr>"; } print "</form>"; print "</table>"; ?> ERRORI: Notice: Undefined index: codice in c:\easyphp1-7\www\carrel.php on line 73 Notice: Undefined index: nome in c:\easyphp1-7\www\carrel.php on line 73 Notice: Undefined index: descrizione in c:\easyphp1-7\www\carrel.php on line 73 Notice: Undefined index: prezzo in c:\easyphp1-7\www\carrel.php on line 73 Notice: Undefined index: quantita in c:\easyphp1-7\www\carrel.php on line 73 Notice: Undefined index: totale in c:\easyphp1-7\www\carrel.php on line 73 SPERO CHE QUALCUNO MI POSSA AIUTARE. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sostituisci mysql_fetch_array con mysql_fetch_assoc
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2004
Messaggi: 75
|
a dire il vero credo vada sostituita con mysql_fetch_row (anche se non so a cosa serve il fetch_assoc!
Cmq, una volta estratti i dati con mysql_query ti ritrovi una sorta di array di record (o se preferisci una matrice). Prima di dividere l'array dovresti dividere le varie righe che identificano le singole tuple estratte dal db. while ($linea = mysql_fetch_row($risultato)) { $prezzo = $linea["quantita"]*$linea["prezzo"]; print "<tr>"; print "<td>".$linea["codice"]."</td>"; print "<td>".$linea["nome"]." </td>"; print "<td>".$linea["descrizione"]."</td>"; print "<td>".$linea["qta"]." </td>"; print "<td>".$linea["prezzo"]." €</td>"; print "<td>".$linea["totale"]." €</td>"; print "<td>".$prezzo." €</td>"; print "</tr>"; } Ciao, McK |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
http://it2.php.net/manual/en/functio...etch-array.php |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2004
Messaggi: 42
|
carrello
Ragazzi vi ringrazio per l'aiuto ma non è cambiato niente non mi aggiunge nessun prodotto al carrello,
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: May 2004
Messaggi: 75
|
(grazie cionci, non avevo mai usati gli array associativi!
Prova a fare una cosa, cambia la stringa che usi per inserire i dati nel database (carrello), tanto le variabili che passi via get o post attraverso i form html riesci a leggerle anche senza richiamare la funzione GET e POST di php, semplicemente richiamandone il nome. Nel caso fai prima un assegnamento del tipo $cod=$_GET['codice']. $sql="INSERT INTO carrello (codice,nome,descrizione,quantita,prezzo,totale) VALUES ('$codice','$nome','$descrizione','$prezzo','$quantita','$totale')"; La sintassi sql prevede gli apici che racchiudano i valori, ricorda che se nel nome o nella descriziopne hai un apice (L'albero) la query non insersce niente nel database, devi sostituire la variabile in (L\'albero) attraverso la funzione addslashes($variabile). Prova così, sicuramente il problema dell'inserimento è dovuto alla query sbagliata. Io di solito per controllarle uso phpmyadmin e incollo la query nel campo di testo "sql". Ciao, McK |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Bisogna riattivarla dalla configurazione... E' stato disattivato perchè portava a problemi di sicurezza... Quindi anche se è attivo il vecchio emtodo sullo spazio web...meglio usare il nuovo metodo con i vettori associativi $_GET, $_POST e $_SESSION... |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: May 2004
Messaggi: 42
|
ciao mck,
quello che mi hai sritto l'ho gia provato, e mi da gli stessi errori Spero che puoi darmi altri consigli. ciao grazie |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quello che ti ho detto io l'hai fatto ?
Ma qual è la linea 73 ?!?!?! Ma ci arrivi da un form a quella richiesta ? Ultima modifica di cionci : 21-05-2004 alle 10:04. |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: May 2004
Messaggi: 75
|
Bè ma l'errore che ti da (se la linea 73 è quella che usi con i GET) è semplicemente derivante dal fatto che tenti di leggere valori che non hai mai passato o cmq non riesce a trovare le variabili che tenti di leggere
McK |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Infatti...se viene da una form probabilmente basta cambiare $_GET con $_POST...
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: May 2004
Messaggi: 75
|
Bè il cambio del get col post dipende dal metodo che hai usato per creare la form... pastaci anche la parte di codice chiamante (quella col form) così capiamo meglio dove sta il problema.
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: May 2004
Messaggi: 42
|
VI SPEGO MEGLIO:
1) AVEVO UN DOCUMENTO IN EXCEL DOVE CI SONO DEI LISTINI PREZZI, HO TRASFORMATO QUESTO DOCUMENTO IN UN FILE CSV , E L'HO RICHIAMATO CON IL CODICE PHP, AFFIANCO A OGNI PRODOTTO HO MESSO UNO SPAZIO PER SCRIVERE LA QUANTITA E L'ICONA DEL CARRELLO CHE QUANDO CI CLICCHI SOPRA DOVREBBE AGGIUNGERE IL PRODOTTO AL CARRELLO, PER CUI DEVE SCRIVE IL PRODOTTO SUL DATABASE VUOTO CHE HO CREATO SU MYSQL, MA NON LO FA. MI VISUALIZZA SOLTANTO LA TABELLA CON I CAMPI CODICE, NOME, DESCRIZIONE, PREZZO, QUANTITA,TTOTALE PERò IL BENEDETTO PRODOTTO NON MELO AGGIUNGE. VI MANDO IN ALLEGATO: ACCESSORI.CSV , DOVE CI SONO I PRODOTTI CON I PREZZI CARREL.PHP, CHE SAREBBE IL CARRELLO CHE PER ADESSO è VUOTO OPEN.PHP, CHE SAREBBE IL CODICE CHE RICHIAMA ACCESSORI.CSV, QUI CE L'ICONA DEL CARRELLO. |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Manca il value a questi input hidden...
print "<input type=\"hidden\" name=\"codice\">"; print "<input type=\"hidden\" name=\"nome\">"; print "<input type=\"hidden\" name=\"descrizione\">"; print "<input type=\"hidden\" name=\"prezzo\">"; print "<input type=\"hidden\" name=\"quantita\">"; print "<input type=\"hidden\" name=\"totale\">"; |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: May 2004
Messaggi: 75
|
No cionci in realtà gli dovrebbe venire assegnato attraverso il javascript che sta sopra, ma sinceramente non sono proprio sicuro che funzioni!
Secondo me è meglio se elimini il javascript per l'aggiunta nel carrello (i javascript sono client side, quindi non è detto che funzionino su tutti i browser dei tuoi utenti) e fai una cosa tipo quella che ti ha suggerito cionci, cioè assegnando subito i valori alle variabili. Così: print "<input type=\"hidden\" name=\"codice\" value=\"$arr[1]\">"; print "<input type=\"hidden\" name=\"nome\" value=\"$arr[2]\">"; print "<input type=\"hidden\" name=\"descrizione\" value=\"$arr[3]\">"; print "<input type=\"hidden\" name=\"prezzo\" value=\"$arr[5]\">"; Secondo me però sarebbe da rivedere totalmente questa parte del tuo sito e fare una riprogrammazione DOC. Potresti per esempio assegnare all'immaginetta del carrello il codice del prodotto con href sulla stessa pagina: <a href=\"stessapagina.php?id=$art[1]\"><img src=\"carrello.gif\"></a> In questo modo ogni volta che clicchi su un carrellino ti viane ricaricata la pagina con la lista degli articoli e ti viene passato il codice (ed eventualmente la quantità associata) dell'articolo che hai scelto. In questo modo puoi gestirti anche un campo con il totale e l'elenco degli oggetti in the cart. Ricordati solo che al secondo oggetto che viene aggiunto (con conseguente reload della pagina) dovrai passare in hidden anche l'id e la quantità dell'oggetto che avevi già inserito... e così via (in pratica passi ogni volta un array fino alla conferma dell'ordine). Non è forse il massimo, ma è la prima cosa che mi è venuta in mente. Se preferisci tenere il tuo codice ti consiglio di fare un po' di debug e vedere se viene assegnato il corretto valore dell'articolo quando pigi sul carrello (fai un echo "$variabile da controllare" nell'altro file per vedere se ti arriva il valore) Ciao, McK |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:04.



















