Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQl][PHP] Usuwanie wybranego rekordu
Forum PHP.pl > Forum > Przedszkole
shado
Siema.
Mam kolejny problem ;d, chce usunąć rekord z bazy za pomocą formularza.

Skrypt:
  1. <?php
  2. if($_GET['send']=='Zatwierdź') {
  3. require('dane.php');
  4. $polaczenie = mysql_connect($host, $uzytkownik, $haslo) or die('Błąd podczas łączenia z hostem');
  5. mysql_select_db($nazwa_bazy,$polaczenie) or die('Błąd podczas łączenia z bazą');
  6. $zapytanie = "delete from uzytkownicy where nick=$_GET[nick]";
  7. $wykonaj = mysql_query ($zapytanie);
  8. }
  9. ?>
  10. <form method="get" action="test.php">
  11. <div align="center">
  12. <center>
  13. <table border="1" width="20%" bordercolorlight="#000000" cellspacing="0" cellpadding="0">
  14. <tr>
  15. <td width="50%"><font size="2" face="Verdana">Nick:</font></td>
  16. <td width="50%" align="center"><input type="text" name="nick" size="20"></font></td>
  17. </tr>
  18. </table>
  19. <p align="center"><font size="2" face="Verdana"><input type="submit" value="Zatwierdź" name="send"></td> </font><br />
  20. </center>
  21. </div>
  22. </form>


I moje pytanie brzmi dla czemu to nie działa? ;d, po kliknięciu "zatwierdź" nie wyświetla się żaden błąd ale użytkownik nie zostaje usunięty
johny_s
Cytat(shado @ 17.05.2014, 17:06:54 ) *
I moje pytanie brzmi dla czemu to nie działa? ;d, po kliknięciu "zatwierdź" nie wyświetla się żaden błąd ale użytkownik nie zostaje usunięty

bo masz błąd w zapytaniu, a jak go nie wyświetlasz to sam z siebie się nie wyświetli
mar1aczi
Zrób sobie w okolicach linii 3 lub 4
Kod
var_dump($_GET[nick])
i sprawdź co dostałeś w tej zmiennej
[Celowo użyłem kopiuj/wklej do przeniesienia $_GET[nick]]
shado
Cytat(johny_s @ 17.05.2014, 18:27:21 ) *
bo masz błąd w zapytaniu, a jak go nie wyświetlasz to sam z siebie się nie wyświetli

Unknown column 'test1' in 'where clause'

Cytat(mar1aczi @ 17.05.2014, 18:28:15 ) *
Zrób sobie w okolicach linii 3 lub 4
Kod
var_dump($_GET[nick])
i sprawdź co dostałeś w tej zmiennej
[Celowo użyłem kopiuj/wklej do przeniesienia $_GET[nick]]

string(5) "test1" ( test1 to użytkownik jbc ;d )
mar1aczi
Pokaż raz jeszcze cały kod z dodanymi przytoczonymi funkcjami.
shado
Dobra zanazłem odpowiedź

zamiast::
  1. $zapytanie = "delete from user_data where user_name= $_GET[user_name]";

trzeba:
  1. $zapytanie = "delete from user_data where user_name= '$_GET[user_name]'";


  1. <?php
  2. if($_GET['send']=='Zatwierdź') {
  3. require('dane.php');
  4. var_dump($_GET[nick]);
  5. $polaczenie = mysql_connect($host, $uzytkownik, $haslo) or die('Błąd podczas łączenia z hostem');
  6. mysql_select_db($nazwa_bazy,$polaczenie) or die('Błąd podczas łączenia z bazą');
  7. $zapytanie = "delete from uzytkownicy where nick=$_GET[nick]";
  8. $wykonaj = mysql_query ($zapytanie);
  9. }
  10. ?>
  11. <form method="get" action="test.php">
  12. <div align="center">
  13. <center>
  14. <table border="1" width="20%" bordercolorlight="#000000" cellspacing="0" cellpadding="0">
  15. <tr>
  16. <td width="50%"><font size="2" face="Verdana">Nick:</font></td>
  17. <td width="50%" align="center"><input type="text" name="nick" size="20"></font></td>
  18. </tr>
  19. </table>
  20. <p align="center"><font size="2" face="Verdana"><input type="submit" value="Zatwierdź" name="send"></td> </font><br />
  21. </center>
  22. </div>
  23. </form>
johny_s
To teraz jakis tutek z sql'a i poszukaj jak się posługiwać stringami
emillo91
Cytat(shado @ 17.05.2014, 18:06:54 ) *
  1. delete from uzytkownicy where nick=$_GET[nick]


a zrób coś takiego:
  1. $zmienna = $_GET['nick'];
  2. delete from uzytkownicy where nick='$zmienna';

