Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php & mysql] Mój system newsów
cinek__
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


Napisałem sobie taki system newsów:

Kod
<?
mysql_connect ("localhost", "root", "myadmin") or
die ("Nie można połaczyć");
mysql_select_db ("depor") or
die ("Nie można połączyc");

$ilosc = mysql_num_rows(mysql_query("select * from komentarze where news = '$_GET[nr]';"));

if ($nr>0) {

$wynik = mysql_query ("select * from news order by nr desc limit 0,4;");

if ($rekord = mysql_fetch_array ($wynik, $ilosc)) {

print "<br><TABLE CELLSPACING='0' CELLPADDING='0' BORDER='0' WIDTH='417'>";
print "<Tr valign='middle'>";
print "<Td width='417' height='19' align='left' background='img/main_top.jpg' class='title'>";
print "<span class='menu'>&nbsp;".$rekord[2]."&nbsp;</span><span class='i'>\</span> dodał: <span class='nick'>".$rekord[5]."</span> <span class='i'>\</span>&nbsp;".$rekord[1];
print "</td></tr>";
print "<tr valign=top><td bgcolor=f9f9f9 style=padding:7px class=menu>";
print "<span class=menu>".$rekord[4]."</span>";
print "</TD></TR>";
print "<tr>";
print "<td width=417 height=25 background=img/main_bot.jpg>";

print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=417>";
print "<Tr valign=bottom>";
print "<Td width=317 align=left>";
print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"index.php?nr=".$rekord[0]."\"><img border=0 SRC=img/b_wiecej.gif width=49 height=11>";
print "</td><td width=100 align=left class=menu>komentarze [<span class=i>".$ilosc."</span>]</TD>";
print "</tr></table></TD></TR></table></td></tr></table>";
print "<br><br>";


$baza = @mysql_connect("localhost", "root", "myadmin");
@mysql_select_db("depor");

$sql = "SELECT comment, time, author, email FROM komentarze WHERE news='$_GET[nr]' ORDER BY time DESC";

$wynik = @mysql_query($sql);
echo "<center>";
while(list($comment, $time, $author, $email) = @mysql_fetch_array($wynik)) {
    $time = date();
    $comment = htmlspecialchars($comment);
    $comment = nl2br($comment);
    if($email != "") { $author = "<a href='mailto:$email'>$author</a>"; }

print    "<table class='menu' width='300'>\n";
print    "<tr>\n";
print    "<td align='left' width='50%' bgColor='white'>$author</td>\n";
print    "<td align='right' width='50%' bgColor='white'>$time</td></tr>\n";
print    "<tr><td width='100%' bgColor='#FFFFFF' colspan='2'>$comment</td>\n";
print    "</tr>\n";
print    "</table><br>&nbsp;\n";
}
print    "</center>";
print    "<form action='dodaj_kom.php' method='post' name='dodaj_kom'>\n";
print    "<div class='kom' align='center'>\n";
print    "<span class=menu>&nbsp;Nick: </span><input type='text' name='nick' size='50'><br>\n";
print    "<span class=menu>Email: </span><input type='text' name='email' size='50'><br>\n";
print    "<span class=menu>Treść:</span><Br><textarea name='comment' cols='50' rows='6'></textarea><br><br>\n";
print    "<input type='submit' value='Dodaj'>\n";
print    "<input type='hidden' name='nr' value='$_GET[nr]'>\n";
print    "</div>\n";
print    "</form>\n";

} else {
print "Nie ma newsa o podanym numerze\n"; }
} else {

$wynik = mysql_query ("select * from news order by nr desc;");

while ($rekord = mysql_fetch_array ($wynik)) {

print "<br><TABLE CELLSPACING='0' CELLPADDING='0' BORDER='0' WIDTH='417'>";
print "<Tr valign='middle'>";
print "<Td width='417' height='19' align='left' background='img/main_top.jpg' class='title'>";
print "<span class='menu'>&nbsp;".$rekord[2]."&nbsp;</span><span class='i'>\</span> dodał: <span class='nick'>".$rekord[5]."</span> <span class='i'>\</span>&nbsp;".$rekord[1];
print "</td></tr>";
print "<tr valign=top><td bgcolor=f9f9f9 style=padding:7px class=menu>";
print "<span class=menu>".$rekord[3]."</span>";
print "</TD></TR>";
print "<tr>";
print "<td width=417 height=25 background=img/main_bot.jpg>";

print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=417>";
print "<Tr valign=bottom>";
print "<Td width=317 align=left>";
print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"index.php?nr=".$rekord[0]."\"><img border=0 SRC=img/b_wiecej.gif width=49 height=11>";

print "</td><td width=100 align=left class=menu>komentarze [<span class=i>".$ilosc."</span>]</TD>";
print "</tr></table></TD></TR></table></td></tr></table>";
}
}
?>



