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

multi buttons

Cloud VPS
0 głosów
189 wizyt
pytanie zadane 13 sierpnia 2020 w PHP przez Hub ert Nowicjusz (170 p.)

Hej.
Mam na stronie sekcje generowane w gridzie. Każda sekcja jest poświęcona innemu tematowi.
Chciałbym zrobić tak aby na każdej sekcji był przycisk do dodania opisu(login+opis) w tej sekcji.
Wszystko dodane do bazy danych i wyświetlane na stronie.
Próbowałem zrobić funkcję która wywoływana by była podczas przyciskania. Jednak nie działa to.
I teraz pytanie? Jak zrobić poprawnie wyzwalacz funkcji w buttonie gdzie parametrem jest nazwa sekcji.

for ($p = 0; $p < $ile; $p++) {
    $i = $a->fetch_assoc();
    $nazwa = $i['nazwa'];

        echo '<div>
        <div class="projekt"><div class="nazwa-sekcji-nagl">'.$nazwa.'</div>
        <div>'.$opis.'</div> 
        <button class="btn" type="button" onclick="klikacz('.$opis.')">Dodaj opis</button>
        </div>'; 
}

proszę o podpowiedź.

komentarz 13 sierpnia 2020 przez Kaerv Użytkownik (500 p.)
Nie lepiej obsłużyć ten przycisk przez javascript?

No i skąd się wzięła zmienna $opis?

2 odpowiedzi

0 głosów
odpowiedź 13 sierpnia 2020 przez OdsetekGlupoty Pasjonat (15,360 p.)

1. Wystarczy, że fetch_assoc wywołasz jeden raz, później będziesz już operować jedną zmienną. Bez sensu jest co powtórzenie na nowo robić fetcha.

2. Zamiast for użyj foreach.

Aby wykrywać który z guzików został użyty, można dla każdego takiego guzika zrobić osobny formularz, oczywiście generowany automatycznie w pętli. W tym formularzu znajdzie się button (type="submit") oraz input type="hidden", który w parametrze value będzie trzymał id konkretnego elementu z bazy.

Wygląda to mniej więcej tak:

$elements = $stmt->fetchAll();
$output = '';

foreach ($elements as $element) {
    $output .= '<form method="post">';
    $output .= '<input type="submit" name="button" value="Kliknij mnie">';
    $output .= '<input type="hidden" name="elementId" value="' . $element['id'] . '">';
    $output .= '</form>';
}

echo $output;

A żeby sprawdzić id rekordu z bazy, który reprezentował przycisk, wystarczy użyć $_POST['elementId'] (name inputa typu hidden).

0 głosów
odpowiedź 14 sierpnia 2020 przez VBService Ekspert (256,600 p.)
edycja 14 sierpnia 2020 przez VBService

W pętki, którą przedstawiłeś:

for ($p = 0; $p < $ile; $p++) {
    $i = $a->fetch_assoc();
    $nazwa = $i['nazwa'];
   
    ... 
}

tylko zmienna $nazwa, przyjmuje nowe wartości, zmienna $opis, ma po każdej iteracji pętli for $p tę samą wartość. Trochę za mało kodu udostępniłeś, żeby udzielić Tobie bardziej wyczerpującej odpowiedzi (podpowiedzi), gdzie jest błąd. Teraz będę trochę "zgadywał", ale powinno to wyglądać miej więcej tak:

for ($p = 0; $p < $ile; $p++) {
    $i = $a->fetch_assoc();
    $nazwa =  $i['nazwa'];
    $opis = $i['id_nazwa'];
 
        echo '<div>
        <div class="projekt"><div class="nazwa-sekcji-nagl">'.$nazwa.'</div>
        <div>'.$opis.'</div> 
        <button class="btn" type="button" onclick="klikacz('.$opis.')">Dodaj opis</button>
        </div>'; 
}

 

Podobne pytania

0 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 10 kwietnia 2019 w HTML i CSS przez niezalogowany
+1 głos
4 odpowiedzi 807 wizyt
pytanie zadane 8 czerwca 2022 w PHP przez gatka84 Bywalec (2,150 p.)
+1 głos
1 odpowiedź 488 wizyt
pytanie zadane 3 czerwca 2022 w PHP przez gatka84 Bywalec (2,150 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...