Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php+mysql], newsy
M45t3r
post 8.08.2005, 12:49:48
Post #1





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


Witam!

Mam taki oto kod wysiwetlający newsy:
  1. <?php
  2.  
  3. $query = 'SELECT * FROM newsy ORDER BY id DESC LIMIT '.$limit.'';
  4. $result = mysql_query($query);
  5. if($result) {
  6. while($row = mysql_fetch_assoc($result)) {
  7. echo ('<b>'.$row['temat'].'</b>
  8. <br><br>
  9. '.$row['text'].'
  10. <br>
  11. <br>
  12. <a href="mailto:'.$row['mail'].'">'.$row['nick']);
  13. }
  14. }
  15. echo '<br><br>';
  16. ?>



i teraz mam wlasnie problem, zaciolem sie w pewnym momencie, jak zrobic, zeby na link news.php?id=ID NEWSA wyswietal sie news, probowalem w ten sposob, ale sie zaciolem sad.gif:

  1. <?php
  2. if(!isset($wiecej))
  3. {
  4. $query = 'SELECT * FROM newsy ORDER BY id DESC LIMIT '.$limit.'';
  5. $result = mysql_query($query);
  6. if($result) {
  7. while($row = mysql_fetch_assoc($result)) {
  8. echo ('<b>'.$row['temat'].'</b>
  9. <br><br>
  10. '.$row['text'].'
  11. <br>
  12. <br>
  13. <a href="mailto:'.$row['mail'].'">'.$row['nick']);
  14. }
  15. }
  16. }
  17. else
  18. {
  19. $query = 'SELECT * FROM newsy';
  20. $result = mysql_query($query);
  21. if($result) {
  22. while($row = mysql_fetch_assoc($result)) {
  23. //Ale co tutaj questionmark.gif include '?'; questionmark.gif naprwde nie mam pojecia....
  24. }
  25. }
  26. }
  27. echo '<br><br>';
  28. ?>


Ten post edytował M45t3r 8.08.2005, 12:51:19


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
zbig13
post 8.08.2005, 13:19:26
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


  1. <?php
  2.  
  3. if (!isset($_GET['id'])) {
  4.  
  5. $query = 'SELECT * FROM newsy ORDER BY id DESC LIMIT '.$limit.'';
  6. $result = mysql_query($query);
  7. if($result) {
  8. while($row = mysql_fetch_assoc($result)) {
  9. echo ('<b>'.$row['temat'].'</b>
  10. <br><br>
  11. '.$row['text'].'
  12. <br>
  13. <br>
  14. <a href="mailto:'.$row['mail'].'">'.$row['nick']);
  15. // Tu gdzieś daj jeszcze ten link do news.php?id=$row['id'].
  16. }
  17. }
  18. echo '<br><br>';
  19.  
  20. } else {
  21.  
  22. $query = "SELECT * FROM newsy WHERE id = " . $_GET['id'];
  23. $result = mysql_query($query);
  24. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  25. // Tu normalnie wyświetlasz newsa za pomocą echo.
  26. }
  27.  
  28. ?>
Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 13:55:30
Post #3





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


zrobilem tak:

  1. <?php
  2.  
  3. $query = "SELECT * FROM newsy WHERE id = " . $_GET['id'];
  4. $result = mysql_query($query);
  5. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  6. {
  7. echo ''.$row['tresc'].'';
  8. }
  9. }
  10. ?>


i niestety jak otwieram news.php?id=1 powinno pojawiac sie napis test a nie pojawia sie nic czyli cos jest źle...niestety ja nie wiem... jakby ktos nie wiedzial tutaj caly kod:

  1. <?php
  2. if (!isset($_GET['id'])) {
  3. $query = 'SELECT * FROM newsy ORDER BY id DESC LIMIT '.$limit.'';
  4. $result = mysql_query($query);
  5. if($result) {
  6. while($row = mysql_fetch_assoc($result)) {
  7. echo ('<b>'.$row['temat'].'</b>
  8. <br><br>
  9. '.$row['text'].'
  10. <br>
  11. <br>
  12. Dodał: <a href="mailto:'.$row['mail'].'">'.$row['nick'].'</a>.
  13. <a href="news.php?id='.$row['id'].'">Więcej...</a>
  14. ');
  15. }
  16. }
  17. else {
  18.  
  19. $query = "SELECT * FROM newsy WHERE id = " . $_GET['id'];
  20. $result = mysql_query($query);
  21. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  22. {
  23. echo ''.$row['tresc'].'';
  24. }
  25. }
  26. }
  27. ?>


Ten post edytował M45t3r 8.08.2005, 13:56:59


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
Ociu
post 8.08.2005, 14:19:58
Post #4





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




Spróbuj dać zamiast isset, empty" title="Zobacz w manualu php" target="_manual.
Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 14:31:18
Post #5





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


  1. <?php
  2.  
  3. elseif ($wiecej==''.$row['id'].'')
  4. {
  5. $query = "SELECT * FROM newsy WHERE id = '.$wiecej.'";
  6. $result = mysql_query($query);
  7. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  8. {
  9. echo ''.$row['tresc'].'';
  10. }
  11. }
  12.  
  13. ?>


rowniez nie dziala...


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
nospor
post 8.08.2005, 14:36:28
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




walnij se jakąś kontrolę ewentualnych bledów a bedziesz wiedzial co jest nie tak:

  1. <?php
  2.  
  3. //....
  4. else {
  5. echo "wchodze w pokazanie newsa <br/>";
  6. $query = "SELECT * FROM newsy WHERE id = " . $_GET['id'];
  7. echo 'tak wyglada zapytanie:'.$query.'<br/>';
  8. $result = mysql_query($query) or die(mysql_error());
  9. if (mysql_num_rows($result) > 0)
  10. {
  11.   $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  12.   echo 'wyswietlam tresc:'.$row['tresc'].'';
  13. }
  14. else
  15.    echo 'Nie znaleziono rekordu';
  16. }
  17. //.....
  18.  
  19. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 14:52:19
Post #7





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


po wklejeniu tego kodu widze:

wchodze w pokazanie newsa
tak wyglada zapytanie:SELECT * FROM newsy WHERE id =
Something is wrong in your syntax obok '' w linii 1

a jak wejde w linki news.php?id=1 zas pusta strona... co robie źle ? sad.gif juz kompletnie nei wiem jak sobie z tym poradzic...


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
nospor
post 8.08.2005, 15:00:38
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ehhh.
po pierwsze masz zle zageszczenie ifów, co powoduje że gdy masz id w url to nie wchodzisz tam gdzie trzeba, wogole nigdzie nie wchodzisz
To poprawiona wersja:
  1. <?php
  2.  
  3. if (!isset($_GET['id'])) 
  4. {
  5. $query = 'SELECT * FROM newsy ORDER BY id DESC LIMIT '.$limit.'';
  6. $result = mysql_query($query);
  7. if($result) 
  8. {
  9. while($row = mysql_fetch_assoc($result)) 
  10. {
  11. echo ('<b>'.$row['temat'].'</b>
  12. <br><br>
  13. '.$row['text'].'
  14. <br>
  15. <br>
  16. Dodał: <a href="mailto:'.$row['mail'].'">'.$row['nick'].'</a>.
  17. <a href="news.php?id='.$row['id'].'">Więcej...</a>
  18. ');
  19. }
  20. }
  21. }
  22. else 
  23. {
  24. echo "wchodze w pokazanie newsa <br/>";
  25. $query = "SELECT * FROM newsy WHERE id = " . $_GET['id'];
  26. echo 'tak wyglada zapytanie:'.$query.'<br/>';
  27. $result = mysql_query($query) or die(mysql_error());
  28. if (mysql_num_rows($result) > 0)
  29. {
  30. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  31. echo 'wyswietlam tresc:'.$row['tresc'].'';
  32. }
  33. else
  34. echo 'Nie znaleziono rekordu';
  35. }
  36.  
  37.  
  38. ?>
Widać roznice?Ty rób se sam wcięcia czasami to zobaczysz wiele bledów.

po drugie: sprawdz czy linki ci się dobrze generują, czy jest id ustawione, czyli czy $row['id'] zwraca to co trzeba. Jak tak to juz powinno byc git


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 15:11:31
Post #9





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


sorry... moja wina, tametejsze kody pewnie by dzialaly, gdybym ja nie mylil zmiennej sad.gif sad.gif zamiast row['tresc'] mialobyc row['text'] jeszcez raz przepraszam sad.gif.

Ten post edytował M45t3r 8.08.2005, 15:16:46


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
nospor
post 8.08.2005, 15:15:15
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




sluchaj nie bylo ok. nawet jesli to co mowisz jest prawdą to i tak kichę miales w strukturze warunku. To co ci poprawilem. U ciebie gdy bylo podane id w url to nigdzie nie wchodzilo. Teraz po poprawkach wchodzi.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 15:43:52
Post #11





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


A jak skracać tekst ? tzn jaka funkcja/zapytanie za to odpowiada.. bo chce jeszcze skrocic tekst do 500 znakow, a potem w linki news.php?id=x caly news...


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
nospor
post 8.08.2005, 15:45:52
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No z takimi pytaniami to najpierw do manuala powinienes sięgac.
left
  1. SELECT LEFT(pole, 10)
  2. FROM tabela;

http://dev.mysql.com/doc/mysql/en/string-functions.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
strife
post 8.08.2005, 15:46:21
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


substr" title="Zobacz w manualu php" target="_manual w sql chyba też jakoś tak nie pamiętam dokładnie...

chyba jakoś tak..
  1. SELECT title, SUBSTR(cos,1,1)
  2. FROM tabela


--------------------
Go to the top of the page
+Quote Post
M45t3r
post 8.08.2005, 15:54:45
Post #14





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


a macie taka instrukcje po pl ?


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
strife
post 8.08.2005, 16:03:54
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Ja jeszcze nie widziałem manual'a do mysql po polsku... pewnie nie ma dry.gif , ale czego nie rozumiesz przecież nospor Ci napisał przykładowe zapytanie musisz je trochę przerobić pod swoje dane, i masz..


--------------------
Go to the top of the page
+Quote Post
M45t3r
post 9.08.2005, 16:09:30
Post #16





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


em jeszcez jedno pytanie, na podstawie tamtego kodu zrobilem inny pliczek ktory tez ma pobierac dane z z bazy danych i wyglada on tak:


  1. <?php
  2.  
  3. include 'config.php';
  4. if (!isset($_GET['id']))
  5. {
  6. $query = "SELECT * FROM pages WHERE id = " . $_GET['id'];
  7. $result = mysql_query($query);
  8. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  9. {
  10. echo '
  11. '.$row['tresc'].'
  12.  ';
  13. }
  14. }
  15. ?>


Jak wpisze plik.php?id=4 pusta strona a w bazie w tabeli pages, id 4 mam tekst..
tym razem nie pomylilem zadnej zmiennej tongue.gif a kod nadal nie dziala, a jestem prawie pewein (99% tongue.gif) ze powinien...

Ten post edytował M45t3r 9.08.2005, 16:10:14


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
nospor
post 10.08.2005, 08:08:59
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




klejne tego typu posty chyba będę zamykał. ty czasem popatrz na kod który piszesz. nie wklejaj bezmyślnie z innych plików. PRzyjrzyj się warukowi:
if (!isset($_GET['id']))
ty robisz selecta dopiero wtedy gdy nie masz w url id. powinieneś robić wlasnie gdy jest id w url. warunek ma byc taki
if (isset($_GET['id']))

parę postów wcześniej podalem ci prostą kontrolę błedów, aby sprawdzać gdzie może być błąd. Do takiej kontroli nalezy zwykłe echo w warunku aby sprawdzić czy oby na pewno do warunku wchodzi. Czy to tak ciężko samemu taką kontrolę zrobić?
Ja rozumiem że jesteś początkujący, ale to nie zwalnia cię od tego, abyś czasem zastanowił się nad kodem czy też wziął do serca nasze uwagi i porady odnośnie pisania skryptów.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
M45t3r
post 28.08.2005, 14:31:38
Post #18





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


ok wszystio działa pieknie smile.gif ale teraz nabrało mnie na komentwanie wiec do news.php dodałem:

  1. <?php
  2. echo '<br>Dodaj komentarz:
  3. <br><br>
  4. <form action='skomentuj.php' method='post'>
  5. <input type='hidden' name='news_id' value=''.$row['id'].''>
  6. Nick: <input type='text' name='nick'><br><br>
  7. GG: <input type='text' name='gg'><br><br>
  8. Komentarz:<br><textarea name='komentarz'></textarea>
  9. <br>
  10. <input type='submit' value='Dodaj komentarz'>
  11. </form>
  12. ';
  13. ?>


skomentuj.php

  1. <?php
  2. include 'config.php';
  3. $query = 'INSERT INTO `komentarze` VALUES (NULL, "'.$news_id.'", "'.$nick.'", "'.$gg.'", "'.$komentarz.'")';
  4. $result = mysql_query($query);
  5. if($result)
  6.  {
  7. echo 'Skomentowałeś newsa :)<a href='index.php'>Powrót na stronę główną</a>';
  8.  }
  9. else
  10. {
  11.  echo 'cos sie zepsulo';
  12. }
  13. ?>


a tabela konentarze ywglada tak:

  1. CREATE TABLE `komentarze` (
  2. `id` int(11) NOT NULL DEFAULT '0',
  3. `news_id` varchar(255) DEFAULT NULL,
  4. `nick` varchar(255) DEFAULT NULL,
  5. `gg` varchar(255) DEFAULT NULL,
  6. `komentarz` text,
  7. PRIMARY KEY (`id`)
  8. ) TYPE=MyISAM;


problem polega na tym, ze wpis nie dodaje sie do bazy sad.gif czy moze mi ktos powiedziec, gdzie poolenilem blad ?

Ten post edytował M45t3r 28.08.2005, 14:42:31


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post
popo
post 28.08.2005, 14:54:51
Post #19





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 15.07.2005

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


erm zamiast
.$news_id.
daj
.$_GET['news_id'].

reszta analogicznie
i mysl co piszesz porownaj swoj poprzedni i aktualny skrypt (skrypt musi wiedziec z kad brac wartosci zmiennych)

edit
takie podmienienie powinno dzialac aczkolwiek nie jest to rozwiazanie bezpieczne (SQL injection i takie tam) smile.gif

Ten post edytował popo 28.08.2005, 14:57:06
Go to the top of the page
+Quote Post
M45t3r
post 28.08.2005, 14:59:05
Post #20





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 16.05.2005
Skąd: Lubaczów

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


ók nie wazne ;] zrobiłęm ;] ale dlaczego to zapytanie

  1. $query = 'SELECT left(text, 500) *
  2. FROM newsy ORDER BY id DESC LIMIT '.$limit.' ';



nie działa ?

Ten post edytował M45t3r 29.08.2005, 21:21:04


--------------------
Nie chce pieniedzy, diamentow, tulipanow i fasoli!
Go to the top of the page
+Quote Post

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 - 07:42