• 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

0 głosów
161 wizyt
pytanie zadane 16 sierpnia 2016 w PHP, Symfony, Zend 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,290 p.)
<th> to nagłówek tabeli, nie jest elementem dla form.
0 głosów
odpowiedź 16 sierpnia 2016 przez CzikaCarry Szeryf (75,440 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,440 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,440 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,200 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,440 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,200 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,440 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,200 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ź 81 wizyt
0 głosów
1 odpowiedź 94 wizyt
pytanie zadane 23 lipca 2016 w PHP, Symfony, Zend przez DawidxD Użytkownik (810 p.)
0 głosów
3 odpowiedzi 103 wizyt
pytanie zadane 13 grudnia 2016 w PHP, Symfony, Zend przez ThePatrykOOO Dyskutant (7,750 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

64,892 zapytań

111,362 odpowiedzi

234,305 komentarzy

46,742 pasjonatów

Przeglądających: 155
Pasjonatów: 7 Gości: 148

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...