Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z dodaniem zamówienia do bazy
Forum PHP.pl > Forum > PHP
dtulacz
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
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
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
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
hmm no jak sprawdzielm, na zasadzie wyswietlenia wartosci... to tylko IdKlienta mi dało jakas wartosc, przy reszcie mialem pusto.
Hazel
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
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.