• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Foreach wyświetla prawidłowo wynik ale nie zapisuje do bazy

0 głosów
775 wizyt
pytanie zadane 8 stycznia 2023 w PHP przez dee Początkujący (360 p.)

Witam.  Mam problem z kodem 
 

<?php
 
$getpost = ( $_POST )[ 'native-select' ];
$getpost2 = ( $_POST )[ 'native-select2' ];
$pieces = explode( ",", $getpost );
$pieces2 = explode( ",", $getpost2 );
if ( !empty( $_POST[ 'native-select' ] ) && isset( $_POST[ 'native-select' ] ) ) {
$nazwa_zawody = 'Firtst Timers 02.10.2022';
 echo '<h5>Firtst Timers 02.10.2022</h5>';
 foreach ( $pieces as $kategorie_wynik ) {
 $cena_jednostki = count($pieces)*150;
 $suma_cen = $cena_zawodow + $cena_jednostki;
   echo $kategorie_wynik;
  echo "<br>";
 }
echo '<hr>';
echo "$suma_cen zł";
echo '<hr>';
echo '<hr>';
 } else {
 echo '.';
 
}
 
 
?>

chodzi o  $kategorie_wynik jeżeli daje echo to ładnie my wyświetla linijka po linijce dane z formularza ale jak chce dodać do bazy to nie działa i nic sie nie oddaje 
 

<?php
 
$getpost = ( $_POST )[ 'native-select' ];
$getpost2 = ( $_POST )[ 'native-select2' ];
$pieces = explode( ",", $getpost );
$pieces2 = explode( ",", $getpost2 );
if ( !empty( $_POST[ 'native-select' ] ) && isset( $_POST[ 'native-select' ] ) ) {

$nazwa_zawody = 'Firtst Timers 02.10.2022';
echo '<h5>Firtst Timers 02.10.2022</h5>';
foreach ( $pieces as $kategorie_wynik ) {
$cena_jednostki = count($pieces)*150;

$suma_cen = $cena_zawodow + $cena_jednostki;
 
echo $kategorie_wynik;
echo "<br>";
$sql = "INSERT INTO `zamowienie`(`uid`, `zawody1`, `kategorie1`, `suma_zawody1`) VALUES ('$uid','$nazwa_zawody','$kategorie_wynik','$suma_cen')";
$result = $conn->query($sql);
 }
echo '<hr>';
echo "$suma_cen zł";
echo '<hr>';
echo '<hr>';
 } else {
 echo '.';
 }
 ?>

sprawdziłem wszystkie zmienne i przestaje si dodawać jak wpisuje $kategorie_wynik do linijki z zapisem bazy 

4 odpowiedzi

+2 głosów
odpowiedź 8 stycznia 2023 przez Wiciorny Ekspert (282,600 p.)
Masz 3 typy:
Upewnij się, że tabela zamówienie istnieje w bazie danych i ma odpowiednie kolumny o nazwach uid, zawody1, kategorie1 i suma_zawody1.

Sprawdź, czy zapytanie SQL jest prawidłowe i czy nie ma błędów składni. Możesz to zrobić, przepisując je do programu obsługującego bazy danych, takiego jak MySQL Workbench lub podobnego.

Jeśli skrypt PHP jest wywoływany po wysłaniu formularza, a połączenie z bazą danych jest poprawne i zapytanie SQL jest prawidłowe, a nadal nic się nie dzieje, sprawdź, czy nie ma błędów PHP. Możesz to zrobić, wyświetlając błędy za pomocą funkcji error_get_last().

Generalnie jeśli to działa, to istnieje duża szansa, że sprawdź czy dane są odpowiednie w zakresie tego co zapisujesz do bazy danych I jeszcze upewnij się, że formularz wysyła dane metodą POST i że zmienne $_POST['native-select'] i $_POST['native-select2'] są poprawnie przekazywane do skryptu PHP. Możesz to zrobić, wyświetlając zawartość tych zmiennych za pomocą var_dump($_POST['native-select']) i var_dump($_POST['native-select2']).

