Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] problem z zapisem zamówienia do bazy
Forum PHP.pl > Forum > PHP
garroter
Witam !
Jestem tu nowy i nie chcę wyjść na ignoranta... przeszukiwałem forum by znaleźć jakieś rozwiązanie, jednak nic mi się nie nasunęło. Tworzę BARDZO prosty sklepik i na własne potrzeby. Do tej pory zrobiłem to czego klient będzie potrzebował najbardziej, dodawanie, edycja produktów.. wszystko chodzi ładnie, na sesjach. Problem mam z zapisaniem zamówienia do bazy. Po wykonaniu się skryptu kod wygląd ładnie i czytelnie, nie wiem gdzie popełniłem błąd i dlaczego baza nie przyjmuje rekordu sad.gif Poniżej kod :

  1. <?php
  2.  
  3.  mysql_select_db (shop);
  4.  
  5. if($dupa=='1') {
  6.  $zapytanie = "INSERT INTO order SET stuff='$stuff', pricepl='$pricepl', qty='$qty', pprice='$produtsprice', total='$total', kurier='$kurier', alltotal='$alltotal', nazwisko='$nazwisko', email='$email', adress='$adress', comments='$comments'";
  7.  $wykonaj = mysql_query ($zapytanie);
  8. if($wykonaj) {
  9.  echo '<h1>Twoje zamówienie zostało przesłane</h1>';
  10. }
  11. else {
  12.  echo '<h1>Błąd! Prawdopodobnie pominąłeś któreś z pól, bądź nie wybrałeś kuriera.</h1>';
  13. }
  14. }
  15. else {
  16. ?>
  17. <div id="contents">
  18.  
  19. <h1>Finalizuj zamówienie</h1>
  20.  
  21. <?php
  22. $cart = $_SESSION['cart'];
  23. if ($cart) {
  24. $items = explode(',',$cart);
  25. $contents = array();
  26. foreach ($items as $item) {
  27. $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
  28. }
  29. echo '<form action="?nav=11&dupa=1" method="post" id="cart">';
  30. echo '<table>';
  31. foreach ($contents as $id=>$qty) {
  32. $sql = 'SELECT * FROM kompakty WHERE id = '.$id;
  33. $result = mysql_query ($sql);
  34. $row = mysql_fetch_array ($result);
  35. extract($row);
  36. echo '<tr>';
  37. echo '<td>'.$title.'<input type="hidden" name="stuff" value="'.$title.'" /></td>';
  38. echo '<td>'.$pricepl.' pln<input type="hidden" name="pricepl" value="'.$pricepl.'" /></td>';
  39. echo '<td>'.$qty.'<input type="hidden" name="qty" value="'.$qty.'" /></td>';
  40. echo '<td>'.($pricepl * $qty).' pln<input type="hidden" name="produtsprice" value="'.($pricepl * $qty).'" /></td>';
  41. $total += $pricepl * $qty;
  42. echo '</tr>';
  43. }
  44. echo '<tr>';
  45.  $poczta = $_GET['poczta'];
  46.  switch($poczta) {
  47. case "0": { $rate=5.00; break; }
  48. case "1": { $rate=10.00; break; }
  49.  }
  50. $kurier=$rate;
  51. echo '<td colspan="4" class="doprawej"><h1>Wybierz kuriera :</h1> <a href="?nav=11&poczta=0">Przy wpłacie na konto - przesyłka polecona [5 pln]</a><br/> <a href="?nav=11&poczta=1">Płatne przy odbiorze - za pobraniem [10 pln]</a></td>';
  52. echo '</tr>';
  53. echo '</table><br/>';
  54. echo '<div class="total">Towar: <b>'.$total.' pln</b><input type="hidden" name="total" value="'.$total.'" /><br/>';
  55. if ($kurier) {
  56.  echo 'Kurier: <b>'.$kurier.' pln</b><input type="hidden" name="kurier" value="'.$kurier.'" />';
  57. }
  58. $alltotal += $total + $kurier;
  59. echo '<hr/><h1>Razem : '.$alltotal.' PLN</h1><input type="hidden" name="alltotal" value="'.$alltotal.'" />';
  60. echo '</div>';
  61. echo '<hr/>';
  62.  
  63. echo '<br/><h1>Wypełnij dokładnie WSZYSTKIE pola formularza :</h1><br/>';
  64.  
  65. echo ' <table id="dane">';
  66. echo ' <tr>';
  67. echo '  <td>Imię i Nazwisko<br/><input type="text" name="nazwisko" maxlenght="50" size="34"/></td>';
  68. echo '  <td>e-mail<br/><input type="text" name="email" maxlenght="40" size="34"/></td>';
  69. echo ' </tr>';
  70. echo ' <tr>';
  71. echo '  <td>Adres<br/><textarea name="adress" cols="28" rows="7"></textarea></td>';
  72. echo '  <td>Uwagi do zamówienia<br/><textarea name="comments" cols="28" rows="7"></textarea><br/>';
  73. echo ' <div class="right"><button type="submit"> Zamawiam </button></div></td>';
  74. echo ' </tr>';
  75. echo '</table>';
  76.  
  77. echo '</form>';
  78. }
  79.  
  80. ?>
  81. </div>
  82.  
  83. <hr/>
  84. <?php } ?>


