Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][$_GET] multiple rows delete
hettmix
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 10.03.2012

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


Witam.

Tym razem mam taki oto problemik. Przekazuję metodą $_GET nr id wierszy tabeli do skryptu pdf_del_all.php:
  1. function arrayToString($array){
  2. $i = 0;
  3. $string = '';
  4.  
  5. foreach ($array as $index => $value ){
  6. if($i != count($array)-1){
  7. $string .= "$value,";
  8. }else $string .= "$value";
  9. $i++;
  10. }
  11.  
  12. $string = '['.$string.']';
  13. return $string;
  14. }
  15.  
  16. while ($z = mysql_fetch_assoc($wynik)) {
  17.  
  18. $ids[$z['id']] = $z['id'];
  19. $pdfs = arrayToString($ids, 1);
  20.  
  21. echo "<table>";
  22. echo "<tr style=\"font-size: 0.9em; font-weight: normal; text-align: right; resize: none;\" bgcolor=$bgcolor>";
  23. echo "<td colspan=\"2\"><a id=\"confirm_button\" style=\"text-decoration: none; text-align: right;\" href='pdf_del_all.php?id_pdfs=$pdfs' onclick=\"return confirmDeleteAll(this);\"><img src='/modules/mod_zbiorczy_pdf/images/x.png' border=0>wszystkie</a></td>";
  24. echo "<td colspan=\"4\">Wszystkich plików:&nbsp;<b>$i<b>&nbsp;&nbsp;</td>";
  25. echo "</tr>";
  26. echo "</table>";
  27. }

Teraz skrytp pdf_del_all.php powinien usunąć z bazy wskazane wiersze oraz pliki z serwera powiązane przez zapisaną ścieżkę:
  1. if (isset($_GET['id_pdfs'])) {
  2.  
  3. $delete_id = explode(",", $_GET['id_pdfs']);
  4. $id = count($delete_id);
  5.  
  6. if (count($id) > 0)
  7. {
  8. foreach ($delete_id as $id_d)
  9. {
  10. $sql = "delete FROM tbl_zwykle_2str_pdf WHERE id='$id_d'";
  11. $delete = mysql_query($sql) or die('Błąd zapytania delete');
  12. }
  13. }
  14. }

Puki co skrypt usuwa z bazy wiersze lecz nie wszystkie - pozostaje jeden wiersz mimo że print_r($id_d) pokazuje wszystkie wiersze będące w tabeli.
Nie wiem też jak pobrać z bazy ścieżkę do pliku, a następnie usunąć go z serwera.
  1. CREATE TABLE IF NOT EXISTS `tbl_zwykle_2str_pdf` (
  2. `id` smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `pdf_uzytkownik` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  4. `pdf_czas_dodania` time NOT NULL,
  5. `pdf_data_dodania` date NOT NULL,
  6. `pdf_nazwa_pliku` varchar(200) COLLATE utf8_polish_ci NOT NULL,
  7. `pdf_typ_pliku` varchar(100) CHARACTER SET utf8 NOT NULL,
  8. `pdf_rozmiar_pliku` int(9) NOT NULL,
  9. PRIMARY KEY (`id`),
  10. KEY `pdf_uzytkownik` (`pdf_uzytkownik`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=4 ;

Jakaś wskazówka....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mokry
post
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


Masz:
  1. $delete_id = '15,23,59,98,78,26,58'; // Przykladowe id
  2.  
  3. $target_path = "/volume1/web/Joomla_1.5/modules/mod_zbiorczy_pdf/tmp/zwykle_1_strona/";
  4.  
  5. //Zapytanie po rekordy do usuniecia plikow
  6. $result = mysql_query("SELECT * FROM tbl_zwykle_2str_pdf WHERE id IN(".$delete_id.")") or die('Błąd zapytania delete');
  7. while($row = mysql_fetch_assoc($result)) //Iteracja po wynikach z bazy danych
  8. {
  9. $file = $target_path . $row['pdf_nazwa_pliku']; // Dobranie sie do kolumny aktualnie iterowanego wiersza
  10. echo $file;
  11. //unlink($file); // Tutaj mozesz sobie usunac plik
  12. }
  13. //Usuwasz wszystkie rekordy
  14. $query = mysql_query("delete FROM tbl_zwykle_2str_pdf WHERE id IN(".$delete_id.")") or die('Błąd zapytania delete');
Go to the top of the page
+Quote Post
hettmix
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 10.03.2012

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


Cytat(mokry @ 8.01.2013, 02:05:48 ) *
Masz:
  1. $delete_id = '15,23,59,98,78,26,58'; // Przykladowe id
  2.  
  3. $target_path = "/volume1/web/Joomla_1.5/modules/mod_zbiorczy_pdf/tmp/zwykle_1_strona/";
  4.  
  5. //Zapytanie po rekordy do usuniecia plikow
  6. $result = mysql_query("SELECT * FROM tbl_zwykle_2str_pdf WHERE id IN(".$delete_id.")") or die('Błąd zapytania delete');
  7. while($row = mysql_fetch_assoc($result)) //Iteracja po wynikach z bazy danych
  8. {
  9. $file = $target_path . $row['pdf_nazwa_pliku']; // Dobranie sie do kolumny aktualnie iterowanego wiersza
  10. echo $file;
  11. //unlink($file); // Tutaj mozesz sobie usunac plik
  12. }
  13. //Usuwasz wszystkie rekordy
  14. $query = mysql_query("delete FROM tbl_zwykle_2str_pdf WHERE id IN(".$delete_id.")") or die('Błąd zapytania delete');

No i problem rozwiązany - poniżej sprawdzony, działający kod:
  1. if (isset($_GET['id_pdfs'])) {
  2.  
  3. $id_pdfs = trim($_GET['id_pdfs']);
  4. $delete_id = explode(",", $_GET['id_pdfs']);
  5. $id = count($delete_id);
  6.  
  7. if (count($id) > 0)
  8. {
  9. $result = mysql_query("SELECT * FROM tbl_zwykle_2str_pdf WHERE id IN(".$id_pdfs.")") or die('Błąd zapytania delete');
  10. while($row = mysql_fetch_assoc($result))
  11. {
  12. $file = $row['pdf_nazwa_pliku'];
  13. unlink($file);
  14. }
  15. //Usuwasz wszystkie rekordy
  16. $query = mysql_query("delete FROM tbl_zwykle_2str_pdf WHERE id IN(".$id_pdfs.")") or die('Błąd zapytania delete');
  17.  
  18. echo "<BR /><div style=\"background-color: #F5F5F5; height: 45px; padding-top: 5px; text-align: center;\"><b>REKORDY <span style=\"color: blue\">\ ".$id_pdfs." \</span> ZOSTAŁY POPRAWNIE USUNIĘTE Z BAZY.<BR /><b></div>";
  19. echo "<div style=\"padding-top: 30px; text-align: center;\"><img height=\"50%\" width=\"20%\" align=\"middle\" src=\"images/ok_icon.png\" title=\"\" alt=\"\" /></div><BR />";
  20. }
  21. }
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 06:56