Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySQL] Multiple, a dodaje jedno pole.
Forum PHP.pl > Forum > Przedszkole
Koniczynka
Witam. Mam formularz, w którym chcę zastosować wielokrotność wyboru - multiple. Wyświetlają mi się wszystkie żądane przeze mnie dane. Jednak kiedy dodaję dane do bazy, to tam wpisywany jest tylko ostatni rekord.

Oto kod, jaki stosuję:

  1. <?php
  2. echo "<select multiple name=sklad_gospodarze>";
  3. $sql1="SELECT * FROM pilkarze WHERE obecny_p = '$login_gospodarze' "; 
  4. $result1 = mysql_query ($sql1) 
  5.  or die ("błąd zapytania "); 
  6. while ($row1 = mysql_fetch_array ($result1)){ 
  7. if ($row1['id_p']==$row1['imie']) $zaznacz1="selected"; else $zaznacz1=""; 
  8.  
  9. echo "<option value='".$row1['imie']."' ".$zaznacz1.">".$row1['imie']." ".$row1['nazwisko']."</option>"; 
  10. } 
  11. echo "</select><br><br>";
  12. ?>


Sprawdzałem też normalne dodawanie, tzn. bez danych pobranych z bazy danych. Ale było tak samo, tzn. dodawało się tylko ostatnie value. Jeśli ktoś ma jakiś pomysł, dlaczego tak się dzieje, to proszę o pomoc.
nospor
skoro ten select to multiple to musi miec nazwe tablicowoa czyli z []: sklad_gospodarze[]
w wyniku z w poscie otrzymasz tablice. pobierasz normalnie: $_POST['sklad_gospodarze']
Koniczynka
Zrobiłem to tak:

  1. <?php
  2. echo "<select name=sklad_gospodarze[] multiple>";
  3. $sql1="SELECT * FROM pilkarze WHERE obecny_p = '$login_gospodarze' "; 
  4. $result1 = mysql_query ($sql1) 
  5.  or die ("błąd zapytania "); 
  6. while ($row1 = mysql_fetch_array ($result1)){ 
  7. if ($row1['id_p']==$row1['imie']) $zaznacz1="selected"; else $zaznacz1=""; 
  8.  
  9. echo "<option value='".$row1['imie']."' ".$zaznacz1.">".$row1['imie']." ".$row1['nazwisko']."</option>"; 
  10. } 
  11. echo "</select><br><br>";
  12. ?>


Przesyłam tak:
  1. <?php
  2. $sklad_gospodarze = $_POST['sklad_gospodarze'];
  3. ?>
i potem wklejam to bazy INSERT INTO.

Ale do bazy zamiast zaznaczonych danych przesyłane jest Array.
nospor
no przeciez ci napisalem ze w wyniku otrzymasz tablice. musisz ja teraz obrobic wedlug swoich potrzeb. masz wiele mozliwosci: implode(), foreach, .... i wiele innych do obrobki tablicy (patrz: manual)
Koniczynka
Niestety, nie umiem sobie jakoś z tym poradzić :/

  1. <?php
  2. $sql4="SELECT sklad_gospodarze FROM kolejki WHERE id_kolejki = " . $_GET['id_kolejki'] . " "; 
  3. $result4 = mysql_query ($sql4) 
  4.  or die ("błąd zapytania "); 
  5. while ($row4 = mysql_fetch_assoc ($result4))
  6. { 
  7. foreach ($row4 as $value) {
  8. echo $value;
  9.  
  10.  
  11. }
  12.  }
  13. ?>


  1. <?php
  2. $sql="SELECT * FROM kolejki WHERE id_kolejki = " . $_GET['id_kolejki'] . " "; 
  3. $result = mysql_query ($sql) 
  4.  or die ("błąd zapytania "); 
  5. while ($row = mysql_fetch_array ($result)){ 
  6.  
  7.  
  8. $sklad_gospodarze[] = $row['value'];
  9.  
  10. echo $sklad_gospodarze;
  11.  }
  12. ?>


Testowałem też each,list,implode, ale nic konkretnego się nie pokazywało prócz "Array". Znalazłem kilka tematów na forum i starałem się zastosować podane rozwiązania. Jednak też bez oczekiwanego rezultatu. Mógłbym prosić o jakiś przykład do wyciągania tablic z bazy danych ? Bo o ile normalne stosowanie tych funkcji, do uprzednio zdefiniowanych zmiennych [tak jak w manualu], mi wychodzi, to o tyle mam problem ze zrobieniem tego samego z poziomu bazy danych.
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.