Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] sprawdzenie zawartości tabeli, odpowiednie oznaczenie checkboxów jeśli true
felixk
post
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
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
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.
Go to the top of the page
+Quote Post
Sephirus
post
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ć (IMG:style_emoticons/default/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.  
Go to the top of the page
+Quote Post
felixk
post
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
Post #5





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




zapomniałeś o mysql_fetch_array(). Samo mysql_query nie zwraca ci wartosci z tabeli.
Go to the top of the page
+Quote Post
felixk
post
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
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
Go to the top of the page
+Quote Post
felixk
post
Post #8





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

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


Dziękuję (IMG:style_emoticons/default/smile.gif) . Śmiga
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 23:02