Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z wyświetlaniem wyników
Marek89
post 8.01.2010, 08:42:05
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Witam

Napisałem wczoraj mały skrypt, który ma pobierać i wyświetlać wiersze z mojej bazy.W bazie mam 4 kolumny : id, nik, data i komentarz. wierszy ok 15. Chcę wyświetlić po kolei każdy wiersz w osobnej lini. Niestety nie wychodzi mi to sad.gif Szukałem odpowiedzi, ale niestety nie udało mi się nić poprawić. Poniżej daję kod z którym mam problem. Z góry dzięki za pomoc !

Marek

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1-->
  2. <?php
  3. @ $baza = new mysqli('localhost','root','haslo','proba');
  4. if (mysqli_connect_errno())
  5. {
  6. echo 'Połączenie z bazą nie powiodło się, spróbuj później';
  7. }
  8. $zapytanie="select * from kom";
  9. $wynik=$baza->query($zapytanie);
  10. $ile=$wynik->num_rows;
  11. for($i=0; $i<$ile; $i++)
  12. {
  13. $wiersz=$wynik->fetch_assoc();
  14. echo $wiersz['nik'];
  15. echo $wiersz['data'];
  16. echo $wiersz['komentarz'];
  17. echo '<br />';
  18. }
  19.  
  20. $wynik->free();
  21. $baza->close(); ?><!--c2--></div><!--ec2-->
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Kshyhoo
post 8.01.2010, 08:55:47
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pisane z palca:
  1. $zapytanie = "SELECT * FROM tabela";
  2. $wynik = mysql_query($zapytanie);
  3.  
  4. while ($dane = mysql_fetch_array($wynik)) {
  5. ".$dane['id']." | ".$dane['nik']." | ".$dane['data']." | ".$dane['komentarz']."
  6. }

Możesz też wrzucić dane w tabele i pokolorować wiersze (zakładam, że znasz nieco css i dorobisz sobie klasy):
  1. echo "<table class='t_table'>
  2. <tr>
  3. <td class='t_th' width='20px'> ID </td>
  4. <td class='t_th' width='300px'> Nick </td>
  5. <td class='t_th' width='300px'> Data </td>
  6. <td class='t_th' width='500px'> Komentarz </td>
  7. </tr>";
  8. while ($wiersz = mysql_fetch_array($wynik)) {
  9. $bgl = ($kl++%2 == 0)?"t_tdjl":"t_tdcl";
  10. $bgc = ($kc++%2 == 0)?"t_tdjc":"t_tdcc";
  11. echo "<tr>
  12. <td class='$bgl'> ".$wiersz["id"]."</td>
  13. <td class='$bgl'> ".$wiersz["nik"]." </td>
  14. <td class='$bgl'> ".$wiersz["data"]." </td>
  15. <td class='$bgl'> ".$wiersz["komentarz"]." </td>
  16. </tr>";
  17. }
  18. echo "</table>";


Ten post edytował Kshyhoo 8.01.2010, 09:01:32


