typ tablicowy przy zwykłym polu tekstowym

0

Rozumiem, że trzeba użyć typu tablicowego, gdy używam select'a. Mam jednak scrypt, w którym wymagany jest typ tablicowy mimo, że nie korzystam z select'a.

<?php
$liczba_do_odgadniecie=42;
if (!isset($_POST["liczba"])) 
$komunikat="witaj w maszynie zgadującej";
//dalej jest konstrukcja nastepny ifów i elsów, ze względu na możliwość podania liczby
//jesli wpisalem liczbe 42, to:
$komunikat="gratulacje";
?>

I właśnie nie rozumiem dlaczego on chce koniecznie $_POST["liczba"] zamiast $_POST[liczba]? Dlaczego przeglądarka reaguje tak, jakby lepiej ode mnie wiedziała, że mam do czynienia z typem tablicowym? Moją uwagę zwróciło "isset". Wyczytałem, że isset ustala czy zmienna jest ustawiona oraz czy nie jest pusta, ale co to ma do typu tablicowego. Zrozumiałbym, gdyby chodziło o select, ale tutaj nie używam takiego czegoś. Ponadto, gdyby ktoś mogł mi wytłumaczyć co oznacza fakt "ustawionej zmiennej", pewnie lepiej bym zrozumiał funkcję isset. Z góry dzięki za podpowiedzi.

0

$_POST to superglobalna tablica, która zawiera wszystkie dane przesłane metoda POST. Jest to tablica indeksowana w taki sposób, że kluczem jest nazwa zmiennej w formularzu HTML. Więc aby dostać się do indeksu określonego kluczem "liczba" musisz użyć $_POST["liczba"], gdzie słowo liczba jest stringiem.

Ty chcesz $_POST[liczba]? A czym jest to twoje liczba w tym wypadku?

0

Ty chcesz $_POST[liczba]? A czym jest to twoje liczba w tym wypadku?

Za chwilkę wrzucę kod dotyczący $_POST[liczba],bo miałem sytuacje, że wyskoczył mi błąd, gdy napisałem $_POST["liczba"].

0

Wyobraź sobie, że gdy wpisałem $_POST["user"], to wyskoczył mi błąd i zaczęło mi wszystko działać gdy wykasowałem cudzysłowy. Właśnie dlatego nie rozumiem o co biega. Tu działa jak cudzysłowów nie ma, a tam działa gdy są.

<?php

echo "<p>witaj <b> $_POST[user]</b>!</p>";
echo "<p>twoja wiadomosc to: <b>$_POST[wiadomosc]</b></p>";
?>
0

Albo np tutaj. Wywala mi błąd,gdy napiszę $_POST["user"] i właśnie nie rozumiem dlaczego.

<?php
echo "<p>witaj <b>$_POST[user] </b>!</p>"; //witaj i przy pomocy $_POST odwolujemy sie do...
echo "<p>Wybrales nastepujace produkty: </br>";
if (!empty($_POST["produkty"])){
            echo "<ul>";
            foreach($_POST["produkty"] as $wartosc){ //za kazdym razem iteracji wartosc tablicy jest 
                                                                                                //przyporzadkowywana do zmiennej $wartosc
            echo "<li>$wartosc</li>";
            }
        echo "</ul>";

}
else  {
                header("location: gratulacje.html");
                exit;
                }
?>
0

ehhh....
Każdy cudzysłów zaczyna łańcuch znaków, który się ciągnie aż do cudzysłowu zamykającego.
echo "oasndfinasdf $_POST[okoasdask] isjdc"
Taki kod wypluje tego stringa, ale wcześniej PHP będzie próbowało podstawić pod wystąpienie podciągu $_POST zmienną jeżeli taka istnieje. Klamry nie będą interpretowane jako wyłuskanie z tablicy, tylko jako dalszy ciąg łańcucha znaków. Żeby pokazać PHP co chcemy wstawić do stringa używamy nawiasów wąsatych, przykładowo:
echo "asdassd ads fasf {$_POST['elem']} as asasd";

Błąd był (swoją drogą nie napisałeś jaki), ponieważ miałeś złą składnię.
"ichsidjc as $_POST[" - to był poprawny string, być może z podstawioną tablicą pod $_POST
dalej był nierozpoznany leksem user
oraz znowu string "] shfh asdfhasdhf kas"

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