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

question-closed Jak przesłać id które jest zmienną do php

Object Storage Arubacloud
0 głosów
490 wizyt
pytanie zadane 16 sierpnia 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
zamknięte 17 sierpnia 2016 przez Mistrz0000000

Mam taką funckję w php: 

function load_payment_list()
{
    $status = "oczekiwanie";
    $stmt = getDBH()->prepare("SELECT * FROM payments WHERE status=:status");
    $stmt->bindParam(':status', $status, PDO::PARAM_STR);
    $stmt->execute();

    while ($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo ' <tr>
            <form action="" method="POST">
            <th name="'.$r['id'].'">'.$r['id'].'</th>
            <th>'.$r['count'].'</th>
            <th>'.$r['price'].' PLN</th>
            <th>'.$r['steamid'].'</th>
            <th><button type="submit" name="accept_payment">Zatwierdz</button></th>
            </form>
            </tr>';
    }
}

i nie wiem jak przesłać te id

<th name="'.$r['id'].'">'.$r['id'].'</th>

po wciśnięciu przycisku do php

komentarz zamknięcia: Naprawione. Zamaist $stmt = getDBH()->prepare("UPDATE payments SET status = :text WHERE id = :id"); miałem $stmt = getDBH()->prepare("UPDATE payments SET status = :text,WHERE id = :id");

3 odpowiedzi

+1 głos
odpowiedź 16 sierpnia 2016 przez maly Nałogowiec (37,190 p.)
<th> to nagłówek tabeli, nie jest elementem dla form.
0 głosów
odpowiedź 16 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
Przed wciśnięciem przycisku te id jeszcze nie istnieje? Jeśli nie, to musisz użyć AJAX'a, aby asynchronicznie przesłać to do skryptu php (asynchronicznie - bez przeładowania strony)
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
to id jest pobierane z bazy danych i zapisywane w tablicy tym kodem

<th name="'.$r['id'].'">'.$r['id'].'</th>

a wysyłać moze nawet z przeładowaniem, byle by wysłało
komentarz 16 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
No to dajesz te id jako value dla jakiegoś inputa, np: intputa typu hidden. Tylko pamiętaj: Użytkownik może zmodyfikować Value inputów, więc musisz uważać na ataki
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

No ale jak to do php odczytać !?!? bo taki kod nie działa:

if (isset($_POST['accept_payment']))
{

    $text = 'Zakończone';
    $stmt = getDBH()->prepare("UPDATE payments SET status = :text,WHERE id = :id");
    $stmt->bindParam(':text', $text, PDO::PARAM_STR);
    $stmt->bindParam(':id', $r['id'], PDO::PARAM_STR);
    $stmt->execute();
}
komentarz 16 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
No jak masz formularz który przesyłasz metodą POST i masz inputa hidden z atrybutem name="zmienna_ID", to w php jest to $_POST['zmienna_ID']
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

Dalej nie działa. funckaj wygląda tak:

function load_payment_list()
{
    $status = "oczekiwanie";
    $stmt = getDBH()->prepare("SELECT * FROM payments WHERE status=:status");
    $stmt->bindParam(':status', $status, PDO::PARAM_STR);
    $stmt->execute();

    while ($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $id = $r['id'];
        echo ' <tr>
            <form action="" method="POST">
            <th><input type="hidden" name="'.$id.'">'.$id.'</th>
            <th>'.$r['count'].'</th>
            <th>'.$r['price'].' PLN</th>
            <th>'.$r['steamid'].'</th>
            <th><button type="submit" name="accept_payment">Zatwierdz</button></th>
            </form>
            </tr>';
    }
}

a kod php do którego ma przesyłać tak :

if (isset($_POST['accept_payment']))
{

    $text = 'Zakończone';
    
    $stmt = getDBH()->prepare("UPDATE payments SET status = :text,WHERE id = :id");
    $stmt->bindParam(':text', $text, PDO::PARAM_STR);
    $stmt->bindParam(':id', $_POST[$id], PDO::PARAM_STR);
    $stmt->execute();
}

i Zamiast zmieniać dane w mysql to tylko pojawia się biała strona

komentarz 16 sierpnia 2016 przez writen Nałogowiec (29,060 p.)
Czy ty serio nie potrafisz przesłać formularza i odebrać danych? $_POST['nazwa_inputa']
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Ale nazwa tego inputa jest zmienną a nie zwykłym stringiem, który ja ustalam. To jest tablica listy transakcji wczytywana z mysql i wszystkie id są wczytywane automatycznie. i jak ja mam to przesłać
komentarz 16 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
no ale po ch*j nazwę zmieniasz, jak tylko musisz odebrać wartość (value)?
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

no to zrobi#em tak jak powiedziałeś

function load_payment_list()
{
    $status = "oczekiwanie";
    $stmt = getDBH()->prepare("SELECT * FROM payments WHERE status=:status");
    $stmt->bindParam(':status', $status, PDO::PARAM_STR);
    $stmt->execute();
    while ($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $id = $r['id'];
        echo ' <tr>
            <form action="" method="POST">
            <th><input type="hidden" name="id" value="'.$r['id'].'">'.$r['id'].'</th>
            <th>'.$r['count'].'</th>
            <th>'.$r['price'].' PLN</th>
            <th>'.$r['steamid'].'</th>
            <th><button type="submit" name="accept_payment">Zatwierdz</button></th>
            </form>
            </tr>';
    }
    if (isset($_POST['accept_payment']))
    {
        $text = 'Zakończone';
        $stmt = getDBH()->prepare("UPDATE payments SET status = :text,WHERE id = :id");
        $stmt->bindParam(':text', $text, PDO::PARAM_STR);
        $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_STR);
        $stmt->execute();
    }
    }

i dalej biała strona po wciśnięciu przycisku

 

komentarz 16 sierpnia 2016 przez writen Nałogowiec (29,060 p.)
A czemu to jest w funkcji?

Robisz to źle.
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
edycja 17 sierpnia 2016 przez Mistrz0000000
Jest w funkcji bo mieszam kod html z php i staram się to ograniczyć do minimum.
komentarz 17 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
A czy ten if się spełnia ?
komentarz 17 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

Teraz włożyłem ten if do index.php i działa ale częściowo. Jak dam
echo $_POST['id'] to wyświetla te id, ale jak dam ten kod:

    if (isset($_POST['accept_payment']))
    {
        $text = 'Zakończone';
        $stmt = getDBH()->prepare("UPDATE payments SET status = :text,WHERE id = :id");
        $stmt->bindParam(':text', $text, PDO::PARAM_STR);
        $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_STR);
        $stmt->execute();
    } 

to biała strona po wciśnięciu przycisku.

 

0 głosów
odpowiedź 16 sierpnia 2016 przez writen Nałogowiec (29,060 p.)
Wystarczy, że wsadzisz do tego formularza input typu hidden z wartością tego id.
komentarz 16 sierpnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Ale jak to ma wyglądać potem w php to odbieranie ?

$zmienna = $r['id'];, czy jak ?

Podobne pytania

0 głosów
1 odpowiedź 239 wizyt
0 głosów
1 odpowiedź 152 wizyt
pytanie zadane 23 lipca 2016 w PHP przez DawidxD Użytkownik (810 p.)
0 głosów
3 odpowiedzi 199 wizyt
pytanie zadane 13 grudnia 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

92,536 zapytań

141,376 odpowiedzi

319,451 komentarzy

61,920 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...