Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]problem z newsami
Forum PHP.pl > Forum > Przedszkole
Rico_ds
Witam.
mam pewien problem. Zrobiłem newsy na stronie, niestety po wciśnięciu więcej, strona przechodzi , ale nie pokazuje pełnej zawartości newsa. Poniżej zamieszczam kod:
index.php
  1. <div id="news"> <? include ('body/news.php'); ?> </div>


news.php
  1. <div class="p2" style="margin-bottom:5px;">Aktualności</div> 
  2. <?php news($id); ?>


news_p.php
  1. <?php news_p($id); ?>


wyswietl.php
  1. <?php
  2. function news()
  3. {
  4. $wynik = mysql_query("SELECT * FROM news order by id DESC LIMIT 0, 4");
  5. while($wiersz = mysql_fetch_assoc($wynik))
  6.  
  7.  {//początek pętli
  8. //wyświetl wynik
  9.  
  10.  echo '<div class="p5" style="float:left;">';
  11.  echo '<div class="p5" style="text-align:justify;">'.$wiersz['tytul'].'</div>';
  12.  echo '<div class="p6" style=" display:inline; margin-left:476px;">'.$wiersz['data'].'</div>';
  13.  echo '<div class="p6" style="width: 550px; text-align:justify;">';
  14.  echo ''.$wiersz['opis'].'';
  15.  echo '</div>';
  16.  echo '<a href=\"news_p.php?id=$wiersz[id] class="p5" style="margin-left:510px;">więcej</a>';
  17.  
  18.  }//koniec pętli
  19. }
  20.  
  21. function news_p()
  22. {
  23. $id = $_GET['id'];
  24. $wynik = mysql_query("SELECT * FROM news WHERE id='$id'"); 
  25. while($wiersz = mysql_fetch_assoc($wynik))
  26.  
  27.  
  28. {//początek pętli
  29.  //wyświetl wynik
  30.  
  31.  echo "<b>";
  32.  
  33.  echo $wiersz['tytul'];
  34.  
  35.  echo "</b>";
  36.  
  37.  echo $wiersz['dtime'];
  38.  
  39.  echo "</i><hr>";
  40.  
  41.  echo $wiersz['opis'];
  42.  
  43.  echo " ";
  44.  
  45.  echo $wiersz['text'];
  46.  
  47.  echo "</br></br><a href=\"javascript:self.history.back();\"><-- Go Back</a>";
  48.  
  49.  
  50.  }//koniec pętli
  51. }
  52. ?>
Shili
Cytat
$wiersz[id]
Gdzie tutaj masz apostrofy?

Do news_p przekazujesz id (masz to w deklaracji funkcji). W jej implementacji kompletnie to olewasz. Skoro je przekazujesz, to się tym posiłkuj, zamiast wyłuskiwać je jeszcze raz. I popraw bezpieczeństwo - na razie wszystko jest dziurawe jak stare sito.

Nie pokazuje pełnej zawartości newsa, czyli co pokazuje? Jeśli wszystko inne, to najwyraźniej nie istnieje kolumna text.

Na wszelki wypadek: http://nospor.pl/php-faq-n29.html punkt 2. Sprawdź sobie wszystkie warningi, jakie Ci się pokażą.
Rico_ds
poprawiłem już z tymi apostrofami.

w bazie tabelka text jest wypełniona tekstem, ale nic nie wyświetla, ani tytułu. ani daty, ani tekstu.

p.s w pliku news pokazuje mi Notice: Undefined variable: id in /home/users/ppwow/public_html/body/news.php on line 6 to jest
  1. <?php news($id); ?>
Shili
Nie masz zmiennej id, a próbujesz ją przesłać jako argument funkcji.

Wstaw przed while'm
  1. <?php
  2. ?>
Coś się wyświetla?
Rico_ds
nic. wgrałem na serwer, żebyś mógł zobaczyć http://www.ppwow-pomorskie.pl/
Shili
Mogła zobaczyć.

Spójrz na adres - piękne id Ci przesyła, prawda? winksmiley.jpg

A teraz spójrz na http://pl.php.net/echo przykład1 spójrz na apostrofy jakich użyłeś w wyświetleniu linku i przeanalizuj co zrobiłeś źle i jak to zrobić powinieneś.
Rico_ds
Przepraszam, mogłaśsmile.gif

no właśnie widzę, że adres pokazuje mi błędny i nie bardzo chce się zmienić

  1. <?php
  2. '<a href=\"news_p.php?id=$wiersz['id']\" class="p5" style="margin-left:510px;">więcej</a>';
  3. ?>


tak?
Shili
Nie, nie tak. Przeanalizuj krok po kroku przykład z podlinkowanej przeze mnie strony - gwarantuję, że nauczysz się dużo więcej niż gdybym podała rozwiązanie na tacy.

Zwróć zwłaszcza uwagę na to co masz wypisywane po // w przykładach oraz na to czy w przykładzie został użyty " czy '
Rico_ds
czytam, i czytam ten manual, zmieniam, kombinuje i dalej nic nie rozumiem sciana.gif dalej nie wiem dlaczego to się nie wyświetla, a tym bardziej jak to zmienić. Jeżeli możesz to napisz mi to na jakimś przykładzie, nie koniecznie moim.
Shili
  1. <?php
  2. $foo = "tekst zmiennej";
  3. echo $foo; // wyświetli: tekst zmiennej
  4. echo "$foo"; // wyświetli: tekst zmiennej
  5. echo '$foo'; // wyświetli: $foo
  6. ?>
