Problem z isset

0

Witam jestem tu pierwszy raz więc proszę o wyrozumiałość.
Czy ktoś jest w stanie pomóc dlaczego fragment z isset nie działa ?

<?php
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
$adres=$_POST['adres'];
$telefon=$_POST['telefon'];
$polaczenie=mysqli_connect('localhost','root','','sklep');

if(isset($imie)&&isset($nazwisko)&&isset($adres)&&isset($telefon))
{
$zapytanie=mysqli_query($polaczenie,"INSERT INTO uzytkownicy VALUES (null,'$imie','$nazwisko','$adres','$telefon')");
echo ("Użytkownik".$imie."".$nazwisko." został dodany do bazy"."</br>");
}
else
echo "wypełnij formularz kontaktowy"."</br>";
$login=$_POST['login'];
$haslo=$_POST['haslo'];

if(empty($login)|| empty($haslo)) echo"Proszę podać dane logowania"."</br>";
else{
$zapytanie2=mysqli_query($polaczenie,"INSERT INTO KONTA values(null,'$login','$haslo')");
mysqli_close($polaczenie);
echo "zapamietano dane logowania";
};
?>
8

Po pierwsze - napisz konkretnie, co oznacza isset nie działa, bo dość kiepsko opisałeś swój błąd.

Po drugie - możesz skorzystać z najprostszej metody debugowania i dodać coś w stylu

if(isset(xxx)) {echo 'zmienna xxx jest zainicjowana';}

I w ten sposób sprawdź każdą ze zmiennych ze zbioru isset($imie)&&isset($nazwisko)&&isset($adres)&&isset($telefon) - bo zakładam, że to ten fragment jest problematyczny.

Możesz jeszcze sprawdzić, czy wartości są poprawnie przesyłane przez $_POST w analogiczny sposób (z użyciem echo i wywaleniem ich wartości na ekran)

1

Nie żeby coś, ale o takim czymś jak formatowanie kodu, spacje, itp. słyszałeś? Bo kodu mało a strasznie się na to patrzy.

6

wszystkie zmienne, które masz w ifie są zadeklarowane, więc dla każdego z nich isset zwróci true. Zawsze. Może chodziło Ci bardziej o coś takiego?

<?php
$imie       = $_POST['imie'];
$nazwisko   = $_POST['nazwisko'];
$adres      = $_POST['adres'];
$telefon    = $_POST['telefon'];
$polaczenie = mysqli_connect('localhost', 'root', '', 'sklep');

if (!empty($imie) && !empty($nazwisko) && !empty($adres) && !empty($telefon)) {
    $zapytanie = mysqli_query($polaczenie, "INSERT INTO uzytkownicy VALUES (null,'$imie','$nazwisko','$adres','$telefon')");
    echo ("Użytkownik" . $imie . "" . $nazwisko . " został dodany do bazy" . "</br>");
} else
    echo "wypełnij formularz kontaktowy" . "</br>";
$login = $_POST['login'];
$haslo = $_POST['haslo'];

if (empty($login) || empty($haslo))
    echo "Proszę podać dane logowania" . "</br>";
else {
    $zapytanie2 = mysqli_query($polaczenie, "INSERT INTO KONTA values(null,'$login','$haslo')");
    mysqli_close($polaczenie);
    echo "zapamietano dane logowania";
}

Po drugie, nie pobieraj bezpośrednio danych od użytkownika i wrzucaj do bazy danych. Jest to turbo niebezpieczne. Po drugie, lepiej jest używać PDO https://phpdelusions.net/pdo. Po trzecie, formatowanie kodu. Jak nie wiesz jak to używaj choćby czegoś takiego albo w swoim IDE włącz automatyczne formatowanie (jeśli używasz).

1

Z insetem zawsze były problemy, Jeśli wartość jest NULL to inset zwróci false ale jeśli wartość jest pusta np spacja czy pusta wartość to zwróci true.
Możesz też użyć skrótu

if (isset( $imie, $nazwisko, $adres, $telefon      )) 

tak samo dla empty itd. No i nie używaj polskich nazw zmiennych

2

jeśli wartość jest pusta np spacja to zwróci true.

No ale spacja przecież nie jest wartością pustą, tylko znakiem. To, że jej nie widzisz nie oznacza, że tam niczego nie ma :p

0

No tak dlatego mowie ze dla nas to pusta wartość ale inset zwróci true bo dla niego jest ustawiona jako znak spacji

1 użytkowników online, w tym zalogowanych: 0, gości: 1