Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP] Wyświetlanie tabeli i usuwanie wierszy
Forum PHP.pl > Forum > Przedszkole
skabszo
Hej,

mam temat prosty (chyba) ale serio nie potrafię sobie z nim poradzić. Rozwiązania, które tutaj znalazłem na forum po prostu nie działały w przypadku mojego skryptu.. chcę by poza wyświetlaniem tabeli mysql (to działa) była możliwość usuwania wierszy. Oto co już mam:

  1. <?php
  2.  
  3.  
  4. $connection=mysql_connect('localhost','root','') or die(mysql_error());
  5.  
  6.  
  7. mysql_select_db('localhost_paula',$connection) or die(mysql_error());
  8.  
  9. $query=mysql_query("SELECT * FROM cms_contest") or die(mysql_error());
  10.  
  11. if(mysql_num_rows($query)>0):
  12.  
  13. ?>
  14. <form method="post" action="ursite.php">
  15. <table width="100%" border="0" class="mysql-table">
  16. <tr style="font-weight:bold;">
  17. <td align="center" class="heading">Id</td>
  18. <td align="center" class="heading">First Name</td>
  19. <td align="center" class="heading">Last Name</td>
  20. <td align="center" class="heading">Email</td>
  21. <td align="center" class="heading">Phone</td>
  22. <td align="center" class="heading">Answer</td>
  23. <td align="center" class="heading">DEL?</td>
  24. </tr>
  25. <?php
  26.  
  27. while($row=mysql_fetch_object($query)):?>
  28.  
  29. <tr>
  30. <td align="center" class="content"><?php echo $row->ID; //row id ?></td>
  31. <td align="center" class="content"><?php echo $row->name; // row first name ?></td>
  32. <td align="center" class="content"><?php echo $row->surname; //row las tname ?></td>
  33. <td align="center" class="content"><?php echo $row->email; //row created time ?></td>
  34. <td align="center" class="content"><?php echo $row->phone_number; //row created time ?></td>
  35. <td align="center" class="content"><?php echo $row->contest_answer; //row created time ?></td>
  36. <td align="center" class="content"><a href="#">DELETE</a></td>
  37. </tr>
  38. <?php endwhile;?>
  39. </table>
  40. </form>
  41.  
  42. <?php
  43.  
  44. else: ?>
  45. <h3>No Results found.</h3>
  46. <?php endif; ?>


najlepiej jakby to rozwiązanie nie wymagało przechodzenia na inną podstronę (oczywiście może i powinno przeładować stronę obecną..). dzięki za pomoc i wskazówki!
NoSleep2
Dodaj radio z value $row->ID i z name w pętli
i jakiegoś input submit z name
Wyżej dodaj
if(isset($_POST ['NAME'])){
mysql_query ('DELETE FROM TABELA WHERE ID=\''.$_POST ['NAME_RADIO'].'\' ');
}
Fred1485
Pomijając fakt, że korzystasz z mysql. Przesiądź się na mysqli lub PDO wink.gif
skabszo
Hej,

próbowałem z PDO. Mam teraz coś takiego:

  1. <script type="text/javascript">
  2. function delete_id(id)
  3. {
  4. if(confirm('Sure to Delete ?'))
  5. {
  6. window.location.href='display_db_table.php?delete_id='+id;
  7. }
  8. }
  9. </script>
  10. <?php
  11. $user = 'root';
  12. $pass = '';
  13. $db = new PDO( 'mysql:host=localhost;dbname=localhost_paula', $user, $pass );
  14. $sql = "SELECT * FROM cms_contest";
  15. $query = $db->prepare( $sql );
  16. $query->execute();
  17. $results = $query->fetchAll( PDO::FETCH_ASSOC );
  18.  
  19. // delete condition
  20. if(isset($_GET['delete_id']))
  21. {
  22. $sql_query="DELETE FROM cms_contest WHERE user_id=".$_GET['delete_id'];
  23. mysql_query($sql_query);
  24. header("Location: $_SERVER[PHP_SELF]");
  25. }
  26. ?>
  27. <table width="100%" border="0" class="table mysql-table">
  28. <tr style="font-weight:bold;">
  29. <td align="center" class="heading">Id</td>
  30. <td align="center" class="heading">First Name</td>
  31. <td align="center" class="heading">Last Name</td>
  32. <td align="center" class="heading">Email</td>
  33. <td align="center" class="heading">Phone</td>
  34. <td align="center" class="heading">Answer</td>
  35. <td align="center" class="heading">DEL?</td>
  36. </tr>
  37. <?php foreach( $results as $row ){
  38. echo "<tr><td align=\"center\" class=\"content\">";
  39. echo $row['ID'];
  40. echo "</td><td align=\"center\" class=\"content\">";
  41. echo $row['name'];
  42. echo "</td><td align=\"center\" class=\"content\">";
  43. echo $row['surname'];
  44. echo "</td><td align=\"center\" class=\"content\">";
  45. echo $row['email'];
  46. echo "</td><td align=\"center\" class=\"content\">";
  47. echo $row['phone_number'];
  48. echo "</td><td align=\"center\" class=\"content\">";
  49. echo $row['contest_answer'];
  50. echo "</td>";
  51. echo "<td align=\"center\" class=\"content\">";
  52. echo "<a href=\"java script:delete_id('<?php echo $row[0]; ?>')\">X</a>";
  53. echo "</td></tr>";
  54. }
  55. ?>
  56. </table>