Sprawdź jeszcze w takim razie zmienną $kategorie_wynik
var_dump($kategorie_wynik)
Dodatkowo, czy zmienna $kategorie_wynik nie zawiera żadnych znaków specjalnych, takich jak apostrofy lub ukośniki, które mogą spowodować błędy w zapytaniu SQL np używając funkcji mysqli_real_escape_string() do przefiltrowania zmiennej $kategorie_wynik przed wstawieniem jej do zapytania SQL.
2
komentarz 8 stycznia 2023 przez dee Początkujący (360 p.)
Faktycznie okazało sie z w nazwach kategorii zawodów jest apostrof "MEN'S MR CLASS 4" problem rozwiązany dziękuję Ci za pomoc
komentarz 8 stycznia 2023 przez Wiciorny Ekspert (282,600 p.)
fajnie, że się udało.
1
komentarz 8 stycznia 2023 przez obl Maniak (51,300 p.)

@dee, a i kolejny powód żeby używać bindowania.

+1 głos
odpowiedź 8 stycznia 2023 przez obl Maniak (51,300 p.)

Używasz PDO do połączenia z bazą? Jeżeli tak to używaj bindowania do dodawania danych do bazy, inaczej prosisz się o kłopoty. Chodzi o tą linijkę:

$sql = "INSERT INTO `zamowienie`(`uid`, `zawody1`, `kategorie1`, `suma_zawody1`) VALUES ('$uid','$nazwa_zawody','$kategorie_wynik','$suma_cen')";

Tu masz dokumentację: https://www.php.net/manual/en/pdostatement.bindparam.php

A co do problemu to sprawdź czym jest $results jeżeli jest false to znaczy, że zapytanie się nie powiodło. I spróbuj użyć tego do sprawdzenia gdzie szukać przyczyny: https://www.php.net/manual/en/pdo.errorinfo.php

A tu masz przykład jak używać PDO z bindowaniem: https://www.obliczeniowo.com.pl/693

P.S.
Tylko nie wiem, czy ty PDO używasz do połączenia z bazą ale chyba tak.

0 głosów
odpowiedź 8 stycznia 2023 przez SzkolnyAdmin Szeryf (90,270 p.)
Jakieś komunikaty błędów? Gdzie masz połączenie z bazą?
komentarz 8 stycznia 2023 przez dee Początkujący (360 p.)
php ni wypluwa żadnych błędów. Połączenie z bazą jest prawidłowe ponieważ zapisuje inne rzeczy i wszystko dodaje sie prawidłowo. dodałem raportowanie błędów z sql i tez nic nie wyświetla :(
komentarz 8 stycznia 2023 przez SzkolnyAdmin Szeryf (90,270 p.)
edycja 8 stycznia 2023 przez SzkolnyAdmin
Spróbuj wyświetlić zapytanie na stronie zanim wyślesz je do bazy - zobaczysz, czy ma prawidłową budowę. Spróbuj również "ręcznie" dodać wyświetlony rekord do bazy np. w panelu phpMyAdmin. Może problem tkwi po stronie bazy - jaka jest struktura rzeczonej tabeli?
komentarz 8 stycznia 2023 przez dee Początkujący (360 p.)

Jak podmieniam w 
 

$sql = "INSERT INTO `zamowienie`(`uid`, `zawody1`, `kategorie1`, `suma_zawody1`) VALUES ('$uid','$nazwa_zawody','$kategorie_wynik','$suma_cen')";

$kategorie_wynik na 'test' do dodaje mi dobrze i tyle rekordów ile jest w tablicy $getpost
 

0 głosów
odpowiedź 8 stycznia 2023 przez dee Początkujący (360 p.)
Problem został rozwiązany dziękuje wszystkim za pomoc

Podobne pytania

+1 głos
1 odpowiedź 193 wizyt
0 głosów
1 odpowiedź 1,225 wizyt
pytanie zadane 11 maja 2020 w PHP przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 408 wizyt
pytanie zadane 1 stycznia 2023 w PHP przez dee Początkujący (360 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2459p. - CC PL
  9. 2184p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...