Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] lista multiple i zapis do bazy
Forum PHP.pl > Forum > Przedszkole
marian84
Mam formularz odpowiedzialny za dodanie informacji do bazy danych.

Chciałbym dołożyć do niego liste multiple, z wartościami pobranymi z bazy.
  1. <?php
  2. $pytam = "SELECT * FROM kat_gal WHERE akt = '1' ORDER BY id";
  3.  $wynik = mysql_query($pytam);
  4.  
  5. echo "<select name='parent' multiple='multiple'>";
  6. echo "<option value='0'>** brak **</option>";
  7.  
  8. while($wiersz = mysql_fetch_array($wynik))
  9. {
  10. $sid = $wiersz["id"];
  11. $nazwa = $wiersz["nawa"];
  12.  // $gdzie = $wiersz["typ"];
  13.  
  14. echo "<option value='$sid' name='ktore'>$nazwa</option>";
  15. }
  16. echo "</select>";
  17. ?>


To już załatwione. Teraz jak zapisać w bazie danych pola, które zostały wybrane. Nie ma problemu z wyborem 1 ale co z 2 i wiecej. Pomocy!
dziurson
musisz name zmienić na parent[] i wtedy będzie przesyłało tablice z wybranym wartościami. Bo tak jak masz teraz to zapamięta tylko jedną wartość
marian84
Cytat(dziurson @ 20.05.2008, 19:49:58 ) *
musisz name zmienić na parent[] i wtedy będzie przesyłało tablice z wybranym wartościami. Bo tak jak masz teraz to zapamięta tylko jedną wartość


A można coś dokładniej?

Dodam, że zapis wynków ma byc np w tabeli:

id_art id_parent
1 2
1 3


Czyli jesli wybrane będzie 1 pole to doda jedną komórkę do tabeli z id artykulu i id parenta, jesli 2 to doda dwie komórki z tym samym id_art i odpowiednimi id_parent
dziurson
No to tak: odbierasz na kolejnej stronie tablicę, liczysz ile tych elementów tam jest, robisz pętlę z zapytaniem do bazy by dodało wpis, zmieniasz tylko który element tablicy ma zostać zapisany

Mam nadzieję że nie zagmatwałem smile.gif
marian84
Cytat(dziurson @ 20.05.2008, 20:12:50 ) *
No to tak: odbierasz na kolejnej stronie tablicę, liczysz ile tych elementów tam jest, robisz pętlę z zapytaniem do bazy by dodało wpis, zmieniasz tylko który element tablicy ma zostać zapisany

Mam nadzieję że nie zagmatwałem smile.gif


Zagmatwales i to niezle:/ nie potrafie juz najprostrzej tablicy napisac:/

Mogłby ktoś mi to pokazać na przykładzie?
dziurson
no to tak: to co pokazałeś fragment to zmień tylko to co mówiłem.

Teraz plik który to odbiera:

$parent = $_POST['parent'];
$ile = count($parent);

for($i=0; $i<$ile; $i++){
$query= mysql_query("INSERT INTO `nazwa_tebeli` VALUES(1, ".$parent[$i].")");
}

mogą być błędy smile.gif
marian84
Cytat(dziurson @ 21.05.2008, 13:35:13 ) *
no to tak: to co pokazałeś fragment to zmień tylko to co mówiłem.

Teraz plik który to odbiera:

$parent = $_POST['parent'];
$ile = count($parent);

for($i=0; $i<$ile; $i++){
$query= mysql_query("INSERT INTO `nazwa_tebeli` VALUES(1, ".$parent[$i].")");
}

mogą być błędy smile.gif


Jesteś wielki, pomoglo

No dobra... teraz w druga strone...

3 tabele...

tabela1 zawierajaca: id_art , tyt, tresc, akt
tabela2 zawierajaca: id_stopki, tytul, temat, plik, akt
tabela3 zawierajaca: id_stopki, id_art

Chcę wyświetlić artykuł zawierający 2 stopki czyli:

