![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 19.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Kończę robić swój pierwszy projekt sklepu internetowego, jest to moja praca licencjacka, skrypty związane z zamawianiem asortymentu chodzą, zamówienia zostają dodawane do bazy danych. Wszystko ok. Doszedłem do wniosku że fajnie by było dodawać/uaktualniać stan asortymentu w bazie danych z poziomu przeglądarki za pomocą formularza Tak wygląda mój formularz. Posiadam dwie kategorie opał oraz materiały budowlane, to każdej z tych kategorii mam osobny skrypt administracyjny za pomocą którego mogę zmieniać cenę, stan produktu. Tylko niestety z tych dwóch skryptów nie działa mi jeden, odpowiedzialny za dodawania materiałów budowlanych. Podczas próby dodania produktu dostaję komunikat:w skrypcie add_specific_bud.php' wystąpił błąd w wierszu 32: mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: Number of elements in type definition string doesn't match number of bind variables Rozumiem treść Erorra ale nie potrafię sobie z tym poradzić. CODE <?php ob_start(); // Dzięki temu skryptowi administrator ma możliwość dodawania materiałów budowlanych do bazy danych. // Dołączyłem plik konfiguracyjny przed kodem PHP z powodu obsługi błędów. require ('./config.inc.php'); // Ustawienie tytuł strony oraz dołączenie pliku nagłówka: $page_title = 'Dodaj Budowlane'; include ('./header.html'); // Rozpoczynanie sesji odbywa się w pliku nagłówka. // Dołączam plik ze skryptem którego zadaniem jest nawiązanie połączenia z bazą danych: require(MYSQL); $count = 10; // Sprawdza, czy doszło do przesłania formularza: if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Sprawdza kategorię: if (isset($_POST['category']) && filter_var($_POST['category'], FILTER_VALIDATE_INT, array('min_range' => 1))) { // Definiuje kwerendę: $q = 'INSERT INTO specific_bud (general_bud_id, size_id, price, stock) VALUES (?, ?, ?, ?)'; // Przygotowuje zapytanie: $stmt = mysqli_prepare($dbc, $q); // Łączy zmienne: mysqli_stmt_bind_param($stmt, 'iissdi', $_POST['category'], $size, $price, $stock); //+ // Zmienna której zadaniem jest przechowywanie liczby zmodyfikowanych wierszy: $affected = 0; // Za pomocą pętili przechodzi przez wszystkie zaktualizowane pozycje: for ($i = 1; $i <= $count; $i++) { // Sprawdza wymagane wartości: if (filter_var($_POST['stock'][$i], FILTER_VALIDATE_INT, array('min_range' => 1)) && filter_var($_POST['price'][$i], FILTER_VALIDATE_FLOAT) && ($_POST['price'][$i] > 0) ) { // Przypisuje wartości do zmiennych: $size = $_POST['size'][$i]; $price = $_POST['price'][$i]; $stock = $_POST['stock'][$i]; // Wykonuje kwerendę: mysqli_stmt_execute($stmt); //+ // Dodaje liczbę zaktualizowanych wierszy: $affected += mysqli_stmt_affected_rows($stmt); //+ } // Zakończenie instrukcji IF. } // Zakończenie pętli FOREACH. // Wyświetla liczbę zmodyfkowanych wierszy: echo "<h4>$affected Liczba dodanych produktów!</h4>"; } else { echo '<p class="error">Wybierz kategorię.</p>'; } } // Zakończenie instrukcji IF której zadaniem jest sprawdzenie przesłania formularza. ?><h3>Dodaj Budowlane:</h3> <form action="add_specific_bud.php" method="post" accept-charset="utf-8"> <fieldset><legend>Wypełnij formularz, aby dodać określony materiał budowlany do katalogu sklepu.</legend> <div class="field"><label for="category"><strong>Ogólny typ materiału</strong></label><br /> <select name="category"><option>Wybierz...</option> <?php $q = 'SELECT id, category FROM general_bud ORDER BY category ASC'; $r = mysqli_query ($dbc, $q); while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { echo "<option value=\"$row[0]\">$row[1]</option>\n"; } ?> </select></div> <table border="0" width="100%" cellspacing="5" cellpadding="5"> <thead> <tr> <th align="right">Wielkość</th> <th align="center">Cena</th> <th align="center">Stan magazynowy</th> </tr> </thead> <tbody> <?php $q = 'SELECT id, size FROM sizes ORDER BY id ASC'; $r = mysqli_query ($dbc, $q); $sizes = ''; while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { $sizes .= "<option value=\"$row[0]\">$row[1]</option>\n"; } // Tworzy zestaw pól dla $count produktów: for ($i = 1; $i <= $count; $i++) { echo '<tr> <td align="right"><select name="size[' . $i . ']">' . $sizes . '</select></td> <td align="center"><input type="text" name="price[' . $i . ']" class="small" /></td> <td align="center"><input type="text" name="stock[' . $i . ']" class="small" /></td> </tr> '; } // Zakończenie pętli FOR. ?></tbody> </table> <div class="field"><input type="submit" value="Dodaj produkty" class="button" /></div> </fieldset> </form> <?php // Dołączam plik ze stopką: include ('./footer.html'); ob_end_flush(); ?> Jak by ktoś mógł coś poradzić, byłbym wdzięczny. Do zakończenia projektu pozostał mi do rozwiązania ten jeden błąd z którym nie wiem jak się uporać. Ten post edytował Endure 24.10.2012, 16:30:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 29.09.2025 - 11:35 |