Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]MySQL i PHP - wyświetlanie, usuwanie, edycja wyników.
Forum PHP.pl > Forum > Przedszkole
erO_
Witam!

Mam problem tworze bazę danych, mam gotowe dodawanie wpisów do bazy, wszystko działa okej, przyszła pora na wyświetlanie wyników i możliwość edycji i usuwania wpisów, to też sumie działa, ładuje bazę i wyrzuca wyniki na ekran, ale niestety nie mogę usunąć wpisu, ani go z edytować, nie wiem gdzie popełniłem błąd, wszystko robiłem na podstawie kursu PHP. Generalnie wszystko działa więc błąd musi być gdzieś w ostatnich 10 wierszach.

Proszę rzućcie swoim profesjonalnym okiem na to..


KOD+opisy:
  1. <?php
  2. // nawiazujemy polaczenie
  3. $connection = @mysql_connect('localhost', 'root', 'krasnal')
  4. // w przypadku niepowodznie wyświetlamy komunikat
  5. or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  6. // połączenie nawiązane ;-)
  7. echo "Udało się połączyć z serwerem!<br />";
  8. // nawiązujemy połączenie z bazą danych
  9. $db = @mysql_select_db('zaliczenie', $connection)
  10. // w przypadku niepowodzenia wyświetlamy komunikat
  11. or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  12. // połączenie nawiązane ;-)
  13. echo "Udało się połączyć z bazą dancych!";
  14. /* zapytanie do konkretnej tabeli */
  15. $wynik = mysql_query("SELECT * FROM dane")
  16. or die('Błąd zapytania');
  17. /*
  18. wyświetlamy wyniki, sprawdzamy,
  19. czy zapytanie zwróciło wartość większą od 0
  20. */
  21. if(mysql_num_rows($wynik) > 0) {
  22. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  23. echo "<table cellpadding=\"3\" border=1>";
  24. while($r = mysql_fetch_object($wynik)) {
  25. echo "<tr>";
  26. echo "<td>".$r->iloscopon."</td>";
  27. echo "<td>".$r->iloscoleju."</td>";
  28. echo "<td>".$r->iloscswiec."</td>";
  29. echo "<td>
  30.  
  31. <a href=\"wyswietl.php?a=del&amp;id={$r->id}\">DEL</a>
  32. <a href=\"wyswietl.php?a=edit&amp;id={$r->id}\">EDIT</a>
  33. </td>";
  34. echo "</tr>";
  35. }
  36. echo "</table>";
  37.  
  38. }
  39. $a = trim($_GET['a']);
  40. $id = trim($_GET['id']);
  41.  
  42. if($a == 'del' and !empty($id)) {
  43.  
  44. /* usuwamy rekord */
  45. mysql_query("DELETE FROM dane WHERE id='$id'")
  46. or die('Błąd zapytania: '.mysql_error());
  47.  
  48. echo 'Rekord został usunęty z bazy';
  49. }
  50. ?>
piotrooo89
a daj tak:

  1. if(($a == 'del') and !empty($id))
erO_
Niestety nic nie dało:

Parse error: parse error in c:\usr\apache\httpd\html\bazadanychzaliczenie\wyswietl.php on line 49

, działa jak usunę } z 49 lini, wtedy wyświetla tabele i pod nią komunikat "Rekord zostal usunety z bazy" od razu po włączeniu strony, naciskając na edytuj, albo usuń nadal nic się nie dzieje.

2 przypadek
  1. ...
  2. $a = trim($_GET['a']);
  3. $id = trim($_GET['id']);
  4.  
  5. if(($a == 'del') and !empty($id))
  6.  
  7. /* usuwamy rekord */
  8. mysql_query("DELETE FROM dane WHERE id='$id'")
  9. or die('Błąd zapytania: '.mysql_error());
  10. echo 'Rekord został usunęty z bazy';
  11. ?>
piotrooo89
  1. if(mysql_num_rows($wynik) > 0)
  2. {
  3. echo '<table cellpadding="3" border=1>';
  4. while($r = mysql_fetch_object($wynik))
  5. {
  6. echo '<tr>';
  7. echo '<td>'.$r->iloscopon.'</td>';
  8. echo '<td>'.$r->iloscoleju.'</td>';
  9. echo '<td>'.$r->iloscswiec.'</td>';
  10. echo '<td>
  11.  
  12. <a href="wyswietl.php?a=del&amp;id='.$r->id.'">DEL</a>
  13. <a href="wyswietl.php?a=edit&amp;id='.$r->id.'">EDIT</a>
  14. </td>';
  15. echo '</tr>';
  16. }
  17. echo "</table>";
  18.  
  19. }
  20.  
  21. if(($_GET['a'] == 'del') && (!empty($_GET['id'])))
  22. {
  23. /* usuwamy rekord */
  24. mysql_query('DELETE FROM dane WHERE id='.$id.'')
  25. or die('Błąd zapytania: '.mysql_error());
  26.  
  27. echo 'Rekord został usunęty z bazy';
  28. }