no i jak klikam że chcę usunąć, to strona się nie przeładowuje, tylko przechodzi de facto do strony którą includuję tj. display_db_table.php z błędem w ostatniej kolumnie:

Cytat
Notice: Undefined offset: 0 in .....\display_db_table.php on line 53


Dlaczego tak jest? (nie chodzi o to, że javascript tutaj występuje jako "java script". Próbowałem poprawić post, ale nie da się tego zrobić normalnie..)
bobek358
Błąd masz ponieważ używasz
  1. $results = $query->fetchAll( PDO::FETCH_ASSOC );


a odwołujesz sie przez indeks
  1. <?php echo $row[0]; ?>

powinieneś odwołać się przez
  1. <?php echo $row['ID']; ?>
skabszo
po zmianie w ogóle nie wczytuje tabeli. jest teraz:
  1. echo "<a href=\"java script:delete_id('<?php echo $row['ID']; ?>')\">X</a>";
NoSleep2
Masz tutaj szybki kod który napisałem parę lat temu. Ten kod jest przestarzały bo nie ma PDO, bądź mysqli
  1. if(isset($_POST['DELETE'])) {
  2. mysql_query('DELETE FROM Dominik WHERE ID=\''.$_POST['ID'].'\'');
  3. }
  4.  
  5. $SHOW = mysql_query('SELECT * FROM baza ORDER BY ID') or die ('Wyswietl');
  6. echo ('<form action="index.php" method="POST"><table id="table_menu"><tr><td></td></tr>');
  7. while($SHOW = mysql_fetch_assoc($SHOW)){
  8. echo ('<tr><td align="center"><input type="radio" name="ID" value="'.$SHOW['ID'].'" /></td>');
  9. echo ('<td>'.$SHOW['Temat'].'</td></tr>');
  10. }
  11. echo ('<tr><td colspan="2" align="center">');
  12. <input type="submit" name="DELETE" value="Usun" />
  13. </td></tr></table></form>');


Mam nadzieje, że chociaż trochę pomogłem.
ilies
Ja zrobił bym cos takiego, nie sprawdzałem:
  1. <?php
  2. $user = 'root';
  3. $pass = '';
  4. $db = new PDO( 'mysql:host=localhost;dbname=localhost_paula', $user, $pass );
  5. $sql = "SELECT * FROM cms_contest";
  6. $query = $db->prepare( $sql );
  7. $query->execute();
  8. $results = $query->fetchAll( PDO::FETCH_ASSOC );
  9.  
  10. // delete condition
  11. if(isset($_POST['delete']))
  12. {
  13. $sql_query="DELETE FROM cms_contest WHERE user_id=".$_POST['delete'];
  14. mysql_query($sql_query);
  15. header("Location: $_SERVER[PHP_SELF]");
  16. }
  17. ?>
  18. <form method="post">
  19. <table width="100%" border="0" class="table mysql-table">
  20. <tr style="font-weight:bold;">
  21. <td align="center" class="heading">Id</td>
  22. <td align="center" class="heading">First Name</td>
  23. <td align="center" class="heading">Last Name</td>
  24. <td align="center" class="heading">Email</td>
  25. <td align="center" class="heading">Phone</td>
  26. <td align="center" class="heading">Answer</td>
  27. <td align="center" class="heading">DEL?</td>
  28. </tr>
  29. <?php foreach( $results as $row ){
  30. echo "<tr><td align=\"center\" class=\"content\">";
  31. echo $row['ID'];
  32. echo "</td><td align=\"center\" class=\"content\">";
  33. echo $row['name'];
  34. echo "</td><td align=\"center\" class=\"content\">";
  35. echo $row['surname'];
  36. echo "</td><td align=\"center\" class=\"content\">";
  37. echo $row['email'];
  38. echo "</td><td align=\"center\" class=\"content\">";
  39. echo $row['phone_number'];
  40. echo "</td><td align=\"center\" class=\"content\">";
  41. echo $row['contest_answer'];
  42. echo "</td>";
  43. echo "<td align=\"center\" class=\"content\">";\
  44. echo '<button type="submit" name="delete" value="'.$row['ID'].'">X</button>';
  45. echo "</td></tr>";
  46. }?>
  47. </table>
  48. </form>
nospor
@ilies jak juz probujesz pomagac, to patrz chociaz w ogolnosci co wypisujesz.... najpierw uzywasz PDO, a potem ni z gruszki ni z pietruszki mysql_ ....
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.