Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie tabeli z bazy MYSQL
KrzysiekKCN
post 21.10.2010, 20:41:52
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Witam, przedwczoraj przystąpiłem do zgłębienia tajemnic PHP oraz MySQL.
Jako zadanie dałem sobie system dodawania nowości, który na tym etapie jest dość prosty.

Formularz
  1. <legend align="top">Aktualności</legend>
  2. <form action="add_news.php" method="post">
  3. <table style="border: 1px solid black;" cellpadding="2" cellspacing="2">
  4. <tr>
  5. <td>Autor:</td>
  6. <td><input type="text" name="autor" maxlength="60" size="30"></td>
  7. </tr>
  8. <tr>
  9. <td>Temat:</td>
  10. <td><input type="text" name="temat" maxlength="60" size="30"></td>
  11. </tr>
  12. <tr>
  13. <td>Tresc:</td>
  14. <td><textarea name="tresc" cols="50" rows="5"></textarea></td>
  15. </tr>
  16. <tr>
  17. <td>Publikacja:</td>
  18. <td><input type="radio" name="publikacja" value="tak">TAK<br><input type="radio" name="publikacja" value="nie">NIE</td>
  19. </tr>
  20. <tr>
  21. <td><input type="submit" value="Zapisz"></td>
  22. <td><input type="reset" value="Reset"></td>
  23. </tr>
  24. </tbody>


Dodawanie do bazy
  1. <?php
  2. $autor=$_POST['autor'];
  3. $temat=$_POST['temat'];
  4. $tresc=$_POST['tresc'];
  5. $publikacja=$_POST['publikacja'];
  6.  
  7. if (!$autor || !$temat || !$tresc || !$publikacja)
  8. {
  9. echo "Wymaga są wszystkie dane! Popraw, i spróbuj ponownie!";
  10. }
  11. {
  12. $autor=addslashes($autor);
  13. $temat=addslashes($temat);
  14. $tresc=addslashes($tresc);
  15. $publikacja=addslashes($publikacja);
  16. }
  17. mysql_connect("localhost","root","") or die("Błąd w czasie łączenia z bazą!");
  18. mysql_select_db("nee2") or die ("Błąd podczas wyboru bazy!");
  19.  
  20. $sql = "insert into wpisy values(NULL, '".$autor."', '".$temat."', '".$tresc."', '".$publikacja."', '".$data."');";
  21.  
  22. $wynik = mysql_query($sql);
  23.  
  24. if ($wynik) {
  25. echo $db->affected_rows." dodano wpis do bazy.";
  26. } else {
  27. echo "Wystąpił problem.";
  28. }
  29. ?>


Wyświetalnie z bazy
  1. <a href="add_news.php">DODAJ NOWY WPIS</a>
  2.  
  3. <?php
  4. $autor=$_POST['autor'];
  5. $temat=$_POST['temat'];
  6. $tresc=$_POST['tresc'];
  7. $publikacja=$_POST['publikacja'];
  8.  
  9. {
  10. $autor=addslashes($autor);
  11. $temat=addslashes($temat);
  12. $tresc=addslashes($tresc);
  13. $publikacja=addslashes($publikacja);
  14. }
  15.  
  16. mysql_connect("localhost","root","") or die("Błąd w czasie łączenia z bazą!");
  17. mysql_select_db("nee2") or die ("Błąd podczas wyboru bazy!");
  18.  
  19. $sql = "select * from wpisy";
  20. $wynik = mysql_query($sql) or die('Błąd zapytania');
  21.  
  22. $ile_znalezionych = $wynik->num_rows;
  23. echo "<p>Ilość wiadomości z bazie danych: ".$ile_znalezionych."</p>";
  24.  
  25. for ($i=0; $i<$ile_znalezionych; $i++) {
  26. $wiersz = mysqli_fetch_assoc($wynik);
  27. echo stripslashes($wiersz['temat']);
  28. echo " autor: ";
  29. echo stripslashes($wiersz['autor']);
  30. echo "<br>";
  31. echo stripslashes($wiersz['tresc']);
  32. }
  33.  
  34.  
  35. ?>