Blame
  1. ...
  2. $a = trim($_GET['a']);
  3. $id = trim($_GET['id']);
  4.  
  5. if(($a == 'del') && !empty($id)){
  6.  
  7. /* usuwamy rekord */
  8. mysql_query("DELETE FROM dane WHERE id='$id'")
  9. or die('Błąd zapytania: '.mysql_error());
  10. echo 'Rekord został usunęty z bazy';
  11. }
  12. ?>

Ta klamra nie dała ci nic do myślenia?
erO_
Po prostu jak nie było tej klamry to po prostu tekst wypisywało, skrypt nie działał...

Piotr niestety też nie śmiga w opcji co wysłałeś, wciąż po naciśnięciu tylko przeładowuje stronę i nic nie robi...
piotrooo89
dziwna sprawa... a tak może:
  1. <a href="?a=del&amp;id='.$r->id.'">DEL</a>
  2. <a href="?a=edit&amp;id='.$r->id.'">EDIT</a>


erO_
Też nie śmiga wciąż to samo... wątpie żeby w kodzie były błędy, bo był kopiowany z kursu internetowego, zawsze działało... A może są jakieś zabezpieczenie w bazie danych które muszę wyłączyć, żeby z poziomu strony edytować i usuwać wpisy ?

KOD na chwilę obecną wygląda następująco (wklejam bo zaraz się pogubimy...)
  1. <?php
  2. // nawiazujemy polaczenie
  3. $connection = @mysql_connect('localhost', 'root', 'krasnal')
  4. // w przypadku niepowodznie wyświetlamy komunikat
  5. or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  6. // połączenie nawiązane ;-)
  7. echo "Udało się połączyć z serwerem!<br />";
  8. // nawiązujemy połączenie z bazą danych
  9. $db = @mysql_select_db('zaliczenie', $connection)
  10. // w przypadku niepowodzenia wyświetlamy komunikat
  11. or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  12. // połączenie nawiązane ;-)
  13. echo "Udało się połączyć z bazą dancych!";
  14. /* zapytanie do konkretnej tabeli */
  15. $wynik = mysql_query("SELECT * FROM dane")
  16. or die('Błąd zapytania');
  17. /*
  18. wyświetlamy wyniki, sprawdzamy,
  19. czy zapytanie zwróciło wartość większą od 0
  20. */
  21.  
  22. if(mysql_num_rows($wynik) > 0)
  23.  
  24. {
  25.  
  26. echo '<table cellpadding="3" border=1>';
  27.  
  28. while($r = mysql_fetch_object($wynik))
  29.  
  30. {
  31.  
  32. echo '<tr>';
  33.  
  34. echo '<td>'.$r->iloscopon.'</td>';
  35.  
  36. echo '<td>'.$r->iloscoleju.'</td>';
  37.  
  38. echo '<td>'.$r->iloscswiec.'</td>';
  39.  
  40. echo '<td>
  41.  
  42.  
  43.  
  44.  
  45. <a href="?a=del&amp;id='.$r->id.'">DEL</a>
  46.  
  47. <a href="?a=edit&amp;id='.$r->id.'">EDIT</a>
  48.  
  49. </td>';
  50.  
  51. echo '</tr>';
  52.  
  53. }
  54.  
  55. echo "</table>";
  56.  
  57.  
  58.  
  59. }
  60.  
  61.  
  62.  
  63. if(($_GET['a'] == 'del') && (!empty($_GET['id'])))
  64.  
  65. {
  66.  
  67. /* usuwamy rekord */
  68.  
  69. mysql_query('DELETE FROM dane WHERE id='.$id.'')
  70.  
  71. or die('Błąd zapytania: '.mysql_error());
  72.  
  73.  
  74.  
  75. echo 'Rekord został usunęty z bazy';
  76. }
  77. ?>
piotrooo89
a wywal te @.

aha no i pytanie, czy masz coś w tej tabeli dane?

erO_
Jakie @?
piotrooo89
te: @mysql_connect('localhost', 'root', 'krasnal')
erO_
Niestety wciąż przeładowuje i nic poza tym..., chyba będę musiał się wybrać na uczelnie może mój wykładowca coś wymyśli... masakra jakaś....
piotrooo89
a ten if jest wogóle OK pod względem logicznym, czy wyświetla się ten napis o usunięciu rekordu?
erO_
No właśnie nie, tylko i wyłącznie przeładowuje stronę, nic się na niej nie zmienia, komunikat ani przed ani po naciśnięciu się nie wyświetla, tylko i wyłącznie:

Udalo sie polaczyc z serwerem!
Udalo sie polaczyc z baza dancych!
TABELKA
piotrooo89
u mnie to działa... a te if'y masz w tym samym pliku co wyświetlanie tabelki?
erO_
kurde, to jak to możliwe, że u Ciebie działa, a u mnie nie, w ogóle mi się wyświetla informacji, że usunięto wpis, tylko i wyłącznie przeładowywuje i nic nie robi...

