Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] sprawdzenie zawartości tabeli, odpowiednie oznaczenie checkboxów jeśli true
felixk
post 3.10.2012, 12:57:23
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Witam, w pierwszej kolejności chcę jedynie zapytać czy się da i jeśli tak to jak możnaby to zrobić. Otóż chodzi o to, że mam wylistowany katalog, który wyświetlany jest w formie tabelki. W jednej z kolumn są checkboxy, które dają możliwość dodania tych plików do bazy danych. W tym miejscu jest problem tzn. czy da się zrobić tak aby po dodaniu odpowiednich plików te checkboxy bladły i były zaznaczone?
W zmiennej $files są zawarte wylistowane pliki. Poniższy kod generuje główną część tabelki do dodawania. Czy miałby ktoś jakiś pomysł?
  1.  
  2. for($i = 0, $c = count($files); $i < $c; $i++) {
  3. $names[] = pathinfo($files[$i], PATHINFO_FILENAME);
  4.  
  5. echo '<tr>
  6. <td><input type="checkbox" name="pliki[]" value="'.$files[$i].'" /></td>
  7. <td>'.$names[$i].'</td>';
  8. echo '</tr>';
  9. }
  10.  


Z góry dziękuję
Go to the top of the page
+Quote Post
nospor
post 3.10.2012, 13:03:38
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No generując checkboxa musisz sprawdzac, czy odpowiadający mu plik jest już wrzucony czy nie i w zależności od tego robić z tym checkboxem co chcesz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sephirus
post 3.10.2012, 13:06:05
Post #3





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

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


Przede wszystkim - da się to zrobić wink.gif

Najłatwiej jest pobrać z bazy z tabeli plików pliki które już są dodane i wrzucić do jakiejś tabeli PHP nazwy plików, które już są w bazie (nazwijmy ją $dbFiles).

Następnie wystarczy:

  1.  
  2. $dbFiles; // tablica z nazwami plików istniejącymi w bazie danych
  3.  
  4. for($i = 0, $c = count($files); $i < $c; $i++) {
  5. $names[] = pathinfo($files[$i], PATHINFO_FILENAME);
  6.  
  7. echo '<tr>
  8. <td><input type="checkbox" name="pliki[]" value="'.$files[$i].'" '.(in_array($files[$i],$dbFiles) ? 'disabled="disabled" checked="checked"' : '').'/></td>
  9. <td>'.$names[$i].'</td>';
  10. echo '</tr>';
  11. }
  12.  


--------------------
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
felixk
post 3.10.2012, 13:12:07
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(nospor @ 3.10.2012, 14:03:38 ) *
No generując checkboxa musisz sprawdzac, czy odpowiadający mu plik jest już wrzucony czy nie i w zależności od tego robić z tym checkboxem co chcesz.


Masz na myśli coś takiego:


  1. for($i = 0, $c = count($files); $i < $c; $i++) {
  2. $dodane = mysql_query("SELECT plik FROM pliki WHERE plik='$files[$i]'") or die(mysql_error());
  3. $names[] = pathinfo($files[$i], PATHINFO_FILENAME);
  4.  
  5. echo '<tr>';
  6. if($dodane == $files[$i])
  7. {
  8. <td><input type="checkbox" checked="checked" name="pliki[]" value="'.$files[$i].'" /></td>
  9. }
  10. else {<td><input type="checkbox" name="pliki[]" value="'.$files[$i].'" /></td>}
  11. <td>'.$names[$i].'</td>';
  12. echo '</tr>';
  13. }


Ten post edytował felixk 3.10.2012, 13:13:36
Go to the top of the page
+Quote Post
nospor
post 3.10.2012, 13:21:23
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zapomniałeś o mysql_fetch_array(). Samo mysql_query nie zwraca ci wartosci z tabeli.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
felixk
post 3.10.2012, 13:40:43
Post #6





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Zrobiłem tak jak kolega Sephirus mi pokazał, ale teraz niby działa, ale za to generuje takie komunikaty. Nie bardzo kumam, która tablica jest pusta.

  1. for($i = 0, $c = count($files); $i < $c; $i++) {
  2. $dodane = mysql_query("SELECT plik FROM $tbl_pliki WHERE plik='$files[$i]'") or die(mysql_error());
  3. $dbfiles = mysql_fetch_array($dodane);
  4. $names[] = pathinfo($files[$i], PATHINFO_FILENAME);
  5.  
  6. echo '<tr>
  7. <td><input type="checkbox" name="pliki[]" value="'.$files[$i].'" '.(in_array($files[$i],$dbfiles) ? 'disabled="disabled" checked="checked"' : '').'/></td> //linijka 45
  8. <td>'.$names[$i].'</td>';
  9. echo '</tr>';
  10. }


Błąd:
Kod
Warning: in_array() expects parameter 2 to be array, boolean given in C:\xampp\htdocs\includes\listowanie.inc on line 45


dołożyłem:
  1. var_dump($dbfiles);
  2. echo $files[$i];


efekt:
dodane pliki do bazy:
Kod
array(2) { [0]=> string(9) "admin.php" ["plik"]=> string(9) "admin.php" }
admin.phparray(2) { [0]=> string(10) "edytor.php" ["plik"]=> string(10) "edytor.php" }
edytor.phparray(2) { [0]=> string(9) "index.php" ["plik"]=> string(9) "index.php" }


Pliki wylistowane:
Kod
index.phpbool(false)
pomoc.php
bool(false)
register.php
bool(false)
sprawdz.php
bool(false)
usermanag.php
bool(false)
wyloguj.php
bool(false)
zapomniane.php
Go to the top of the page
+Quote Post
Sephirus
post 3.10.2012, 15:58:30
Post #7





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

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


Zamień

  1. $dbfiles = mysql_fetch_array($dodane);


na

  1. $dbfiles = array();
  2. while($dbfile = mysql_fetch_array($dodane))
  3. $dbfiles[]= $dbfile['plik'];


bo mysql_fetch_array() pobiera jeden rekord z bazy a nie całą tabelę rekordów.

Ten post edytował Sephirus 3.10.2012, 15:59:28


--------------------
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
felixk
post 3.10.2012, 16:21:51
Post #8





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Dziękuję smile.gif. Śmiga
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: 23.06.2025 - 15:46