I problem polega na tym że wyświetla nic. Żadnych błędów. Tylko pustą stronę...

Co zrobiłem źle? Z góry dzięki i proszę o pomoc.
Go to the top of the page
+Quote Post
wookieb
post 21.10.2010, 20:45:27
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dowiedz się jaka jest róznica pomiędzy mysqli_query a mysql_query
Temat: Jak poprawnie zadac pytanie

Ten post edytował wookieb 21.10.2010, 21:01:49


--------------------
Go to the top of the page
+Quote Post
KrzysiekKCN
post 21.10.2010, 21:18:52
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Prawdopodobnie MYSQLI ma szybsze połączenia z bazą danych.

Mógł bym prosić o powiedzie mi jakie są błędy? Nie oczekuje gotowca, ale chociaż napisz mi co źle wykonuje ten program.
Go to the top of the page
+Quote Post
nospor
post 21.10.2010, 21:22:38
Post #4





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




1) Dostales linka do tematu: Jak zadac pytanie
W linku tym masz informacje jak właczyc wyswietlanie wszystkich bledów. Zrob to z laski swojej a zobaczysz mase bledów zamiast bialej strony
2) Sam to pisales? Mieszasz tu masę różnych sposobów pobierania danych z bazy - bez zadnego skladu ani ladu. Tak jakbys losowo wybrał kody z różnych stron. Moze warto by najpierw przeczytac podstawowy kurs obslugi baz danych w php i trzymac się tego co w tym jednym kursie jest napisane?
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post 21.10.2010, 21:23:11
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Używaj mysqli_query. Mysql a Mysqli w php to 2 różne biblioteki.


--------------------
Go to the top of the page
+Quote Post
KrzysiekKCN
post 21.10.2010, 21:43:16
Post #6





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Ok. Wielkie dzięki. ^^ Pisze z książką a tu mam obydwie metody przestawione więc się troszkę pogubiłem. Teraz wszystko działa.

A mogli byście mi podpowiedzieć jak zrobić żeby stworzyć linki do newsów? Automatycznie [<< 1 2 3 4 >>].

Go to the top of the page
+Quote Post
nospor
post 22.10.2010, 06:04:28
Post #7





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




To się nazywa stronicowanie. Masa tego na forum, masa tego w necie, masz nawet to w moim podpisie. Teraz jedyne co musisz zrobić to poszukać, wybrać co ci pasuje i w razie konkretnego problemu napisać na forum smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KrzysiekKCN
post 22.10.2010, 11:16:17
Post #8





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Wiem. Zauważyłem i gdy zacząłem szukać informacji na ten temat lekko się zgubiłem.
Wczoraj wieczorem próbując poskładać to co znalazłem i to zrozumieć, stworzyłem pewien skrypt, który zresztą nie działa.