zapytanie 1 wświetlające * z 1 tabeli
zapytanie 2 wyciągające id_stopki gdzie id_art jest zalezne od id wyświetlanego artykułu z tabeli3
zapytanie 3 wyciagające informacje z tabeli2 zależnie od id_stopki wynikającego z zapytania 2.

  1. <?php
  2. $id_kat= $_GET['id'];
  3.  
  4. //zapytanie 1
  5.  
  6. $pytam = "SELECT * FROM tabela1 where id_art='".$id_kat."'";
  7. $wynik2 = mysql_query($pytam);
  8. while($wiersz2 = mysql_fetch_array($wynik2))
  9.  {
  10. $sid2 = $wiersz2["id"];
  11.  $zdj = $wiersz2["tresc"];
  12.  
  13. echo ''.$zdj.'<br>';
  14.  }
  15.  
  16. //zapytanie2
  17.  
  18. $pytamidlast = "SELECT id_stopki FROM tabela3 where id_art='".$id_kat."'";
  19. $wynikidlast = mysql_query($pytamidlast);
  20. while($wierszidlast = mysql_fetch_array($wynikidlast))
  21. {
  22. $ostatni = $wierszidlast["id_stopki"];
  23.  }
  24.  
  25.  
  26. //zapytanie 3
  27. $pokaz_stopke="SELECT * FROM tabela2 where id_kat='".$ostatni."'";
  28. $pok = mysql_query($pokaz_stopke);
  29. while($wiersz = mysql_fetch_array($pok))
  30. {
  31. $tyt= $wiersz["tytul"];
  32. $plik= $wiersz["plik"];
  33. echo" ".$tyt." <br><img src='stopka/sm/".$plik."'><br> ";
  34. }
  35. ?>


I jest problem... nie wyswietla stopki. W zapytaniu 3 wprowadzając z palca np " id_kat='2' " pokazuje stopke.

Wynik powinien wyświetlić np 3 stopki a wyswietla nic:/

Pomocy?!
dziurson
a próbuj usuną pojedyncze apostrofy z zapytania nr3 - te po id_kat=
marian84
to nie jest ten problem... wydaje mi sie ze zapytanie 3 musi byc wywolane tyle razy ile znalazlo wyników w zap 2 ale nei wiem jak to zrobic
dziurson
Zacznjmy od początku bo się pogubiłem co i jak tongue.gif najpierw pobierasz wszystkie artykuły a dalej już nie rozumiem tongue.gif później pobierasz id_stopki tylko że bierzesz wszystkie a i tak zapisujesz ostatnie. A później na podstawie tego co otrzymałeś z zapytania nr2 wyciągasz z bazy dane do wyświetlnia stopki
marian84
najpierw pobieram wszystkie informacje o artykule np o id=2

pozniej chce sprawdzic z tabeli 3 ktore stopki maja ten sam nr id_art

a na koncu, po zawartosci art wyswietlic wszystkie stopki z id_art

mam nadzieje ze teraz jasniej
dziurson
No to jeśli zapytanie 2 ma pobierać id stopek które mają być wyświetlone to dlaczego zapamiętujesz tylko jednąquestionmark.gif
marian84
czy w taki sposob cos osiagne??

czy juz sie pogubilem??

  1. <?php
  2. while($wiersz=@mysql_fetch_row($wynikidlast)) 
  3. {
  4. $ktore=$wiersz[0];
  5.  
  6. }
  7.  
  8. //zapytanie 3
  9. $pokaz_stopke="SELECT * FROM tabela2 where id_kat=".$ktore."";
  10. $pok = mysql_query($pokaz_stopke);
  11. while($wiersz = mysql_fetch_array($pok))
  12. {
  13. $tyt= $wiersz["tytul"];
  14. $plik= $wiersz["plik"];
  15. echo" ".$tyt." <br><img src='stopka/sm/".$plik."'><br> ";
  16. }
  17. ?>
dziurson
powiedz najpierw czy zapytanie 2 ma zwracać kilka liczb czy tylko jedną jeśli jedną to powinno być dobrze a jeśli kilka to źle
marian84
Cytat(dziurson @ 21.05.2008, 18:49:09 ) *
powiedz najpierw czy zapytanie 2 ma zwracać kilka liczb czy tylko jedną jeśli jedną to powinno być dobrze a jeśli kilka to źle


Ma zwrócić kilka, ponieważ ma wyświetlić się kilka stopek
dziurson
tak więc musisz wyniki zapytania nr 2 zbierać do tabeli by później zrobić tak ja z tym przekazywanym multicol
marian84
ok, mam łączenie tabel sie kłania
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.