Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nie odczytuje mi komentarzy o id newsa, mysql
kemsi
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Witam!! Stworzyłem swój taki prosty system newsów na bazie mysql. Gdy próbuje odczytać komentarze do danego newsa to nie wiem czemu, ale nie mogę ich odczytać. Może coś się nie zapisuje, ale już sam nie wiem. oto kody trzech plików(jest jeszcze więcej, ale tylko te będą prawdopodobnie potrzebne):

Odczytywanie newsów:


  1. <? 
  2.  $polancz = mysql_connect(&#092;"localhost\",\"root\",\"krasnal\") or die(); 
  3.  mysql_select_db('news'); 
  4.  
  5.  $odczyt = mysql_query(&#092;"SELECT `id`, `temat`, `tresc`, `nick`, `mail` FROM `news` ORDER BY `id` DES
    C\"); 
  6.  while($wiersz = mysql_fetch_array($odczyt)) { 
  7.  echo &#092;"<table border=1 width=300><tr><td>Temat: \".$wiersz['temat'].\"</td></tr> 
  8.  <tr><td>&#092;".$wiersz['tresc'].\"</td></tr> 
  9.  <tr><td><a href=&#092;"mailto:\".$wiersz['mail'].\"\">\".$wiersz['nick'].\"</a></td></tr> 
  10.  <tr><td><a href=&#092;"komentuj.php?id=\".$wiersz['id'].\"\">Komentarze</a></table><br><br>\"; 
  11.  } 
  12. ?>



Odczytywanie i dodawanie komenatrzy:

  1. <? 
  2. //łączenie z bazą 
  3. $polancz=mysql_connect(&#092;"localhost\",\"root\",\"krasnal\") or die(); 
  4. mysql_select_db('news'); 
  5.  
  6. $odczytaj_kom=mysql_query(&#092;"SELECT `id`,`komentarz`,`nick`,`mail` FROM `komentarze` ORDER BY `id` DESC\"); 
  7. while($a=mysql_fetch_array($odczytaj_kom)){ 
  8. if($id==$a['id']){ 
  9. //odczytywanie komentarzy 
  10. echo &#092;"<table border=1><tr><td>\".$a['komentarz'].\"</td></tr> 
  11. <tr><td>Nick: &#092;".$a['nick'].\"  Mail: \".$a['mail'].\"<br><br>\"; 
  12. } 
  13. } 
  14.  
  15. //formularz dodawania komentarzy 
  16. echo &#092;"<form action=\"kom.php\" method=\"POST\"><table border=\"1\"> 
  17. <tr><td valign=&#092;"top\">Tresc:<textarea cols=\"36\" rows=\"6\" name=\"komentarz\"></textarea></td></tr> 
  18. <tr><td>Nick:<input type=&#092;"text\" name=\"nick\"></td></tr> 
  19. <tr><td>Mail:<input type=&#092;"text\" name=\"mail\"></td></tr> 
  20. <tr><td><input type=&#092;"submit\" value=\"WYŚLIJ\"> <input type=\"reset\" value=\"WYCZYSC\"></table></form>\"; 
  21. ?>


Zapisywanie komentarzy:

  1. <? 
  2. $poloncz=mysql_connect(&#092;"localhost\",\"root\",\"krasnal\") or die(); 
  3. mysql_select_db('news'); 
  4.  
  5. $dodaj=&#092;"INSERT INTO komentarze (id, komentarze, nick, mail) VALUES ('$id','$komentarze','$nick','$mail')\"; 
  6. $query=mysql_query($dodaj); 
  7. ?>



Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


a może tak? :
  1. <?php
  2.  
  3. $odczytaj_kom=mysql_query(&#092;"SELECT `id`,`komentarz`,`nick`,`mail` FROM `komentarze` WHERE id=\".$_GET['id'].\"\"); 
  4.   while($a=mysql_fetch_array($odczytaj_kom)){ 
  5.  
  6.   echo &#092;"<table border=1><tr><td>\".$a['komentarz'].\"</td></tr> 
  7.   <tr><td>Nick: &#092;".$a['nick'].\"   Mail:  \".$a['mail'].\"<br><br>\"; 
  8.   
  9.   } 
  10.  
  11. ?>
a z dodawaniem spróbuj tak:
  1. <?php
  2. $poloncz=mysql_connect(&#092;"localhost\",\"root\",\"krasnal\") or die(); 
  3. mysql_select_db('news'); 
  4.  
  5. $dodaj=&#092;"INSERT INTO komentarze (id, komentarze, nick, mail) VALUES ('\".$_POST['id'].\"','\".$_POST['komentarze'].\"','\".$_POST['nick'].\"','\".$_POST['mail'].\"')\"; 
  6. $query=mysql_query($dodaj);
  7. ?>


Ten post edytował Darti 10.03.2005, 20:17:45
Go to the top of the page
+Quote Post
kemsi
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Niestety to nic nie dało. A na dodatek pokazywały się błędy z nie poprawnym kodem. Ma ktoś jeszcze jakiśpomysł?
Go to the top of the page
+Quote Post
tiraeth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Proponuję napisać od nowa... i najlepiej z taką strukturą bazy:
  1. CREATE TABLE `news` (
  2. `newsid` INT NOT NULL AUTO_INCREMENT ,
  3. `news_title` VARCHAR( 100 ) DEFAULT 'Brak tematu' NOT NULL ,
  4. `news_body` TEXT NOT NULL ,
  5. `news_user` VARCHAR( 20 ) DEFAULT 'Anonymous' NOT NULL ,
  6. `news_date` INT( 10 ) NOT NULL ,
  7. PRIMARY KEY ( `newsid` )
  8. );
  9.  
  10. CREATE TABLE `news_comments` (
  11. `commentid` INT NOT NULL AUTO_INCREMENT ,
  12. `comment_newsid` INT( 4 ) NOT NULL ,
  13. `comment_body` VARCHAR( 255 ) NOT NULL ,
  14. `comment_nick` VARCHAR( 20 ) DEFAULT 'Anonymous' NOT NULL ,
  15. `comment_date` INT( 10 ) NOT NULL ,
  16. `comment_ip` VARCHAR( 50 ) DEFAULT '127.0.0.1' NOT NULL ,
  17. `comment_host` VARCHAR( 255 ) DEFAULT 'localhost' NOT NULL ,
  18. PRIMARY KEY ( `commentid` )
  19. );

Tak będzie łatwiej... pamiętaj, że *_date to stempel czasu (funkcja time();)
Go to the top of the page
+Quote Post
rogrog
post
Post #5





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


@Tiraeth: no oczywiście projekt bazy na pewno bardziej elegancki od tego co ma kemsi, tylko dlaczego używasz INTów do reprezentowania daty zamiast wbudowanych typów SQLa?? To wprowadza wg mnie tylko zamieszanie w bazie, utrudnia korzystanie z bazy i uniemożliwia używanie SQLowych uławień w korzystaniu z dat - nie widze zalet.
Go to the top of the page
+Quote Post
Darti
post
Post #6





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Cytat(kemsi @ 2005-03-10 17:13:42)
Niestety to nic nie dało. A na dodatek pokazywały się błędy z nie poprawnym kodem. Ma ktoś jeszcze jakiśpomysł?

ok poprawilem - brakowało "
Go to the top of the page
+Quote Post
kemsi
post
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Dzięki Tiraeth za nową strukture, ale mam pytanie jak w systemie newsów stworzonym na twojej sktrukturze odczytam komentarze do danego newsa? Bo w bazach danych już jakośtego nie rozumiem.
Go to the top of the page
+Quote Post
tiraeth
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. SELECT *
  2. FROM news_comments WHERE comment_newsid=$_GET['nid']

gdzie $_GET['nid'] to numer newsa...
Go to the top of the page
+Quote Post
kemsi
post
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Oto moje pytania co do twojej struktury:
1. comment_newsid=$_GET['nid'] - skąd wziąłeś to $_GET['nid'], bo z tego co kojarze to takie coś powinno być w tabeli w news_comments.
2.Czy jak dodaje numer komentarza do tabeli news_comments to zawsze taki sam numer newsa do tej tabeli muszę dodawać i potem używać tego co podałeś w poprzednim poście?
Go to the top of the page
+Quote Post
Ociu
post
Post #10





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




1. comments.php?newsid=1
Jak chcesz zobaczyć komentarze to robisz coś takiego (a właściwie link do ich zobaczenia)
  1. <?php
  2. # tu wczesniejszy kod
  3. print &#092;"<a href=comments.php?newsid=\".$a['id'].\">\";
  4. ?>

2. Tak

edit:
zapomniałem dodać: jeśli zrobisz tak jak ja napisałem wtedy dajesz $_GET['newsid']; (tak dla informacji...)
pozdrawiam

Ten post edytował Ociu 11.03.2005, 22:05:09
Go to the top of the page
+Quote Post
SongoQ
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Panowie jak mozna dopuscic do takiej rzeczy:
  1. <?php
  2.  
  3. $odczytaj_kom=mysql_query(&#092;"SELECT `id`,`komentarz`,`nick`,`mail` FROM `komentarze` ORDER BY `id` DESC\"); 
  4. while($a=mysql_fetch_array($odczytaj_kom)){ 
  5. if($id==$a['id']){ 
  6. //odczytywanie komentarzy 
  7. echo &#092;"<table border=1><tr><td>\".$a['komentarz'].\"</td></tr> 
  8. <tr><td>Nick: &#092;".$a['nick'].\"  Mail: \".$a['mail'].\"<br><br>\"; 
  9. } 
  10. }
  11.  
  12. ?>


Kto Cie uczyl baz danych. Nie zrozum mnie zle, jest tabelka ktora ma 50 milionow komentarzy i zwracasz je posortowane i spawdzasz w kodzie i wyswietlasz ten komentarz i tak czas wykonania takiego zapytania bedzie bardzo dlugi, jesli nie wierzysz to sprawdz i sie przekonaj, nastepnie jesli serwer php i bazy danych jest na osobnych maszynach, a nawet jesli sa to inne lacza to ja dziekuje za uzywanie takiego oprogramowania. Jesli był bym uzytkownikiem to by mnie "szlak" trafił ze sie tak długo ładuje, a jesli był bym adminem to bym Ci odrazu wyciachał baze i konto ftp. Takie rzczy nie mogą być dopuszczone.

Polecam najpierw poczytanie o bazach danych a nastepnie pisanie aplikacji.
Go to the top of the page
+Quote Post
Ociu
post
Post #12





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




SongoQ: Szczerze mówiąc, nie zauważyłem tego.
IHMO: Zrobienie dobrego kodu SQL to 3/5 mniej roboty...
  1. <?php
  2. $id = $_GET['news_id'];
  3. $odczytaj_kom = mysql_query(&#092;"SELECT `id`,`komentarz`,`nick`,`mail` FROM `komentarze` WHERE `news_id` = '\".$id.\"' ORDER BY `id` DESC\"); 
  4. ?>

pozdrawiam
Go to the top of the page
+Quote Post
SongoQ
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Przegladajac to forum widac ze czesc ludzi prezentuje wysoki poziom, maja dobre pomysly, doswiadczenie ale jest tez inna czesc uzytkownikow co tak naprawde zanim zaczna cos pisac w php i sql powinni poczytac o bazach danych.

Przy duzych projektach klient np zazada przetestowania dla duzej ilosci danych i co wtedy: "przepraszam ale to dziala dla 10 rekordów" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Na pewno ponownie nie skorzysta z waszych usług.
Go to the top of the page
+Quote Post
kemsi
post
Post #14





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


SongoQ-trochę nie rozumiem o co ci chodzi z tym, że "przepraszam ale to dziala dla 10 rekordów". Wogóle jakośnie nie zrorumiałem tych twoich postów.

" jest tabelka ktora ma 50 milionow komentarzy i zwracasz je posortowane i spawdzasz w kodzie i wyswietlasz ten komentarz i tak czas wykonania takiego zapytania bedzie bardzo dlugi" - to jak mam to inaczej zrobić? Jak mozesz to wytłumacz to w jakiś prostszy sposób.
Z góry dzięki za odp.
Go to the top of the page
+Quote Post
Ociu
post
Post #15





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Jemu chodzi o to, że twój kod będzie działał wolno... gdyż pętla będzie 'pętlić się' tyle razy ile masz rekordów w bazie, a w niej dopiero sprawdzi czy "1 = 1". Lepiej zrobić to za pomocą SQL, ponieważ baza odrzuci te rekordy, które się nie równają czemuś tam. Różnica pomiędzy tym jest niewielka dla małej ilości wierszy... np. 10, ale gdy masz 5 000 rekordów i 15 jest z nich poprawnych ? wtedy kicha.. Twój skrypt będzie sprawdział 5 000 rekordów, a gdy dasz SQL, to on sam wykluczy i pętla będzie wyświetlać tylko 15 razy... różnica niewielka ?
Skorzystaj z mojego kodu.. ( (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

pozdrawiam
Go to the top of the page
+Quote Post
SongoQ
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@Ociu dzieki za wytlumaczenie @kemsi.

Jak juz @Ociu pisal rozwiazanie masz powyzej.
Bazy danych sa stworzone po to zeby wyciagac takie rokordy ktore nas interesuja, w Twoim przypadku komentarze do newsa i nie ma potrzeby wyciagac reszty. Tak sie stosuje jesli masz dane w plikach.
Go to the top of the page
+Quote Post
kemsi
post
Post #17





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Dobra juzprawie wszystko rozumiem tylko przy wyświetlaniu tego idnewsa i id komentarza do newsa pojawił mi siętaki błąd:
Kod
Parse error: syntax error, unexpected T_VARIABLE in e:\usr\krasnal\www\php\skrypty\mysql\news\komentuj.php on line 7


A oto kod tego mojego pliku:

  1. <?
  2. //łączenie z bazą
  3. $polancz=mysql_connect(&#092;"localhost\",\"root\",\"krasnal\") or die();
  4. mysql_select_db('news_comments');
  5.  
  6. $id=$_GET['comment_news_id']
  7. $odczytaj_kom=mysql_query(&#092;"SELECT `commentid`,`comment_newsid`,`comment_body`,`comment_nick` FROM `new
    s
  8. comments` WHERE commentid='\".$_GET.\"' ORDER BY `commentid` DESC\");
  9. while($a=mysql_fetch_array($odczytaj_kom)){
  10. //odczytywanie komentarzy
  11. echo \"<table border=1><tr><td>\".$a['comment_body'].\"</td></tr>
  12. <tr><td>Nick: \".$a['comment_nick'].\"<br><br>\";
  13. }
  14.  
  15. //formularz dodawania komentarzy
  16. echo \"<form action=\"kom.php\" method=\"POST\"><table border=\"1\">
  17. <tr><td valign=\"top\">Tresc:<textarea cols=\"36\" rows=\"6\" name=\"comment_body\"></textarea></td></tr>
  18. <tr><td>Nick:<input type=\"text\" name=\"comment_nick\"></td></tr>
  19. <tr><td><input type=\"submit\" value=\"WYŚLIJ\"> <input type=\"reset\" value=\"WYCZYSC\"></table></form>\";
  20. ?>


Z góry dzięki za odp.
Go to the top of the page
+Quote Post
Darti
post
Post #18





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


bo nie masz średnika w linii 6 na końcu (lub na początku 7)
(IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #19





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. <?php
  2. $odczytaj_kom=mysql_query(&#092;"SELECT `commentid`,`comment_newsid`,`comment_body`,`comment_nick` FROM `new
    s
  3. comments` WHERE commentid='\".$_GET.\"' ORDER BY `commentid` DESC\");
  4. ?>


$_GET - cos Ci tam brakuje => $_GET['comment_news_id'] albo $id
Go to the top of the page
+Quote Post
kemsi
post
Post #20





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 27.09.2004

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


Dzięki wielkie. To pomogło w tym problemie, ale teraz jest błąd taki:
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\usr\krasnal\www\php\skrypty\mysql\news\komentuj.php on line 8
linia 8 to jest umnie z pętlą while.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.12.2025 - 21:40