TrolsStudio
To ja się podłącze do pytania.
mam sobie plik poczta.php

  1. <?php header('Content-Type: text/html; charset=iso-8859-2'); ?>
  2. <link rel="stylesheet" href="colors.css" type="text/css">
  3. <style>
  4. <?php include 'colors.css'; ?>
  5. </style>
  6. <?php
  7. $link = mysql_connect("localhost", "admin", "#admin123#")
  8. or die("Could not connect");
  9.  
  10. mysql_select_db("poczta_monipo")
  11. or die("Could not select database");
  12.  
  13. $query = "SELECT * FROM wiadomosci";
  14. $result = mysql_query($query)
  15. or die("Query failed");
  16.  
  17. echo "<table cellpadding=\"2\" border=1>";
  18. while ($row = mysql_fetch_array($result)) {
  19. echo "<TR><TD>" . $row["ID_Message"] .
  20. "</TD><TD>" . $row["Nick Name"] .
  21. "</TD><TD>" . $row["E-mail"] .
  22. "</TD><TD>" . $row["Message"] .
  23. "</TD>";
  24. echo "<td><form name='frmDelete' action='usunwpis.php' method='post'><input type='hidden' name='ID_Message' value='{echo ID_Message}'><input type='submit' name='dlteBtn' value='Usun wpis'></form></td><TR>\n";
  25.  
  26. }
  27.  
  28. echo "</table>";
  29.  
  30. mysql_close($link);
  31.  
  32. ?>


A przycisk dlteBtn prowadzi do usunwpis.php, o ile powyższy kod wyświetla mi wszystkie rekordy obok każdego mam przycisk usuń wpis jednak gdy klikam otrzymuje alert rekord usunięty ale z bazy nie znika żadna linia.

usunwpis.php
  1. <?php
  2. $link = mysql_connect("localhost", "admin", "#admin123#")
  3. or die("Could not connect");
  4.  
  5. mysql_select_db("poczta_monipo")
  6. or die("Could not select database");
  7.  
  8. if(isset($_POST['dlteBtn'])) {
  9. mysql_query("DELETE FROM poczta_monipo.wiadomosci WHERE wiadomosci.id ='$_POST[ID_Message]' LIMIT 1");
  10. echo 'Usunięto rekord';
  11. } //else echo '<a href="?ID_Message='.$id'">Usuń rekord</a>';
  12.  
  13. //mysql_query($result);
  14. mysql_close($link);
  15. ?>


Chodzi mi o to żeby po kliknięciu przycisku, który jest obok rekordu zniknął właśnie ten wpis obok którego był przycisk i żaden inny.
Moge was prosić o pomoc w rozwiązaniu problemu ?

Update: Poszedłem z radą wyrzucania błędu co się wogóle dzieje, poprawiłem linie usuwania na:
  1. mysql_query("DELETE FROM poczta_monipo.wiadomosci WHERE ID_Message ='$_POST[dlteBtn]' LIMIT 1");

Zwraca mi wynik że usunął ale z bazy nadal rekord nie zniknął.
Turson
<input type='hidden' name='ID_Message' value='{echo ID_Message}'>
echo ID_Message nie za bardzo
http://www.php.pl/Wortal/Artykuly/PHP/Pods...Laczenie-ciagow
TrolsStudio
Cytat(Turson @ 8.06.2014, 17:15:29 ) *
<input type='hidden' name='ID_Message' value='{echo ID_Message}'>
echo ID_Message nie za bardzo
http://www.php.pl/Wortal/Artykuly/PHP/Pods...Laczenie-ciagow


A można troche jaśniej ?
Turson
  1. echo "<td><form name='frmDelete' action='usunwpis.php' method='post'><input type='hidden' name='ID_Message' value='{$row['ID_Message']}'><input type='submit' name='dlteBtn' value='Usun wpis'></form></td><TR>\n";
TrolsStudio
to niczego nie zmienia nadal nie działa sad.gif nie usuwa rekordu po kliknięciu w button.

już mam w tym wierszu ->
  1. mysql_query("DELETE FROM poczta_monipo.wiadomosci WHERE ID_Message ='$_POST[dlteBtn]' LIMIT 1");


powinno być
  1. mysql_query("DELETE FROM poczta_monipo.wiadomosci WHERE ID_Message ='$_POST[ID_Message]' LIMIT 1");

dziękuje za naprowadzenie smile.gif jeszcze troche raczkuje ale staram się brnąć do przodu smile.gif
Turson
Pierwsze co, to w usunwpis.php dodaj na samym początku. Pokaże to czy $_POST zawiera jakieś dane i jakie.
  1. var_dump($_POST);


Następnie zmodyfikuj linijkę z zapytaniem tak, aby wyświetliła ewentualne błędy
  1. mysql_query("DELETE FROM poczta_monipo.wiadomosci WHERE wiadomosci.id ='$_POST[ID_Message]' LIMIT 1") or die(mysql_error());
johny_s
To sobie wyświetl zapytanie i sprawdź czy wyglada jak ma wyglądać...
i wyświetl sobie błędy
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.