Rico_ds
dalej nie kumam, jak to się ma do linku. Coś mam problem z tym.
wypociłem to:
  1. <?php
  2. echo ('<a href="'news_p.php?id=$wiersz['id'].'">więcej</a>');
  3. ?>

ale dalej nie działa:/
f1xer
Naprawde poczytaj o echo
  1. <?php
  2. echo '<a href="news.php?id='.$wiersz['id'].'">Więcej</a>';
  3. ?>
Rico_ds
Tylko, że też tak miałem, i zmieniłem tak jak napisałeś, ale dalej nie zmieniło to wyświetlania się pełnych treści newsów. Dalej nic nie pokazuje.
  1. <?php
  2. function news()
  3. {
  4. $wynik = mysql_query("SELECT * FROM news order by id DESC LIMIT 0, 4");
  5. while($wiersz = mysql_fetch_assoc($wynik))
  6.  
  7.  {//początek pętli
  8. //wyświetl wynik
  9.  
  10.  echo '<div class="p5" style="float:left;">';
  11.  echo '<div class="p5" style="text-align:justify;">'.$wiersz['tytul'].'</div>';
  12.  echo '<div class="p6" style=" display:inline; margin-left:476px;">'.$wiersz['data'].'</div>';
  13.  echo '<div class="p6" style="width: 550px; text-align:justify;">';
  14.  echo ''.$wiersz['opis'].'';
  15.  echo '</div>';
  16.  echo '<a href="news.php?id='.$wiersz['id'].'">Więcej</a>';  
  17.  
  18.  }//koniec pętli
  19. }
  20.  
  21. function news_p()
  22. {
  23. $id = $_GET['id'];
  24. $wynik = mysql_query("SELECT * FROM news WHERE id='$id'."); 
  25. while($wiersz = mysql_fetch_assoc($wynik))
  26.  
  27.  
  28. {//początek pętli
  29.  //wyświetl wynik
  30.  
  31.  echo "<b>";
  32.  
  33.  echo $wiersz['tytul'];
  34.  
  35.  echo "</b>";
  36.  
  37.  echo $wiersz['data'];
  38.  
  39.  echo "</i><hr>";
  40.  
  41.  echo $wiersz['opis'];
  42.  
  43.  echo " ";
  44.  
  45.  echo $wiersz['text'];
  46.  
  47.  echo "</br></br><a href=\"javascript:self.history.back();\"><-- Go Back</a>";
  48.  
  49.  
  50.  }//koniec pętli
  51. }
  52. ?>
f1xer
No i dobrze że nic nie pokazuje bo gdzie niby wywołujesz tą funkcję news_p() ?
wgóle jakoś dziwnie masz to napisane po pierwsze to link powinien być do news_p.php a nie do news.php po drugie w news_p.php też musisz zrobić include news.php radzę ci zrobić to inaczej i przemyśl to dobrze
Rico_ds
Postanowiłem przerobić ten kod. Teraz wygląda on tak:
  1. <?php
  2. function news()
  3. {
  4. if ($_GET['id']>0) {
  5. $wynik = mysql_query ("SELECT * FROM news WHERE id=".$_GET['id']."");
  6. if ($wiersz = mysql_fetch_assoc ($wynik)) {
  7.  
  8.  {//początek pętli
  9.  //wyświetl wynik
  10.  
  11. echo "<b>";
  12. echo $wiersz['tytul'];
  13. echo "</b>";
  14. echo $wiersz['data'];
  15. echo "</i><hr>";
  16. echo $wiersz['opis'];
  17. echo $wiersz['text'];
  18. echo "</br></br><a href=\"javascript:self.history.back();\"><-- Go Back</a>";
  19.  
  20.  
  21.  }//koniec pętli
  22.  } else {
  23. echo "Nie ma newsa o takim numerze\n";
  24.  
  25. }
  26.  
  27. echo "<P><A HREF=\"news.php\">Wszystkie aktualności&gt;&gt;</A></P>"; 
  28. }else{
  29.  
  30. $wynik = mysql_query("SELECT * FROM news order by id DESC LIMIT 0, 4");
  31. while($wiersz = mysql_fetch_assoc($wynik))
  32.  
  33. {
  34.  
  35. echo '<div class="p5" style="float:left;">';
  36. echo '<div class="p5" style="text-align:justify;">'.$wiersz['tytul'].'</div>';
  37. echo '<div class="p6" style=" display:inline; margin-left:476px;">'.$wiersz['data'].'</div>';
  38. echo '<div class="p6" style="width: 550px; text-align:justify;">';
  39. echo ''.$wiersz['opis'].'';
  40. echo '</div>';
  41. echo '<a href="news.php?nr='.$wiersz['id'].'">Więcej</a>'
  42.  
  43. }//koniec pętli
  44.  
  45.  
  46. }
  47. }
  48. ?>


tylko jak klikam na więcej to pokazuje, że plik news.php?nr=7 nie istnieje. A przecież według tego powinno sobie taką podstronę stworzyć. Proszę o radę jak mogę pozbyć się tego błędu
f1xer
zamiast do news.php?nr=7 odwolaj sie do news.php?id=7
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-2025 Invision Power Services, Inc.