dtulacz
19.01.2008, 09:44:41
Witajcie;
Mam dość dziwny problem z moim
koszykiem. Mianowicie całość działa z grubsza poprawnie, to jest bardzo prosty koszyk, niestety
nie chce mi dodawać zamówienia do bazy poczas finalizowania zamówienia. Nowego klienta dodaje bez problemu, gorzej z dodaniem właśnie zamówienia do tabeli
tblzamowienia. Rozkładam już ręce normalnie. Czy mógłby mi ktoś z tym pomóc? Dodam, iż projekt stworzyłem na potrzeby nauki... tylko i wyłącznie.
Pozdrawiam serdecznie
D(T)T
link do całości:
http://s006.wyslijto.pl/?file_id=042567943275946435117675894
misiek172
19.01.2008, 12:12:11
jak ktoś ma ci pomoc człowieku? nikt nie jest jasnowidzem twojego mózgu.
Napisz swoje zapytanie do bazy, sposób w jaki go wywołujesz i strukture tabeli.
dtulacz
19.01.2008, 14:04:44
Witam;
Nie dołączałem kodu, ponieważ pod postem dałem link do całości. W taki razie wklejam poniżej jak to wygląda:
============= pamieci.php ->dodanie czegos do koszyka
$wynik = mysql_query("SELECT IdProduktu, Model, Cena FROM tblprodukty WHERE IdKategorii=4");
while($wiersz = mysql_fetch_row($wynik)) {
echo '
<div class="model2"><a href="opis.php?id=';
echo $wiersz[0];
echo '&IdKategorii=4" class="linia">';
echo $wiersz[1];
echo '</a></div>';
echo '<div class="cena2">';
echo $wiersz[2];
echo '</div>';
echo '<div class="koszyk2">';
echo '<a href="koszyk.php?id='.$wiersz[0].'&IdKategorii=4"><img src="../files/kosz.gif" alt="Koszyk" /></a>';
echo '</div>';
}
=================koszyk.php ->lista produktów
$id_produktu=$_GET['id'];
if(isset($id_produktu))
$_SESSION['koszyk'][$id_produktu]+=1;
foreach ($_SESSION['koszyk'] as $p => $produkt) {
$q=mysql_query("SELECT * FROM tblprodukty WHERE IdProduktu='$p'");
$row=mysql_fetch_array($q);
?>
<div style="background-color:#FFFFFF; margin:3px; padding:5px;">
<div style="font-weight:bold; float:left;"><?php echo $row['Model'];?></div>
<div style="float:right;"><?php echo $_SESSION['koszyk'][$p]?> szt.</div>
<div style="clear:both;"></div>
<div style="float:left; width:150px;"><?php echo $row['Producent'];?></div>
<div style="float:left;"><?php echo $row['Cena']; ?> zł</div>
<div style="float:right;"><a href="usun_produkt.php?id=<?php echo $row['IdProduktu'] ?>" style="text-decoration:none; color:red; font-weight:bold;">[ USUŃ ]</a></div>
<div style="clear:both;"></div>
</div>
<?php
$koszt+=$row['Cena'] * $_SESSION['koszyk'][$p];
}
echo'<div style="margin-top:20px; font-weight:bold; font-size:13px; float:left;">Wartość zakupu: '.$koszt.' zł</div><div style="margin-top:20px;float:right;"><a href="kasa.php">Do kasy</a></div>';
======= usun_produkt.php
$id_produktu=$_GET['id'];
if( count($_SESSION['koszyk'])>0 ) {
unset($_SESSION['koszyk'][$id_produktu]);
@header ('Location: koszyk.php');
}
echo 'Usunięto produkt z koszyka';
======== kasa.php - tutaj wypełniam formularz i zapisuje dane do tabeli, no i wlasnie nie chce mi zapisac do tabeli tblzamowienia
if( !isset($_POST['imie']) ) {
?>
<form method="post" action="kasa.php">
<table>
<tr><td>Imię:</td><td><input type="text" name="imie" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td>Nazwisko:</td><td><input type="text" name="nazwisko" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td colspan="2"> </td></tr>
<tr><td>Kod pocztowy:</td><td><input type="text" name="kod_pocztowy" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td>Miejscowość:</td><td><input type="text" name="miejscowosc" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td>Adres:</td><td><input type="text" name="adres" style="border:1px solid #515151; width:182px;" /> </td></tr>
<tr><td colspan="2"> </td></tr>
<tr><td>Telefon:</td><td><input type="text" name="telefon" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td>Adres e-mail:</td><td><input type="text" name="email" style="border:1px solid #515151; width:300px;" /> </td></tr>
<tr><td></td><td><input type="image" src="gfx/btn_zamow.jpg" /></td></tr>
</table>
</form>
<?php
}
else {
$error=0;
$error_msg="Nie można dokończyć transakcji, ponieważ: <br />";
$imie=trim(strip_tags(addslashes($_POST['imie'])));
$nazwisko=trim(strip_tags(addslashes($_POST['nazwisko'])));
$kod_pocztowy=trim(strip_tags(addslashes($_POST['kod_pocztowy'])));
$miejscowosc=trim(strip_tags(addslashes($_POST['miejscowosc'])));
$adres=trim(strip_tags(addslashes($_POST['adres'])));
$telefon=trim(strip_tags(addslashes($_POST['telefon'])));
$email=trim(strip_tags(addslashes($_POST['email'])));
if( !$imie ) { $error_msg.="+ nie podano imienia<br />"; $error=1; }
if( !$nazwisko ) { $error_msg.="+ nie podano nazwiska<br />"; $error=1; }
if( !$kod_pocztowy ) { $error_msg.="+ nie podano kodu pocztowego<br />"; $error=1; }
if( !$miejscowosc ) { $error_msg.="+ nie podano miasta<br />"; $error=1; }
if( !$adres ) { $error_msg.="+ nie podano nazwy ulicy<br />"; $error=1; }
if( !$telefon ) { $error_msg.="+ nie podano telefonu<br />"; $error=1; }
if( !$email ) { $error_msg.="+ nie podano adresu e-mail<br />"; $error=1; }
if( $error ) printf("%s",$error_msg);
else {
$q=mysql_query("INSERT INTO tblklienci (Imie, Nazwisko, Adres, KodPocztowy, Miejscowosc, Telefon, email) VALUES ('$imie','$nazwisko','$adres','$kod_pocztowy','$miejscowosc','$telefon','$email')");
if( !$q )
print ("Dane <b>nie</b> zostały dodane do bazy. Prosimy o kontakt z administratorem.");
else {
$IdKlienta=mysql_insert_id();
for($i=0;$i<count($koszyk);$i++) {
$IdProduktu=$koszyk[$i];
//-------------------------------------------------------------------------odnalezienie ceny-
$q_cena=mysql_query("SELECT * FROM tblprodukty WHERE tblprodukty.IdProduktu='$IdProduktu'");
$row_cena=mysql_fetch_array($q_cena);
$cena=$row_cena['Cena'];
//-------------------------------------------------------------------------odnalezienie ceny-
$data=date("Y-m-d");
$q=mysql_query("INSERT INTO tblzamowienia (IdProduktu, IdKlienta, Wartosc, Data) VALUES ('$IdProduktu','$IdKlienta','$cena','$data')");
//printf("%s ksiazkaid: %s, cena: %s, data: %s<br /><br />",$osobaid,$ksiazkaid,$cena,$data);
}
if ($q==TRUE) {
printf("Zamówienie zostało przyjęte. Dziękujemy; cena".$cena." i data".$data." i idklienta".$IdKlienta." oraz idproduktu".$IdProduktu."!");
}
else { echo 'Nie udało się dodać zamówienia';}
}
}
}
======== tblzamowienia:
IdZamowienia int(10) UNSIGNED Nie uto_increment
IdProduktu int(10) UNSIGNED Nie 0
IdKlienta int(10) UNSIGNED Nie 0
Wartosc float(7,2) Tak NULL
Data date Nie 0000-00-00
Hazel
19.01.2008, 16:19:03
Ale co się dzieje? Co się wyświetla? Nic, czy komunikat `Nie udało się dodać zamówienia` ?
Zastosuj
mysql_error()" title="Zobacz w manualu PHP" target="_manual i
print_r()" title="Zobacz w manualu PHP" target="_manual w kilku miejscach i sam dojdziesz do tego, co jest nie tak.
dtulacz
19.01.2008, 18:02:23
hmm no jak sprawdzielm, na zasadzie wyswietlenia wartosci... to tylko IdKlienta mi dało jakas wartosc, przy reszcie mialem pusto.
Hazel
19.01.2008, 18:16:19
Sprawdzaj za pomocą jednej z funkcji
print_r" title="Zobacz w manualu PHP" target="_manual,
var_dump" title="Zobacz w manualu PHP" target="_manual czy
var_export" title="Zobacz w manualu PHP" target="_manual wartości tych zmiennych, które zapisujesz do tabeli, bo skoro jedna ma wartość a inne nie, to znaczy po prostu, że zapisujesz puste zmienne, a nie że jest problem z bazą czy zapytaniem.
P.S. Stosuj odpowiednie BBCode, bo Twój kod jest niewyraźny i mało czytelny.
dtulacz
20.01.2008, 21:16:22
Już chyba wiem w czym problem. Jak dodałem linijke:
else {
$koszyk=$_SESSION['koszyk'];
$IdKlienta=mysql_insert_id();
to zaczęła pokazywać się data. Myślę, że sesja źle przekazuje IdProduktu... dlatego nie ma ceny i nie dodaje do bazy.. Zna ktos rozwiązanie na to?
jak dalem instrukcje print_r, to dostalem cos takiego jak Array[1] => 1