Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql]
Forum PHP.pl > Forum > Przedszkole
M45t3r
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. ?>
zbig13
  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. ?>
M45t3r
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. ?>
Ociu
Spróbuj dać zamiast isset, empty" title="Zobacz w manualu php" target="_manual.
M45t3r
  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...
nospor
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. ?>
M45t3r
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...
nospor
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
M45t3r
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.
nospor
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.
M45t3r
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...
nospor
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
strife
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
M45t3r
a macie taka instrukcje po pl ?
strife
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..
M45t3r
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...
nospor
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.
M45t3r
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 ?
popo
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
M45t3r
ó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 ?
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.