Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php & mysql] Mój system newsów
Forum PHP.pl > Forum > Gotowe rozwiązania
cinek__
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(); questionmark.gif
tumczasty
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...
sf
  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
cinek__
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??
tumczasty
ale jesteś wymagający 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.    //$time = date(); questionmark.gif
  44.    $comment = nl2br(htmlspecialchars($comment));
  45.  
  46.    if($email != &#092;"\") { $author = \"<a href='mailto:$email'>$author</a>\"; }
  47.  
  48. print    &#092;"<table class='menu' width='300'>n\";
  49. print    &#092;"<tr>n\";
  50. print    &#092;"<td align='left' width='50%' bgColor='white'>$author</td>n\";
  51. print    &#092;"<td align='right' width='50%' bgColor='white'>$time</td></tr>n\";
  52. print    &#092;"<tr><td width='100%' bgColor='#FFFFFF' colspan='2'>$comment</td>n\";
  53. print    &#092;"</tr>n\";
  54. print    &#092;"</table><br>&nbsp;n\";
  55. }
  56. print    &#092;"</center>\";
  57. print    &#092;"<form action='dodaj_kom.php' method='post' name='dodaj_kom'>n\";
  58. print    &#092;"<div class='kom' align='center'>n\";
  59. print    &#092;"<span class=menu>&nbsp;Nick: </span><input type='text' name='nick' size='50'><br>n\";
  60. print    &#092;"<span class=menu>Email: </span><input type='text' name='email' size='50'><br>n\";
  61. print    &#092;"<span class=menu>Treść:</span><Br><textarea name='comment' cols='50' rows='6'></textarea><br><br>n\";
  62. print    &#092;"<input type='submit' value='Dodaj'>n\";
  63. print    &#092;"<input type='hidden' name='nr' value='$_GET[nr]'>n\";
  64. print    &#092;"</div>n\";
  65. print    &#092;"</form>n\";
  66.  
  67. } else {
  68. print &#092;"Nie ma newsa o podanym numerzen\"; }
  69. } else {
  70.  
  71. $wynik = mysql_query (&#092;"select * from news order by nr desc\");
  72.  
  73. while ($rekord = mysql_fetch_array ($wynik)) {
  74. $ilosc = mysql_fetch_row(mysql_query(&#092;"select COUNT(*) from komentarze where news = '$rekord[0]'\"));
  75. print &#092;"<br><TABLE CELLSPACING='0' CELLPADDING='0' BORDER='0' WIDTH='417'>\";
  76. print &#092;"<Tr valign='middle'>\";
  77. print &#092;"<Td width='417' height='19' align='left' background='img/main_top.jpg' class='title'>\";
  78. 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];
  79. print &#092;"</td></tr>\";
  80. print &#092;"<tr valign=top><td bgcolor=f9f9f9 style=padding:7px class=menu>\";
  81. print &#092;"<span class=menu>\".$rekord[3].\"</span>\";
  82. print &#092;"</TD></TR>\";
  83. print &#092;"<tr>\";
  84. print &#092;"<td width=417 height=25 background=img/main_bot.jpg>\";
  85.  
  86. print &#092;"<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=417>\";
  87. print &#092;"<Tr valign=bottom>\";
  88. print &#092;"<Td width=317 align=left>\";
  89. 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>\";
  90.  
  91. print &#092;"</td><td width=100 align=left class=menu>komentarze [<span class=i>\".$ilosc[0].\"</span>]</TD>\";
  92. print &#092;"</tr></table></TD></TR></table></td></tr></table>\";
  93. }
  94. }
  95. ?>

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
cinek__
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ć winksmiley.jpg
tumczasty
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 ");
cinek__
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 :/
FiDO
Najwazniejsza czesc komunikatu jest po polsku, czego wiec nie rozumiesz ?
cinek__
Jak to naprawić?
FiDO
A jak sie "naprawia" brak miejsca na dysku?
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-2024 Invision Power Services, Inc.