Hallo? ktoś mi pomorze ? Bo sam nie mogę tego rozgryźć...
kingofspace
a w bazie dla uzytkownika ktory loguje się z poziomu php masz ustawione mozliwosc edycji rekordu uswania rekordu?
erO_
Tak naciskam usuń i nic się nie dzieje, przeładowuje stronę a wpis w tabeli zostaje, nie pojawia się komunikat ze usunięto nic... Tak jak by nic się nie działo, może macie jakiś inny sposób na usuwanie rekordów, ale ten wydawał mi się bardzo logiczny, kolo wyświetlanych wyników w tabeli widnieje opcja usuń i edytuj, ale ani jedna anie druga nie działa. Zależało by mi żeby tylko usuń działało...
lessi
Na początku zobacz przed warunkiem czy dostarczane są dane. Czy $a=del i czy $id jest nie pusta.
  1. echo 'Zmienna a: '. $a .'<br>Zmienna id:'. $id;

albo daj do tego warunek else
  1. #
  2. if($a == 'del' and !empty($id)) {
  3. /* usuwamy rekord */
  4. mysql_query("DELETE FROM dane WHERE id='$id'")
  5. or die('Błąd zapytania: '.mysql_error());
  6. echo 'Rekord został usunęty z bazy';
  7. }
  8. else{
  9. echo 'Błąd';
  10. }
erO_
Miałeś racje po wklejeniu else, pod tabelą wyświetl się informacja "Błąd", czyli gdzie tkwi błąd, bo już się pogubiłem...

Opisze jeszcze raz bo może coś przeoczyłem w końcu dopiero się uczę
BAZA - zaliczenie
TABELA - dane (3 pola int [Null-NIE, Domyslnie- 0, reszta pusta] - iloscopon, iloscoleju, iloscswiec)
USER - root
HASŁO - krasnal

KOD JAKI MAM AKTUALNIE
  1. <?php
  2. // nawiazujemy polaczenie
  3. $connection = mysql_connect('localhost', 'root', 'krasnal')
  4. // w przypadku niepowodznie wyswietlamy komunikat
  5. or die('Brak polaczenia z serwerem MySQL.<br />Blad: '.mysql_error());
  6. // polaczenie nawiazane ;-)
  7. echo "Udalo sie polaczyc z serwerem!<br />";
  8. // nawiazujemy polaczenie z baza danych
  9. $db = mysql_select_db('zaliczenie', $connection)
  10. // w przypadku niepowodzenia wyswietlamy komunikat
  11. or die('Nie moge polaczyc sie z baza danych<br />Blad: '.mysql_error());
  12. // polaczenie nawiazane ;-)
  13. echo "Udalo sie polaczyc z baza dancych!";
  14. /* zapytanie do konkretnej tabeli */
  15. $wynik = mysql_query("SELECT * FROM dane")
  16. or die('Blad zapytania');
  17. /*
  18. wyswietlamy wyniki, sprawdzamy,
  19. czy zapytanie zwrócilo wartosc wieksza od 0
  20. */
  21.  
  22. if(mysql_num_rows($wynik) > 0)
  23.  
  24. {
  25.  
  26. echo '<table cellpadding="3" border=1>';
  27.  
  28. while($r = mysql_fetch_object($wynik))
  29.  
  30. {
  31.  
  32. echo '<tr>';
  33.  
  34. echo '<td>'.$r->iloscopon.'</td>';
  35.  
  36. echo '<td>'.$r->iloscoleju.'</td>';
  37.  
  38. echo '<td>'.$r->iloscswiec.'</td>';
  39.  
  40. echo '<td>
  41.  
  42.  
  43.  
  44.  
  45. <a href="?a=del&amp;id='.$r->id.'">DEL</a>
  46.  
  47. <a href="?a=edit&amp;id='.$r->id.'">EDIT</a>
  48.  
  49. </td>';
  50.  
  51. echo '</tr>';
  52.  
  53. }
  54.  
  55. echo "</table>";
  56.  
  57.  
  58.  
  59. }
  60.  
  61.  
  62. $r = trim($_GET['r']);
  63. $id = trim($_GET['id']);
  64.  
  65. if(($_GET['r'] == 'del') && (!empty($_GET['id'])))
  66.  
  67.  
  68. {
  69.  
  70. /* usuwamy rekord */
  71.  
  72. mysql_query("DELETE FROM dane WHERE id='$id'")
  73.  
  74. or die('Blad zapytania: '.mysql_error());
  75.  
  76.  
  77.  
  78. echo 'Rekord zostal usunety z bazy';
  79. }
  80.  
  81. else{
  82.  
  83. echo 'Błąd';
  84.  
  85. }
  86. ?>
lessi
Czyli jest jakiś problem z przesłaniem zmiennych. Teraz musisz napisać ten pierwszy sposób. Żeby przekonać się jakie masz dane w zmiennej a i jakie w zmiennej id
erO_
Nie rozumiem, jestem początkujący, tylko instalowałem skrypt według tutoriala i gdzieś się pogubiłem... Jak to zrobić ?
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.