Czy mógł bym prosić o podpowiedź? Dodaje skrypt / błędy i schemat blokowy jak ja rozumiem działanie tego programu.
  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4.  
  5.  
  6. $link = mysqli_connect("localhost","root","") or die("Błąd w czasie łączenia z bazą!");
  7. $db = mysqli_select_db($link, "nee2") or die ("Błąd podczas wyboru bazy!");
  8.  
  9. $sql = "SELECT * FROM `wpisy` ORDER BY `numerid` LIMIT '.$start.', '.$perPage.'";
  10. $wynik = mysqli_query($link, $sql) or die('Błąd zapytania');
  11.  
  12.  
  13. echo "<p>Ilość wiadomości z bazie danych: ".$ile_znalezionych."</p>";
  14. $i=1;
  15. $x=5;
  16.  
  17.  
  18.  
  19.  
  20. if(mysql_real_escape_string((!isset($_GET['id'])) or empty($_GET['id'])))
  21. {
  22. while ($wiersz = mysql_fetch_array($wynik))
  23. {
  24. echo stripslashes($wiersz['temat']);
  25. echo " autor: ";
  26. echo stripslashes($wiersz['autor']);
  27. echo "<br>";
  28. echo stripslashes($wiersz['tresc']);
  29. echo "<br><hr><br>";
  30. }
  31. }
  32. $prev = $subpage - 1;
  33. $next = $subpage + 1;
  34. $prevLink = 'index.php?page='.$prev;
  35. $nextLink = 'index.php?page='.$next;
  36.  
  37. $ilosc_wierszy = mysql_num_rows($wynik);
  38.  
  39. if($subpage > 1) echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
  40.  
  41.  
  42. $stron=round($ilosc_wierszy/$perPage);
  43.  
  44.  
  45. for($i=1; $i<=$stron; ++$i)
  46. {
  47. if($i==$subpage)
  48. echo $i;
  49. else
  50. echo '<a style="text-decoration: none;" href="index.php?page='.$i.'">'.$i.' </a>';
  51. }
  52.  
  53. if($subpage < $stron) echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
  54.  
  55.  
  56. ?>
  57.  


  1. Notice: Undefined variable: start in C:\xampp\htdocs\nowosci\index.php on line 12
  2.  
  3. Notice: Undefined variable: perPage in C:\xampp\htdocs\nowosci\index.php on line 12
  4. Błąd zapytania



Go to the top of the page
+Quote Post
Fantazyn
post 22.10.2010, 11:59:13
Post #9





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Spróbuj na górze strony (na pewno przed Twoją 12 linijką, a możę być też na samym początku) taki kawałek kodu:

  1. $start = 0;
  2. $perPage = 5; //tu okreslasz ile ma byc wpisow na stronie
  3. if(isset($_GET['page']))
  4. {
  5. $start = (int)$_GET['page'] * (int)$perPage;
  6. }



Zmień swoją linię 22 na:
  1. $sql = 'SELECT * FROM `albums` ORDER BY `id` LIMIT '.$start.', '.$perPage;


Ten post edytował Fantazyn 22.10.2010, 14:22:06


--------------------
Go to the top of the page
+Quote Post
KrzysiekKCN
post 22.10.2010, 14:07:16
Post #10





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


  1. <a href="dodaj.php">DODAJ NOWY WPIS</a>
  2. <?php
  3.  
  4. /* Wyświetlam wszystkie błędy */
  5. ini_set('display_errors','1');
  6.  
  7.  
  8. /* Łączę z bazą danych */
  9. $link = mysqli_connect("localhost","root","") or die("Błąd w czasie łączenia z bazą!");
  10. $db = mysqli_select_db($link, "nee2") or die ("Błąd podczas wyboru bazy!");
  11.  
  12. /*Definicja start / perpage */
  13. $start = 0;
  14. $perPage = 5; //tu okreslasz ile ma byc wpisow na stronie
  15.  
  16. if(isset($_GET['page'])) {
  17. $start = (int)$_GET['page'] * (int)$perPage;
  18. }
  19.  
  20. /* Wybór z tabeli wpisy */
  21. $sql = "SELECT * FROM `wpisy` ORDER BY `numerid` LIMIT '.$start.', '.$perPage.'";
  22. $wynik = mysqli_query($link, $sql) or die('Błąd zapytania');
  23.  
  24.  
  25.  
  26. /* Ilość rekordów */
  27. $ilosc_wierszy = mysql_num_rows($wynik);
  28. echo "<p>Ilość wiadomości z bazie danych: ".$ilosc_wierszy."</p>";
  29.  
  30.  
  31. /* Wyświetlenie rekordu */
  32. if(mysql_real_escape_string((!isset($_GET['id'])) or empty($_GET['id'])))
  33. {
  34. while ($wiersz = mysql_fetch_array($wynik))
  35. {
  36. echo stripslashes($wiersz['temat']);
  37. echo " autor: ";
  38. echo stripslashes($wiersz['autor']);
  39. echo "<br>";
  40. echo stripslashes($wiersz['tresc']);
  41. echo "<br><hr><br>";
  42. }
  43. }
  44.  
  45. /*Definicja linków */
  46. $prev = $subpage - 1;
  47. $next = $subpage + 1;
  48. $prevLink = 'index.php?page='.$prev;
  49. $nextLink = 'index.php?page='.$next;
  50.  
  51. if($subpage > 1) echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
  52.  
  53.  
  54. $stron=round($ilosc_wierszy/$perPage);
  55.  
  56.  
  57. for($i=1; $i<=$stron; ++$i)
  58. {
  59. if($i==$subpage)
  60. echo $i;
  61. else
  62. echo '<a style="text-decoration: none;" href="index.php?page='.$i.'">'.$i.' </a>';
  63. }
  64.  
  65. if($subpage < $stron) echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
  66.  
  67.  
  68. ?>