--------------------
Go to the top of the page
+Quote Post
Brick
post 8.01.2010, 09:06:38
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


  1. $zapytanie="select * from kom";
  2. $wynik=$baza->query($zapytanie);
  3.  
  4. while ($wiersz = mysql_fetch_array($wynik)
  5. {
  6. echo "$wiersz[nik] | $wiersz[data] | $wiersz[komentarz]<br />";
  7. }

Oczywiście można to wszystko wstawić do tabelki. Ale powyższy przykład to najprostsze wyświetlenie danych w jednym wierszu.


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post
Marek89
post 8.01.2010, 17:33:49
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Niestety nie idzie sad.gif

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2. @ $baza = new mysqli('localhost','root','haslo','proba');
  3. if (mysqli_connect_errno())
  4. {
  5. echo 'Połączenie z bazą nie powiodło się, spróbuj później';
  6. }
  7. $zapytanie="select * from kom";
  8. $wynik = mysql_query($zapytanie);
  9. while ($dane = mysql_fetch_array($wynik))
  10. {
  11. echo ".$dane['id']." | ".$dane['nik']." | ".$dane['data']." | ".$dane['komentarz'].";
  12. echo "<br />";
  13. }
  14. $wynik->free();
  15. $baza->close();
  16. ?><!--c2--></div><!--ec2-->


dostaję komunikat : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\serwer\strony\testowa.php on line 62

LInia 62

Kod
echo ".$dane['id']." | ".$dane['nik']." | ".$dane['data']." | ".$dane['komentarz'].";




Go to the top of the page
+Quote Post
mhw
post 8.01.2010, 17:46:58
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 10
Dołączył: 3.08.2009

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


Może
  1. echo $dane['id']." | ".$dane['nik']." | ".$dane['data']." | ".$dane['komentarz'];
?


--------------------
"the quieter you become, the more you are able to hear"
Go to the top of the page
+Quote Post
Marek89
post 8.01.2010, 17:55:36
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2. @ $baza = new mysqli('localhost','root','robin','proba');
  3. if (mysqli_connect_errno())
  4. {
  5. echo 'Połączenie z bazą nie powiodło się, spróbuj później';
  6. }
  7. $zapytanie="select * from kom";
  8. $wynik = mysql_query($zapytanie);
  9. while ($dane = mysql_fetch_array($wynik))
  10. {
  11. echo $dane['id']." | ".$dane['nik']." | ".$dane['data']." | ".$dane['komentarz'];
  12. echo "<br />";
  13. }
  14. $wynik->free();
  15. $baza->close();
  16. ?><!--c2--></div><!--ec2-->


skrypt się nie uruchamia sad.gif
Jak otwieram przez Mozille to otwierają mi się puste okienka i tak bez końca (Ctrl+alt+del) jedynym rozwiązaniem sad.gif

Nie maM pojęcia co mam źle sad.gif
Go to the top of the page
+Quote Post
bastard13
post 8.01.2010, 18:29:11
Post #7





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Spróbuj zamiast tego:
  1. $wynik = mysql_query($zapytanie);
  2. while ($dane = mysql_fetch_array($wynik))


Napisać:
  1. $wynik=$baza->query($zapytanie);
  2. while($dane=wynik->fetch_assoc())
  3. { ...

Na początku tworzysz obiekt klasy mysqli, więc to na tym obiekcie (u ciebie $baza) musisz działać.


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 8.01.2010, 21:46:15
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Podaj strukturę tej tabeli w bazie...


--------------------
Go to the top of the page
+Quote Post
thek
post 8.01.2010, 23:41:51
Post #9





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




A ja radzę spojrzeć jakich metod używacie,a jak się łączycie winksmiley.jpg Mysql i Mysqli to coś ciut innego i każda z nich ma swoje funkcje więc się dostosujcie do tego i używajcie właściwych, a wszystko będzie cacy biggrin.gif


--------------------
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
Kshyhoo
post 9.01.2010, 00:09:32
Post #10





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Święta racja... czas chyba odespać Sylwestra ;p


--------------------
Go to the top of the page
+Quote Post
celbarowicz
post 9.01.2010, 00:40:40
Post #11





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


  1. <?php
  2. $global_dbh=mysql_connect('localhost','root','');
  3. mysql_select_db('selduze3',$global_dbh);
  4.  
  5. function display_db_table($tablename, $connection)
  6. {
  7. $query_string="select * from $tablename";
  8. $result_id = mysql_query( $query_string, $connection);
  9. $column_count=mysql_num_fields($result_id);
  10.  
  11. print("<table border=1 >\n");
  12. while ($row=mysql_fetch_row($result_id))
  13. {
  14. print("<tr align=left valign=top>");
  15. for ($column_num=0;
  16. $column_num<$column_count;
  17. $column_num++)
  18. print("<td>$row[$column_num]</td>\n");
  19. print("</tr>\n");
  20. }
  21.  
  22. print("</table>\n");
  23.  
  24. }
  25.  
  26. ?>
  27.  
  28. <html><head><title> celbarowicz</title></head>
  29. <body>
  30.  
  31. <?php display_db_table("tabela_3",$global_dbh); ?>
  32.  
  33.  
  34. </body></html>
  35.  
  36.  
  37.  


w odpowiednch miejscach wpisz hasło itp.... podłącz swoją bazę i tabelę. na podstawie php4




Go to the top of the page
+Quote Post
Marek89
post 9.01.2010, 09:55:54
Post #12





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Cytat
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1-->
  2. <?php
  3. @ $baza = new mysqli('localhost','root','haslo','proba');
  4. if (mysqli_connect_errno())
  5. {
  6. echo 'Połączenie z bazą nie powiodło się, spróbuj później';
  7. }
  8. $zapytanie="select * from kom";
  9. $wynik=$baza->query($zapytanie);
  10. $ile=$wynik->num_rows;
  11. // do tego momentu chyba wszystko jest ok. Łączy się, zwraca mi poprawnie ilość wierszy.
  12. for($i=0; $i<$ile; $i++)
  13. {
  14. $wiersz=$wynik->fetch_assoc();
  15. echo $wiersz['nik'];
  16. echo $wiersz['data'];
  17. echo $wiersz['komentarz'];
  18. echo '<br />';
  19. }
  20.  
  21. $wynik->free();
  22. $baza->close(); ?><!--c2--></div><!--ec2-->


Wydaje mi się że problem powstaje od momentu użycia pętli for... Do tego momentu wszystko raczej działa poprawnie.
Jeżeli w zapytaniu dam
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?
  2. $zapytanie="select data from kom";
  3. ?><!--c2--></div><!--ec2-->

a w pętli for :
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?
  2. echo $wiersz['data'];
  3. ?><!--c2--></div><!--ec2-->

Wyświetla mi daty poprawnie...
Jak w zapytaniu dam * a w wyświetlaniu wszystkie kolumny wiersza to przeglądarka się wysypuje (otwietają się cały czas nowe okna)
Zależy mi, żeby ktoś powiedział mi co robię źle a nie dawał mi gotowy skrypt na to wyświetlanie.
Chcę to zrozumieć, by móc iść dalej smile.gif
Jakby ktoś miał jakieś pomysły to z góry dzięki exclamation.gif

Ten post edytował Marek89 9.01.2010, 09:59:01
Go to the top of the page
+Quote Post
athei
post 9.01.2010, 10:54:43
Post #13





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

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


Kod masz poprawny, fakt że "brzydki". Zamiast fora możesz dać while.
Albo masz inną strukturę tabeli, albo inne pola, albo błąd masz w innej części skryptu, tak więc wytnij kawałek ten co wkleiłeś, daj do pustego pliku i sprawdź.

Zobacz też to:
  1. $mysqli = new mysqli('localhost','root','haslo','proba');
  2. if (mysqli_connect_errno())
  3. {
  4. exit ('Polaczenie z bazą nie powiodło się, spróbuj później'.mysqli_connect_error());
  5. }
  6.  
  7. $sql = "SELECT `nik`,`data`,`komentarz` FROM `kom`";
  8. if ($result = $mysqli->query($sql)) {
  9. if ($result->num_rows > 0) {
  10. echo 'Wierszy:',$result->num_rows,'<br />';
  11. while ($row = $result->fetch_assoc()) {
  12. echo $row['wydawnictwo'];
  13. echo $row['nazwa'];
  14. echo $row['kategoria_id'];
  15. echo '<br />';
  16. }
  17. } else {
  18. echo 'Brak wynikow.';
  19. }
  20. $result->close();
  21. } else {
  22. echo "ERROR: Blad zapytania: $sql. " . $mysqli->error;
  23. }
  24.  
  25. $mysqli->close();
Go to the top of the page
+Quote Post
Marek89
post 9.01.2010, 15:45:00
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


chyba rzeczywiście mam coś w tej bazie.

baza : proba

Tablice założyłem tak:

Kod
   create table kom
->(id int unsigned not null auto_increment primary key,
->nik char(50),
->data date not null,
->komentarz text);


Tak wygląda u mnie tabela kom

Ten post edytował Marek89 9.01.2010, 15:45:36
Go to the top of the page
+Quote Post
celbarowicz
post 9.01.2010, 16:47:08
Post #15





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


marku89 czemu sam robisz sobie problemy, podesłałem Tobie skrypt ,który z bazy-tabeli mysql, odczytuje dane. jest sprawdzony i działa Ok. mam pytanie, czy sprawdziłeś go? jeśli działa , to baza jest OK.
Go to the top of the page
+Quote Post
Marek89
post 9.01.2010, 17:01:24
Post #16





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Jeżeli w zapytaniu dam
select `id` from `kom` bez problemu pobiera i wyświetla mi to id
Jak napiszę
select `id`,`data` from `kom`
to niestety już sobie nie radzi.
Zastanawia mnie tylko jedna rzecz. Podczas uruchomienia skryptu wyskakuje mi "Wystąpił problem z aplikacją Apache HTTP Server."

W sygnaturze błędu dostaję informację:
szAppName:httpd.exe
szAppVer:2.2.14.0
szModName:php_mysqli.dll
szModVer:5.2.11.11
offset : 00002b5b

Może ktoś się orientuje co może być powodem takiego błędu ?


Go to the top of the page
+Quote Post
Kshyhoo
post 9.01.2010, 17:20:12
Post #17





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Może napisz, co chcesz osiągnąć, jakie dane chcesz wyświetlić? Mnie się wydaje, że powinno być:
  1. SELECT id, DATA FROM kom

czyli bez ciapków winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Marek89
post 9.01.2010, 17:35:26
Post #18





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Ok daję jeszcze raz cały kod. Ma on wyświetlić dane (nik, komentarz i date) w określonym miejscu.

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2. $db = new mysqli('localhost','root','robin','proba');
  3. if(mysqli_connect_errno())
  4. {
  5. exit('Połączenie z bazą nie powiodło się' .mysqli_connnect_errno());
  6. }
  7. $zapytanie="select nik, komentarz, data FROM kom";
  8. if($wynik=$db->query($zapytanie))
  9. {
  10. if($wynik->num_rows>0)
  11. {
  12. while($wiersz=$wynik->fetch_assoc())
  13. {
  14. echo $wiersz['nik'];
  15. echo $wiersz['komentarz'];
  16. echo $wiersz['data'];
  17. echo '<br />';
  18. }
  19. }
  20. else
  21. {
  22. echo 'Brak komentarzy';
  23. }
  24. $wynik->close();
  25. }
  26. else
  27. {  
  28. echo 'Błąd zapytania :' .$db->error;
  29. $db->close();
  30. }
  31. ?><!--c2--></div><!--ec2-->


Moja baza danych "proba" zawiera 2 tabele 1 to ocena druga to kom

Tabelę kom założyłem w ten sposób:

Kod

  create table kom
->(id int unsigned not null auto_increment primary key,
->nik char(50),
->data date not null,
->komentarz text);


Może sypie się mój server ?

Ps. tak jak wspomniałem wcześniej potrafię wyświetlić jedną kolumnę (obojętnie jaką) z mojej bazy. Problem powstaje jak chcę ich wyświetlić więcej.
Go to the top of the page
+Quote Post
Kshyhoo
post 9.01.2010, 18:10:35
Post #19





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Zobacz to w nowym skrypcie:
  1. $db = new mysqli('localhost','root','robin','proba');
  2. echo '<pre>';
  3. print_r($db->query_select("SELECT * FROM kom"));



--------------------
Go to the top of the page
+Quote Post
Marek89
post 9.01.2010, 18:18:45
Post #20





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2010

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


Zobacz to w nowym skrypcie:

Cytat
  1.  
  2.  
  3. 1.
  4. $db = new mysqli('localhost','root','robin','proba');
  5. 2.
  6. echo '<pre>';
  7. 3.
  8. print_r($db->query_select("SELECT * FROM kom"));
  9.  



Call to undefined method mysqli::query_select()

Ten post edytował Marek89 9.01.2010, 18:22:17
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 06:33