Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapis zaznaczonych elementów
krzesik
post 6.02.2013, 14:29:33
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Witam,
mam formularz z nazwiskami do każdego nazwiska przypisany jest checkbox, chciałbym aby do bazy zapisane zostały wyłącznie rokordy gdzie są zaznaczone checkbox-y. Na tą chwilę mam takie cóś:

  1. //fragment forma gdzie jest chec oraz nazwisko
  2. .........
  3. echo "<td>
  4. <input type=\"checkbox\" name=\"wystaw[]\" value=\"1\" />
  5. <input type=\"text\" name=\"imie_nazwisko[]\" value=\"$r[imie_nazwisko]\" />
  6. </td>";
  7. echo '</tr>';
  8. .......


później mam taki kod:
  1. ...........
  2. $n = count($_POST['imie_nazwisko']);
  3. for ($i = 0; $i < $n; $i++)
  4. {
  5. foreach ($imie_nazwisko as $i => $wartosc)
  6. if(!empty($wystaw[$i])){
  7.  
  8. echo "imie_nazwisko['".$i."'] ==". $wartosc;
  9. echo '<br>';
  10. }
  11. }
  12. ....................


efekt jest taki że drukuje mi na ekranie właściwą ilość rekordów ale zawsze jest to x PIERWSZYCH rekordów, gdzie x jest liczbą zaznaczonych checków
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
aras785
post 6.02.2013, 14:41:34
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Bo masz 2 pętle, FOR i FOREACH
Go to the top of the page
+Quote Post
_Borys_
post 6.02.2013, 14:42:24
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


Niepotrzebne for, masz przecież pętle foreach, poza tym sprawdź co ci zwraca $_POST
  1. echo '<pre>';
  2. print_r($_POST);
  3. echo '</pre>';
Go to the top of the page
+Quote Post
Sephirus
post 6.02.2013, 15:29:13
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@ups bez urazy

@autor zrób inaczej smile.gif

  1. //fragment forma gdzie jest chec oraz nazwisko
  2. .........
  3. echo "<td>
  4. <input type=\"checkbox\" name=\"wystaw[$index]\" value=\"1\" />
  5. <input type=\"text\" name=\"imie_nazwisko[$index]\" value=\"$r[imie_nazwisko]\" />
  6. </td>";
  7. echo '</tr>';
  8. .......


gdzie $index to numer pary checkbox-nazwisko (od 0 do n)

  1. foreach ($_POST['imie_nazwisko'] AS $i => $wartosc) {
  2. if(isset($_POST['wystaw'][$i]) echo $wartosc.'<br/>'; // tutaj sobie możesz to gdzieś przepisać czy coś
  3. }


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
krzesik
post 6.02.2013, 16:41:23
Post #5





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Cytat(Sephirus @ 6.02.2013, 15:29:13 ) *
@ups bez urazy

@autor zrób inaczej smile.gif

  1. //fragment forma gdzie jest chec oraz nazwisko
  2. .........
  3. echo "<td>
  4. <input type=\"checkbox\" name=\"wystaw[$index]\" value=\"1\" />
  5. <input type=\"text\" name=\"imie_nazwisko[$index]\" value=\"$r[imie_nazwisko]\" />
  6. </td>";
  7. echo '</tr>';
  8. .......


gdzie $index to numer pary checkbox-nazwisko (od 0 do n)

  1. foreach ($_POST['imie_nazwisko'] AS $i => $wartosc) {
  2. if(isset($_POST['wystaw'][$i]) echo $wartosc.'<br/>'; // tutaj sobie możesz to gdzieś przepisać czy coś
  3. }


ok, ale co zminić się powinno jeśli w nazwie checkboxa i imienia i nazwiska zamiast [] wstawię $index?
bo na dobrą sprawę innych poprawek nie widzę (oczywiście poza wywaleniem for-a)
Go to the top of the page
+Quote Post
Sephirus
post 6.02.2013, 16:53:30
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Masz coś takiego:

Kod
nazwisko checkbox
nazwisko checkbox
nazwisko checkbox
nazwisko checkbox
nazwisko checkbox


prawda?

Jak są któreś nie zaznaczone to wygląda to tak:

Kod
nazwisko checkbox
nazwisko
nazwisko checkbox
nazwisko
nazwisko checkbox


Ale dostajesz jako:

Kod
nazwisko checkbox
nazwisko checkbox
nazwisko checkbox
nazwisko
nazwisko


Jeśli dodasz index to dostaniesz to co powinieneś bo te checkboxy zostaną na swoim miejscu. I jeśli przykładowo zaznaczysz nazwisko 1 i 5 tylko to tablica $_POST['wystaw'] będzie taka:

Kod
array(1 => 1, 5 => 1);


dzięki czemu możesz to porównać z tabelą nazwisk. W twoim przypadku wcześniejszym dostałbyś:

Kod
array(0 => 1, 1 => 1);


Pomyśl o tym wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
krzesik
post 6.02.2013, 17:02:35
Post #7





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Nie, mam inaczej np
mam 10 nazwisk w liście, zaznaczam trzy ostatnie checki, to skrypt listuje mi trzy pierwsze nazwiska
Go to the top of the page
+Quote Post
_Borys_
post 6.02.2013, 17:49:56
Post #8





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


Każdy checkbox inne value i potem masz w $_POST[wystaw] to co chcesz czyli numer klikniętego checkboxa

  1. <input type="checkbox" name="wystaw[]" value="1" />
  2. <input type="checkbox" name="wystaw[]" value="2" />
  3. <input type="checkbox" name="wystaw[]" value="3" />

PHP: Checkbox Array

cyfry w value w checkboxach możesz zastąpić imieniem i nazwiskiem, potem będzie ci łatwiej listować albo wyszukiwać w bazie.

Ten post edytował _Borys_ 6.02.2013, 18:12:38
Go to the top of the page
+Quote Post
Sephirus
post 6.02.2013, 17:54:49
Post #9





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@up brakuje jedynie [] w name'ach wink.gif

EDIT: Ok jesteś szybszy niż myślałem tongue.gif

Ten post edytował Sephirus 6.02.2013, 17:55:08


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
krzesik
post 6.02.2013, 20:44:01
Post #10





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Bardzo dziekuje za wszelkie podpowiedzi!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:46