I teraz tak można to zobaczyć to Tutaj i tak nie pokazuje mi na stronie głównej ile jest tych komentarzy a jak klikne na więcej to pokaże ile jest - dlaczego?

to kod wyświetlania ile jest newsów:

Kod
$ilosc = mysql_num_rows(mysql_query("select * from komentarze where news = '$_GET[nr]';"));


I jeszcze mam problem z formatowaniem daty funkcją:

Kod
date();


kolega coś wspominał że zamiast wypisywać d.m.Y lepiej wstawić funkcję
Kod
now();
Jaka to?? I Jak ją wstawić w date(); (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
tumczasty
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


1. na forum kod php/mysql dawaj nie do CODE, tylko do php albo SQL, żeby pokolorowało

2. z bazą wystarczy połączyć się raz, na samym początku

3. sprawdzać, ile jest newsów, lepiej chyba mniej więcej tak:
  1. $ilosc = mysql_fetch_row(mysql_query("select COUNT(*) from komentarze where news = '$_GET[nr]'"));
  2. $ilosc=$ilosc[0];


4. Ta zmienna $ilosc, której używasz wewnątrz ostatniej pętli WHILE, jest ustawiana na samym początku, i to na podst. wartości $nr, a przecież $nr ma wtedy wartość 0 ($nr<=0), więc nic dziwnego, że ilość komentarzy wychodzi zawsze 0. Dlatego tę zmienną $ilosc trzeba ustawiać wewnątrz tej pętli WHILE, tuż przed jej wyświetleniem, używając w zapytaniu $rekord[0] zamiast $_GET[nr].

5. Na początku masz coś takiego:
  1. $wynik = mysql_query ("select * from news order by nr desc LIMIT 0, 4;");

to jest chyba źle (przynajmniej w tym miejscu skryptu - bo mogłoby ew. pójść do ELSE), bo przez to, niezależnie od $_GET[nr], wyświetli zawsze najnowszego newsa. trzeba z tego zapytania wywalić ORDER BY i LIMIT, a dać WHERE, no i użyć $_GET[nr]

6. funkcja NOW() występuje tylko w mysql... jest kilka możliwości zapisywania i później wyświetlania daty/czasu w bazie...

Ten post edytował tumczasty 7.08.2004, 14:46:59
Go to the top of the page
+Quote Post
sf
post
Post #3





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


  1. <?php
  2. $time=date(&#092;"Ymd\");
  3. ?>


date" title="Zobacz w manualu PHP" target="_manual - jak bedziesz potrzebowal jeszcze czas (godz. min. sek.) to tutaj pisze wszystko jak to zrobic

Ten post edytował sf 7.08.2004, 13:54:21
Go to the top of the page
+Quote Post
cinek__
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


Tumczasty mógłbyś dawać całe kody?

Najlepeij by było jakbyś dał cały od razu bo coś nie kapuje...

EDIT:

Nie rozumiem punktów:

pięć (5) i cztery (4) mógłbyś dać kod??

Ten post edytował cinek(ten_z_siteql.net) 7.08.2004, 21:36:37
Go to the top of the page
+Quote Post
tumczasty
post
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


ale jesteś wymagający (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) a masz:
  1. <?
  2. mysql_connect (&#092;"localhost\", \"root\", \"myadmin\") or
  3. die (&#092;"Nie można połaczyć\");
  4. mysql_select_db (&#092;"depor\") or
  5. die (&#092;"Nie można połączyc\");
  6.  
  7. //
  8.  
  9. if ($nr>0) {
  10.  
  11. $wynik = mysql_query (&#092;"select * from news WHERE nr=$_GET[nr]\");
  12.  
  13. if ($rekord = mysql_fetch_array ($wynik)) {
  14. $ilosc = mysql_fetch_row(mysql_query(&#092;"select COUNT(*) from komentarze where news = '$_GET[nr]'\"));
  15. print &#092;"<br><TABLE CELLSPACING='0' CELLPADDING='0' BORDER='0' WIDTH='417'>\";
  16. print &#092;"<Tr valign='middle'>\";
  17. print &#092;"<Td width='417' height='19' align='left' background='img/main_top.jpg' class='title'>\";
  18. print &#092;"<span class='menu'>&nbsp;\".$rekord[2].\"&nbsp;</span><span class='i'></span> dodał: <span class='nick'>\".$rekord[5].\"</span> <span class='i'></span>&nbsp;\".$rekord[1];
  19. print &#092;"</td></tr>\";
  20. print &#092;"<tr valign=top><td bgcolor=f9f9f9 style=padding:7px class=menu>\";
  21. print &#092;"<span class=menu>\".$rekord[4].\"</span>\";
  22. print &#092;"</TD></TR>\";
  23. print &#092;"<tr>\";
  24. print &#092;"<td width=417 height=25 background=img/main_bot.jpg>\";
  25.  
  26. print &#092;"<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=417>\";
  27. print &#092;"<Tr valign=bottom>\";
  28. print &#092;"<Td width=317 align=left>\";
  29. print &#092;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"index.php?nr=\".$rekord[0].\"\"><img border=0 SRC=img/b_wiecej.gif width=49 height=11>\";
  30. print &#092;"</td><td width=100 align=left class=menu>komentarze [<span class=i>\".$ilosc[0].\"</span>]</TD>\";
  31. print &#092;"</tr></table></TD></TR></table></td></tr></table>\";
  32. print &#092;"<br><br>\";
  33.  
  34.  
  35. //
  36. //
  37.  
  38.  
  39.  
  40. $wynik = @mysql_query(&#092;"SELECT comment, time, author, email FROM komentarze WHERE news='$_GET[nr]' ORDER BY time DESC\");
  41. echo &#092;"<center>\";
  42. while(list($comment, $time, $author, $email) = @mysql_fetch_array($wynik)) {
  43.    $comment = nl2br(htmlspecialchars($comment));
  44.  
  45.    if($email != &#092;"\") { $author = \"<a href='mailto:$email'>$author</a>\"; }
  46.  
  47. print    &#092;"<table class='menu' width='300'>n\";
  48. print    &#092;"<tr>n\";
  49. print    &#092;"<td align='left' width='50%' bgColor='white'>$author</td>n\";
  50. print    &#092;"<td align='right' width='50%' bgColor='white'>$time</td></tr>n\";
  51. print    &#092;"<tr><td width='100%' bgColor='#FFFFFF' colspan='2'>$comment</td>n\";
  52. print    &#092;"</tr>n\";
  53. print    &#092;"</table><br>&nbsp;n\";
  54. }
  55. print    &#092;"</center>\";
  56. print    &#092;"<form action='dodaj_kom.php' method='post' name='dodaj_kom'>n\";
  57. print    &#092;"<div class='kom' align='center'>n\";
  58. print    &#092;"<span class=menu>&nbsp;Nick: </span><input type='text' name='nick' size='50'><br>n\";
  59. print    &#092;"<span class=menu>Email: </span><input type='text' name='email' size='50'><br>n\";
  60. print    &#092;"<span class=menu>Treść:</span><Br><textarea name='comment' cols='50' rows='6'></textarea><br><br>n\";
  61. print    &#092;"<input type='submit' value='Dodaj'>n\";
  62. print    &#092;"<input type='hidden' name='nr' value='$_GET[nr]'>n\";
  63. print    &#092;"</div>n\";
  64. print    &#092;"</form>n\";
  65.  
  66. } else {
  67. print &#092;"Nie ma newsa o podanym numerzen\"; }
  68. } else {
  69.  
  70. $wynik = mysql_query (&#092;"select * from news order by nr desc\");
  71.  
  72. while ($rekord = mysql_fetch_array ($wynik)) {
  73. $ilosc = mysql_fetch_row(mysql_query(&#092;"select COUNT(*) from komentarze where news = '$rekord[0]'\"));
  74. print &#092;"<br><TABLE CELLSPACING='0' CELLPADDING='0' BORDER='0' WIDTH='417'>\";
  75. print &#092;"<Tr valign='middle'>\";
  76. print &#092;"<Td width='417' height='19' align='left' background='img/main_top.jpg' class='title'>\";
  77. print &#092;"<span class='menu'>&nbsp;\".$rekord[2].\"&nbsp;</span><span class='i'></span> dodał: <span class='nick'>\".$rekord[5].\"</span> <span class='i'></span>&nbsp;\".$rekord[1];
  78. print &#092;"</td></tr>\";
  79. print &#092;"<tr valign=top><td bgcolor=f9f9f9 style=padding:7px class=menu>\";
  80. print &#092;"<span class=menu>\".$rekord[3].\"</span>\";
  81. print &#092;"</TD></TR>\";
  82. print &#092;"<tr>\";
  83. print &#092;"<td width=417 height=25 background=img/main_bot.jpg>\";
  84.  
  85. print &#092;"<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=417>\";
  86. print &#092;"<Tr valign=bottom>\";
  87. print &#092;"<Td width=317 align=left>\";
  88. print &#092;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"index.php?nr=\".$rekord[0].\"\"><img border=0 SRC=img/b_wiecej.gif width=49 height=11>\";
  89.  
  90. print &#092;"</td><td width=100 align=left class=menu>komentarze [<span class=i>\".$ilosc[0].\"</span>]</TD>\";
  91. print &#092;"</tr></table></TD></TR></table></td></tr></table>\";
  92. }
  93. }
  94. ?>

z tym date() nie wiem, co począć, bo nie wiem, co byś chciał osiągnąć i jak zapisujesz datę w bazie.
skrypt można by chyba było jeszcze w paru miejscach ulepszyć...
mam nadzieję, że się nigdzie nie pomyliłem

Ten post edytował tumczasty 7.08.2004, 22:56:01
Go to the top of the page
+Quote Post
cinek__
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


Dzięki za poświęcony czas i pomoc - naprawde mi pomogłeś - działa!

Ale jest pewne "ale" KLIKNIJ i zobacz jak mi wywala prawe menu (z komentami też tak miałem ale coś no to poradziłęm - z tym gorzej :/ ) Co zmieieć? I jak zrobić żeby mi tylko 6 najnowszych wiadomości wyświetlało? - Sam mówiłęś że można ulepszyć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
tumczasty
post
Post #7





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


Cytat
i zobacz jak mi wywala prawe menu

nie wiem, o co chodzi

6 najnowszych wiadomości - dopisać do zapytania LIMIT:
  1. $wynik = mysql_query ("select * from news order by nr desc LIMIT 6 ");
Go to the top of the page
+Quote Post
cinek__
post
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


No wejdź w deportivosite.tk -> KLIKNIJ I zobacz jak mi wywala przez te zakończenia tabelki:

  1. <?php
  2. print &#092;"</tr></table></TD></TR></table></td></tr></table>\";
  3. ?>


Prawe menu :/ Jak to zmienić? Jak zmienie to potem IE źle interpretuje <br> - odstępy między newsami :/
Go to the top of the page
+Quote Post
pirat
post
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.05.2003
Skąd: Katowice

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


przy okazji wlazlem na stronke i cos takiego u dolu strony...

Warning: open(/tmp/sess_cc314fbf839f5cf801ec1580316fbeca, O_RDWR) failed: Brak miejsca na urządzeniu (28) in Unknown on line 0Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

moze Cie zainteresowac (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
cinek__
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


Cytat(pirat @ 2004-08-09 22:03:46)

Mam to od niedawana, co to??
Go to the top of the page
+Quote Post
FiDO
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Najwazniejsza czesc komunikatu jest po polsku, czego wiec nie rozumiesz ?
Go to the top of the page
+Quote Post
cinek__
post
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.08.2004

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


Jak to naprawić?
Go to the top of the page
+Quote Post
FiDO
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


A jak sie "naprawia" brak miejsca na dysku?
Go to the top of the page
+Quote Post

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.08.2025 - 18:07