Ale wyskakuje błąd z linii 23. Błąd Zapytania
Go to the top of the page
+Quote Post
thek
post 22.10.2010, 14:18:15
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No to odczytaj jaki jest ten błąd! Wywołaj funkcję mysqli_error() zamiast walić 'Błąd zapytania' i się dowiesz co nie tak. masz temat jak zadać pytanie,masz masę tematów o debugowaniu skryptów php, ale jak widać leń dopadł :/ Co to będzie, gdy przyjdzie Ci się zmierzyć z nie własnymi skryptami, skoro myślenia nie używasz przy programowaniu :/


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
KrzysiekKCN
post 22.10.2010, 15:23:54
Post #12





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Nie nie leń ^^ Nie wiedziałem że to coś blokuje.
Ale i tak stanąłem.
  1. Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\nowosci\index.php on line 30
  2.  
  3. Ilość wiadomości z bazie danych:
  4.  
  5. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\nowosci\index.php on line 36
  6.  
  7. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\nowosci\index.php on line 36
  8.  
  9. Notice: Undefined variable: subpage in C:\xampp\htdocs\nowosci\index.php on line 50
  10.  
  11. Notice: Undefined variable: subpage in C:\xampp\htdocs\nowosci\index.php on line 51
  12.  
  13. Notice: Undefined variable: subpage in C:\xampp\htdocs\nowosci\index.php on line 55
  14.  
  15. Notice: Undefined variable: subpage in C:\xampp\htdocs\nowosci\index.php on line 69


  1. /* Wybór z tabeli wpisy */
  2. $sql = "SELECT * FROM `wpisy` ORDER BY `numerid` LIMIT '.$start.', '.$perPage.'";
  3. $wynik = mysqli_query($link, $sql);
  4.  
  5.  
  6.  
  7. /* Ilość rekordów */
  8. $ilosc_wierszy = mysqli_num_rows($wynik);


Myślę że to jest tak jak w manuali PHP a i tak błędy! Co jest?

I jeszcze jedno pytanko, ten skrypt ma prawo działać?
Go to the top of the page
+Quote Post
Fantazyn
post 22.10.2010, 15:31:01
Post #13





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Popraw linijkę:

  1. $sql = 'SELECT * FROM `albums` ORDER BY `id` LIMIT '.$start.', '.$perPage;


//niepotrzebnie są tam pojedyncze nawiasy...

Ale martwią mnie błędy wyżej, że nie masz dostępu do bazy danych...


--------------------
Go to the top of the page
+Quote Post
KrzysiekKCN
post 22.10.2010, 15:35:31
Post #14





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Temat do zamknięcia! Juz wszystko rozwiązałem.

Ten post edytował KrzysiekKCN 22.10.2010, 16:47:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.09.2024 - 03:41