Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak wyciągnąć wartość zmiennej z adresu URL?

tomek_programista 18 Cze 2011 12:06 2444 28
  • #1 18 Cze 2011 12:06
    tomek_programista
    Poziom 19  

    Witam
    Na razie doszedłem do tego aby w zmiennej znajdował się cos takiego:

    Code:

    post.php?id=10

    Ale nie wiem, jak mam wyciągnąć wartość zmiennej(id) z tego kodu?

    0 28
  • Pomocny post
    #2 18 Cze 2011 12:22
    marcinj12
    Poziom 40  

    Jeżeli wywołujesz to przez formularz metodą GET (post.php jest co najmniej mylące...) albo jest to po prostu fragment adresu, to odwołujesz się do tego przez $_GET['id'], np.

    Kod: php
    Zaloguj się, aby zobaczyć kod

    Warto przed tym sprawdzić, czy zmienna jest ustawiona, czyli całość:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #4 18 Cze 2011 15:47
    winuser2
    Poziom 17  

    Chyba widać

    Code:
    post.php?id=10


    ?

    0
  • #5 18 Cze 2011 15:59
    elly1337
    Poziom 15  

    PHP/MySQL? Mozesz zrobic np. tak:

    Code:
    $query = "SELECT id, towar FROM magazyn ORDER BY id DESC";
    
    $result = mysql_query($query);
    echo 'Lista towarow<br><br>';
    while ($row = mysql_fetch_assoc($result))
    {
    echo 'ID: '.$row['id'].' / ';
    echo 'Towar: '.$row['towar'].' / ';
    echo '<a href="towar.php?id='.$row['id'].'">wiecej</a><br>';
    }
    echo '<br>';
    ?>


    dzieki temu bedziesz mial wyswietlana liste czegos z mysql i po kliknieciu na "wiecej" przeteleportuje cie na towar.php?id=ID_TOWARU

    w towar.php dajesz:

    Code:
        $idtowaru = (int)$_GET['id']; 
    
        $query = mysql_query("select * from magazyn where id='$idtowaru'");
        $dany_rekord = mysql_fetch_array($query);


    i gotowe. potem podstawiasz rekordy ktore wyswietla ci np. opis towaru etc

    0
  • #6 18 Cze 2011 17:29
    tomek_programista
    Poziom 19  

    Teraz mam problem z tymi dwoma plikami.
    Kiedy wciskam wyślij, wszystko się resetuje.
    post_odp.php:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    post_odp.html:
    Kod: html
    Zaloguj się, aby zobaczyć kod

    0
  • #7 18 Cze 2011 20:31
    chemicalkash
    Poziom 19  

    Nie zagłębiam się zbytnio w kod bo jestem lamerem jeżeli chodzi o php, ale w tym fragmencie używasz raz 'watek' a raz 'wantek'. Wygląda mi to na potęcjalne źródło błędu

    Kod: php
    Zaloguj się, aby zobaczyć kod
    Upewnij się jak nazywa się twoja zmienna GET. Jeżeli się mylę to sorry.

    0
  • #8 19 Cze 2011 08:08
    tomek_programista
    Poziom 19  

    Niestety, ale to nie to.

    0
  • #9 19 Cze 2011 10:33
    marcinj12
    Poziom 40  

    To co wkleiłeś to są pełne pliki?? Bo jeśli tak, to zastanawia mnie gdzie jest zdefiniowany parametr GET: skoro formę wysyłasz tak:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    to nie ma tam nic co by można odebrać z tablicy $_GET.

    Najlepiej na potrzeby testowania włącz raportowanie błędów i sprawdź, co się wyświetli: na początku strony .php wklej:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #10 19 Cze 2011 20:54
    Dragas
    Poziom 26  

    Jesli coś wysyłasz, a nie wiem czy dobrze to działa, to możesz użyć takigo czegoś:

    Code:

    foreach($_GET as $k1 => $v1)
    {
      echo 'GET: '.$k1.': '.$v1.'<br>';
    }

    foreach($_POST as $k2 => $v2)
    {
      echo 'POST: '.$k2.': '.$v2.'<br>';
    }

    0
  • #11 19 Cze 2011 21:00
    Dżyszla
    Poziom 42  

    Dragas napisał:
    Jesli coś wysyłasz, a nie wiem czy dobrze to działa, to możesz użyć takigo czegoś:
    Code:

    foreach($_GET as $k1 => $v1)
    {
      echo 'GET: '.$k1.': '.$v1.'<br>';
    }

    foreach($_POST as $k2 => $v2)
    {
      echo 'POST: '.$k2.': '.$v2.'<br>';
    }
    To już dużo prościej
    Kod: php
    Zaloguj się, aby zobaczyć kod
    ;)

    0
  • #12 20 Cze 2011 22:18
    tomek_programista
    Poziom 19  

    Zmieniłem wszystkie POST na GET i działa.
    Ale teraz mam problem z tym, że gdy napiszę jakąś wiadomość i w wiadomości przejdę do następnej linijki, to w bazie danych zapisuje to w jednej linijce.
    Co mam robić, żeby tak się nie działo?

    0
  • #14 20 Cze 2011 22:47
    tomek_programista
    Poziom 19  

    Takie coś:

    Code:

    post_odp.php?temat=test&tresc=test%0D%0Anowa+linijka

    Jednak w bazie danych zapisuję się ze znakiem entera.
    Dopiero podczas odczytu ten znak jet pomijany.
    Dla czego tak się dzieje?

    0
  • Pomocny post
    #16 21 Cze 2011 18:03
    Dragas
    Poziom 26  

    Przy zapisie do bazy dodaj taką linijkę:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    Zmieni ona w odebranym tekście wszystkie entery na znacznik ,br>, który odpowiada przejściu do kolejnego wiersza.

    0
  • #17 21 Cze 2011 18:26
    Dżyszla
    Poziom 42  

    Dragas napisał:
    Przy zapisie do bazy dodaj taką linijkę:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    Zmieni ona w odebranym tekście wszystkie entery na znacznik ,br>, który odpowiada przejściu do kolejnego wiersza.
    Jeśli już, to "\n\r" (albo "\r\n") - nigdy nie pamiętam kolejności ;) A potem jeszcze "\n" (albo "\r") tak samo - jakby ktoś korzystał pod Linuxem.

    0
  • #18 22 Cze 2011 15:44
    tomek_programista
    Poziom 19  

    Niestety, ale to nie działa.

    0
  • #19 22 Cze 2011 15:47
    Dragas
    Poziom 26  

    A możesz wrzucić kod dodawania i odczytu?

    0
  • #20 22 Cze 2011 22:27
    tomek_programista
    Poziom 19  

    Zapis:

    post.php

    Kod: php
    Zaloguj się, aby zobaczyć kod


    post.html
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Odczyt:
    Kod: php
    Zaloguj się, aby zobaczyć kod
    [/code]

    0
  • Pomocny post
    #21 22 Cze 2011 22:31
    Dragas
    Poziom 26  

    Rozwiązanie jest banalne:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    W następnej linijce nie może być ani jedna spacja.

    0
  • #23 23 Cze 2011 11:56
    Dragas
    Poziom 26  

    Kiedyś z tymi \n\r miałem problemy i dlatego wolę używać entery. Jeszcze igdy mnie nei zawiodły, niezależnie od systemu.

    0
  • #24 23 Cze 2011 14:42
    tomek_programista
    Poziom 19  

    U mnie też to działa.:D

    0
  • #25 24 Cze 2011 22:07
    bar-t
    Poziom 8  

    No nie do końca, bo edytując plik pod windowsem zapisujesz entera w formacie \n\r (nowa linia, powrót 'kursora'), a systemu unixowe używają samego \n, co może powodować konflikty. Możesz użyć

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #26 16 Lip 2011 21:00
    tomek_programista
    Poziom 19  

    A jak zapisać datę i czas do zmiennej?
    Tylko tak, żeby każda liczba była osobno.

    0
  • #27 16 Lip 2011 22:14
    Dżyszla
    Poziom 42  

    W systemach unixowych wykorzystuje się znacznik czasowy, który jest ilością sekund jakie upłynęły od początku pewnej ustalonej daty. Stąd jest tylko jedna funkcja, która pobiera datę i czas jednocześnie. Jednak mając te informacje wystarczą podstawy matematyki, by dostrzec, że część całkowita z dzielenia tej liczby przez 86400 da po prostu liczbę dni (a więc datę), zaś reszta z dzielenia przez tą liczbę wyrazi liczbę sekund od początku doby. Tylko po co?

    0
  • #28 16 Lip 2011 22:36
    tomek_programista
    Poziom 19  

    A mogę dostać jakiś przykład w kodzie?

    0