Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem przy zaznaczaniu
Forum PHP.pl > Forum > Przedszkole
Kercsdd
Piszę system newsów i mam problem. Chcę zrobić coś takiego przy usuwaniu i edytowaniu, że będzie usuwać zaznaczone elementy, no ale po zaznaczeniu nie usuwa. Co jest tego przyczyną ? Kod:

  1. <?php
  2.  
  3.  
  4. if (!isset($_SESSION['admin'])) {
  5. header ("Location: admin.html");
  6. }
  7.  
  8. else {
  9.  
  10. mysql_connect ('localhost','root','something');
  11. mysql_select_db('system');
  12. include ("main.php");
  13.  
  14. switch ($_GET['mod']) {
  15. default:
  16.  
  17. echo 'Yo, ' . $_SESSION['admin'];
  18.  
  19. break;
  20.  
  21. case 'addnews':
  22.  
  23. if (empty($_POST['subject']) && empty($_POST['news'])) {
  24. echo '<div id="use">
  25. <form action="admin.php?mod=addnews" method="post">
  26. <div id="form">
  27. <label>Subject: <input type="text" name="subject" /></label>
  28. <textarea name="news" rows="15" cols="40"></textarea>
  29. <input type="submit" value="Add" />
  30. </div>
  31. </form>
  32. </div>';
  33. }
  34.  
  35. else {
  36.  
  37. $date= date("d.m.y");
  38. $news= "INSERT INTO news (`subject`,`content`,`author`,`date`)
  39. VALUES ('".trim($_POST['subject'])."','".trim($_POST['news'])."'
  40. ,'".$_SESSION['admin']."','$date');";
  41. mysql_query ($news);
  42. echo 'News has been added';
  43.  
  44. }
  45.  
  46. break;
  47.  
  48. case 'manage':
  49.  
  50. echo '<div id="end">
  51. <ul>
  52. <li><a href="#">Edit</a></li>
  53. <li><a href="admin.php?mod=delete">Delete</a></li>
  54. </ul>
  55. </div>';
  56.  
  57. $show= htmlspecialchars("SELECT subject,date,author FROM news
  58. WHERE author='".$_SESSION['admin']."'");
  59. $showa= mysql_query($show);
  60.  
  61. while ($showall= mysql_fetch_assoc($showa)) {
  62. echo '<form action="admin.php?mod=manage" method="post">
  63. <div id="checkbox">
  64. <input type="checkbox" name="select" value="" />' . $showall['subject']
  65.  . $showall['date'] . $showall['author'] . '</div>' . '</form>';
  66. }
  67.  
  68. break;
  69.  
  70. case 'delete':
  71.  
  72. $del= $_POST['select']= $showall['subject'];
  73.  
  74. if (!empty($_POST['select'])) {
  75.  
  76. $delete= "DELETE FROM news WHERE `author`= '".$_SESSION['admin']."';";
  77. mysql_query($delete);
  78. echo 'Selected news has been deleted';
  79.  
  80. }
  81.  
  82. else {
  83. echo 'Select something';
  84. }
  85.  
  86. } //end switch
  87.  
  88. } // end else
  89.  
  90. ?>
bmL
1.
  1. <?php
  2. $del= $_POST['select']= $showall['subject']
  3. ?>
co to ma na celu??
2.
  1. <?php
  2. $delete= "DELETE FROM news WHERE `author`= '".$_SESSION['admin']."';";
  3. ?>

Nie wiem jak wygląda struktura bazy dancyh ale to raczej usunie wszystkie newsy należące do admina nie uwzględniłeś tego, który new chcesz usunąć. Powinieneś w zapytaniu pobierania do formularza uwzględnić pobranie jakiegoś numeru_id newsa. I w zapytaniu usuwania uwzględnić usuwanie newsa który ma właśnie to id.

  1. <?php
  2. $show= htmlspecialchars("SELECT subject,date,author FROM news
  3. WHERE author='".$_SESSION['admin']."'");
  4. $showa= mysql_query($show);
  5. while ($showall= mysql_fetch_assoc($showa)) {
  6. echo '<form action="admin.php?mod=manage" method="post">
  7. <div id="checkbox">
  8. <input type="checkbox" name="select" value="" />' . $showall['subject']
  9.  . $showall['date'] . $showall['author'] . '</div>' . '</form>';
  10. }
  11. ?>

chyba powinno wyglądać tak:
  1. <?php
  2. $show= htmlspecialchars("SELECT subject,date,author,JAKIES_POLE_ID FROM news
  3. WHERE author='".$_SESSION['admin']."'");
  4. $showa= mysql_query($show);
  5. echo '<form action="admin.php?mod=manage" method="post">';
  6. while ($showall= mysql_fetch_assoc($showa)) {
  7. echo '<div id="checkbox">
  8. <input type="checkbox" name="select" value="$showall[JAKIES_POLE_ID]" />' . $showall['subject']
  9.  . $showall['date'] . $showall['author'] . '</div>';
  10. }
  11. echo '</form>';
  12. ?>

I
  1. <?php
  2. $delete= "DELETE FROM news WHERE `author`= '".$_SESSION['admin']."';";
  3. ?>

:
  1. <?php
  2. $delete= "DELETE FROM news WHERE `author`= '$_SESSION['admin']' AND `JAKIES_ID` = '$del'";
  3. ?>


ps. jeżeli string jest ujęty w cudzysłowy "przykład" to automatycznie jest przeszukiwany w poszukiwaniu zmiennych $ czyli nie musisz robić czegoś takiego:
  1. <?php
  2. $x = "jakis string ".$zmienna." dalej teskt"
  3. ?>

wystaczy
  1. <?php
  2. $x = "jakis string $zmeinna dalej teskt"
  3. ?>

takie coś ma zastosowanie tylko w przypadku stringów ujętych w apostrofy 'przykład' które nie są automatycznie przeszukiwane w poszukiwaniu zmiennych. Dla tego powinno się stringi okalać apostrofami zawsze trochę szybciej się parsuje. Tak przynajmniej wywnioskowałem jeżeli się mylę to niech mnie ktoś poprawi smile.gif
marcio
  1. <?php
  2. $show= htmlspecialchars("SELECT subject,date,author,JAKIES_POLE_ID FROM news
  3. WHERE author='".$_SESSION['admin']."'");
  4. ?>

Co to za wybryk natury??
bmL
Takie zapytanie jak najbardziej powinno zadziałać nie rozumiem o co Ci chodzi chociaż jeżeli bijesz to ten kawałek: '".$_SESSION['admin']."' to napisałem o tym niżej.
marcio
Nie chodzi mi tylko o $_SESSION['admin'] ale od kiedy daje sie htmlspecialchars() zapytanie??
bmL
Hmm faktycznie smile.gif niepotrzebne to zupełnie.
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.