Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Przesyłanie wartości dynamicznych checkbox'ów
Forum PHP.pl > Forum > Przedszkole
ocz85
Witam, mam problem z przesłaniem wartości dynamicznie generowanych checkbox'ów. Tzn. mam wyswietlone w formularzu wszystkie "akcesoria" z bazy danych, obok nich jest checkbox. Problem w tym, że kiedy wybiorę kilka/wszystkie opcje zaznaczenia przesyła i wyświetla mi tylko ostatnią (chyba najwiekszą) wartość.
Tablice raczej odpadają, tam jest sporo tych "akcesoriów". Znalazłem na forum coś w tym stylu ale nie mogę sobie poradzić. Prosze o pomoc


Strona z formularzem:

  1. $query_a = "SELECT * FROM akcesoria ORDER BY id";
  2. $result_a = mysql_query($query_a);

Tu się wyświetla ok. 40 "akcesoriów" czyli będzie też ok. 40 checkbox'ów:
  1. <?php
  2. if(mysql_num_rows($result_a) > 0) {  
  3. echo '<table>';
  4. echo '<tr>
  5. <th></th>
  6. <th>Akcesoria</th>
  7. <th>Cena PLN</th>
  8. </tr>';
  9. echo '</table>';
  10. echo '<table>';  
  11. while($row_a = mysql_fetch_assoc($result_a)) {
  12. echo '<tr>
  13. <td><input type="checkbox" name="akcesoria'.$id.'" value="'.$row_a['id'].'" /></td>
  14. <td>'.$row_a['akcesoria'].'</td>
  15. <td>'.number_format($row_a['cena'], 2, ',', ' ').'</td>
  16. </tr>';
  17. }
  18. echo '</table>';
  19. }
  20. ?>



Strona zamówienia (odbiór post'em):


  1. $query_a = "SELECT * FROM akcesoria WHERE id = ".$akcesoria."";
  2. $result_a = mysql_query($query_a);

Tu chciałbym żeby się wyświetlały te "akcesoria", które były zaznaczone w formularzu
  1. <?php
  2. $akcesoria = $_POST['akcesoria'];
  3.  
  4.  
  5. if(mysql_num_rows($result_a) > 0) {
  6. echo '<table>';
  7. echo '<tr>
  8. <th></th>
  9. <th>Akcesoria</th>
  10. <th>Cena</th>
  11. </tr>';
  12. echo "</table>";
  13. echo '<table>';
  14. while($akcesoria = mysql_fetch_assoc($result_a)) {
  15. echo "<tr>
  16. <td></td>
  17. <td>".$akcesoria['akcesoria']."</td>
  18. <td>".number_format($akcesoria['cena'], 2, ',', ' ')."</td>
  19. </tr>";
  20. } 
  21. echo "</table>";
  22. }
  23. ?>
Crozin
  1. <?
  2.  
  3. echo '.... <td><input type="checkbox" name="akcesoria['.$id.']" value="'.$row_a['id'].'" /></td>';
  4. ?>
I zobacz sobie w jakim formacie masz przesłane dane:
  1. <pre><?php print_r($_POST); ?></pre>
ocz85
Hmm, na początku jak testowałem to:
  1. <pre><?php print_r($_POST); ?></pre>

to pojawiała się tablica
  1. <?php
  2. (
  3. [akcesoria3] => 3
  4. [akcesoria7] => 7
  5. itd..., te które były zaznaczone
  6.  
  7. [wyslij] => Wyślij
  8. )
  9. ?>

Później jak zaznaczyłem wszystkie checkbox'y pokazywała tylko ostatnio wybranego np.:
  1. <?php
  2. (
  3. [akcesoria] => 31
  4. [wyslij] => Wyślij
  5. )
  6. ?>



Niestety, dalej nie wiem co zrobić
Crozin
A zmieniłeś
Kod
name="akcesoria'.$id.'"
Na
Kod
name="akcesoria['.$row_a['id'].']"
?Bo powineneś otrzymać:
Kod
Array
(
    [akcesoria] => Array
    (
      [1] => 1
      [3] => 1
      [5] => 1
    )
    [wyslij] => Wyślij
)
Gdzie index'y to ID z bazy a 1/0 (lub poprostu brak indexu) oznaczają czy jest on zaznaczny czy nie
ocz85
Nie do końca, wyświetla mi teraz np.:
  1. <?php
  2. (
  3. [akcesoria] => Array
  4. (
  5. [3] => 3
  6. [5] => 5
  7. [7] => 7
  8. [14] => 14
  9. [21] => 21
  10. [25] => 25
  11. )
  12.  
  13. [wyslij] => Wyślij
  14. )
  15. ?>

Może struktura tabeli nie jest poprawna?:
  1. id akcesoria cena


rozumiem żeby ustawić value="1" ?

jeżeli tak, to co dalej z tym zrobić ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.