już teraz widzę, że będzie problem z zapisem pierwszej części zamówienia (produktów, cen ilości itd.) ale do tego jeszcze nie doszedłem. na razie testuję to przy dodawaniu jednego produktu, nie działa sad.gif próbowałem nawet prostego zabiegu i zapytanie sql skróciłem do wstawienia danych z imieniem i nazwiskiem, też nic z tego...

Tutaj tabela :

  1. CREATE TABLE `order` (
  2. `id` int(3) NOT NULL AUTO_INCREMENT,
  3. `stuff` blob,
  4. `pricepl` decimal(3,2) DEFAULT '0.00',
  5. `priceworld` decimal(3,2) DEFAULT '0.00',
  6. `qty` int(2) DEFAULT '0',
  7. `pprice` decimal(3,2) DEFAULT '0.00',
  8. `total` decimal(3,2) DEFAULT '0.00',
  9. `kurier` decimal(3,2) DEFAULT '0.00',
  10. `alltotal` decimal(3,2) DEFAULT '0.00',
  11. `nazwisko` varchar(50) DEFAULT NULL,
  12. `email` varchar(40) DEFAULT NULL,
  13. `adress` blob,
  14. `comments` blob,
  15. PRIMARY KEY (`id`)
  16. ) TYPE=MyISAM AUTO_INCREMENT=1 ;


geniuszem w php ani mysql nie jestem i brak mi praktyki, podejrzewam że problem nie jest zbyt "głęboki". Jeśli ktoś z Was ma jakiś pomysł to proszę o podzielenie się... z góry dziękuję smile.gif


// prosze pamietac o odpowienim bbCode -- dr_bonzo
Noddi
Proponuje przejrzeć składnie zapytania do bazy: http://dev.mysql.com/doc/refman/5.0/en/insert.html

I należałoby wcześniej się połączyć za bazą danych: http://dev.mysql.com/doc/refman/5.0/en/mysql-connect.html
garroter
Cytat(Noddi @ 19.05.2007, 15:39:30 ) *
Proponuje przejrzeć składnie zapytania do bazy: http://dev.mysql.com/doc/refman/5.0/en/insert.html

I należałoby wcześniej się połączyć za bazą danych: http://dev.mysql.com/doc/refman/5.0/en/mysql-connect.html

faktycznie można to poprawić... naukę opierałem na kursie Mateusz Dutkiewicz dla Webinside i pisałem metodą proponowaną w tym kursie. zdaje się że przestarzała już winksmiley.jpg ok do poprawy

a połączenie z bazą danych uzyskuje wcześniej winksmiley.jpg

dziękuje za pierwsze wskazówki smile.gif

Okej, pierwsza wskazówka okazała się trafna smile.gif dzięki wielkie Noddi, naprawdę cholernie pomogłeś a ja się z tego powodu cholernie cieszę biggrin.gif jeśli jeszcze napotkam na jakiś problem to się odezwę ale mam cichą nadzieję, że to już nie będzie konieczne winksmiley.jpg

dzięki wielkie i pozdrawiam !
Medicom
Cześć
Nie wiem czy już sobie poradziłeś, ale jak widzę twoją strukturę bazy trochę mnie dziwi jedna rzecz. Ta tabela nie jest referencyjna, powtarza się w niej dane

Podam ci przykład z mojego sklepu:

  1. CREATE TABLE `zamowienia` (
  2. `ind` bigint(15) NOT NULL AUTO_INCREMENT,
  3. `nr_dok_in` varchar(16) NOT NULL DEFAULT '',
  4. `kontrahent` varchar(10) NOT NULL DEFAULT '',
  5. `sesja` varchar(100) NOT NULL DEFAULT '',
  6. `data` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7. `zatwierdz` int(1) NOT NULL DEFAULT '0',
  8. `towar` varchar(20) DEFAULT NULL,
  9. `ilosc` double(15,3) DEFAULT NULL,
  10. `cena` double(15,2) DEFAULT NULL,
  11. `vat` int(3) DEFAULT NULL,
  12. KEY `ind` (`ind`),
  13. KEY `sesja` (`sesja`,`kontrahent`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=42 ;


takie rzeczy jak imię i nazwisko klienta pobiera się przez subselecty z innej tabeli po to u mnie jest kontrahent i towar jako klucze obce.
Jak u ciebie z nadmiarowością w wypadku takiej tabeli jak u ciebie? Pytam z ciekawości bo właśnie jestem na etapie wersji finalnej sklepu i już jest testowana.
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.