Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] skrcanie newsa z opcja wiecej
Forum PHP.pl > Forum > Przedszkole
FliSs_tCv
Witam mam problem dotyczacy wyswietlania nowosci na stronie mam wykonany kod który wyswietla mi 150 znakow z danego newsa ( id )
po kliknieciu w a href --> wiecej <---, chciałbym aby wyskoczylo okienko popup z cała wiadomoscia tego oto newsa i to jest tak naprawde moj problem sad.gif oto kod który wyswietla nowosci.
  1. <?php
  2. $sql_serwer="------";
  3. $sql_login="------";
  4. $sql_haslo="-----";
  5. $sql_baza="-----";
  6. $sql_tabela="nowosci";
  7.  
  8. mysql_connect($sql_serwer, $sql_login, $sql_haslo);
  9. mysql_select_db($sql_baza);
  10. mysql_query('SET CHARSET latin2');
  11. $wynik = mysql_query("SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul FROM $sql_tabela LIMIT 2");
  12. while($wynik and $dane = mysql_fetch_assoc($wynik)) {
  13.  echo "<div style=\"float : left; margin-top : 4px;\">";
  14.  echo "<strong>$dane[tytul]</strong><br />";
  15.  echo "$dane[tresc]";
  16.  echo "<div style=\"float : right; margin-top : 7px;\">
  17.  <a href=\"\" onclick=\"okienko()\" \">więcej</a>
  18. </div>";
  19.  echo "</div>";
  20. }
  21. ?>
  22. <div style="float : left; margin-top : -11px;">
  23.  <a href="index.php?id=archiwum">archiwum</a>
  24. </div>


w js mam taki kod

  1. <script language="javascript" type="text/javascript">
  2. <!--
  3. function okienko() {
  4. open("news-more.php","okno","width=300,height=300");
  5. }
  6. // -->


a w pliki news-more.php mam taki kod

  1. <?php
  2.  // łaczenie sie z baza
  3.  
  4. mysql_query('SET CHARSET latin2');
  5. $wynik = mysql_query("SELECT * FROM $sql_tabela WHERE id=$_GET[id] ");
  6. while($wynik and $dane = mysql_fetch_assoc($wynik)) {
  7.  echo "<div style=\"float : left; margin-top : 4px;\">";
  8.  echo "<strong>$dane[tytul]</strong><br />";
  9.  echo "$dane[tresc]";
  10.  echo "</div>";
  11. }
  12. ?>


no i wiem ze jest zły sad.gif bede bardzo wdzieczny za pomoc w rozgryzienu mojego problemu
barat
open("news-more.php","okno","width=300,height=300");

Tutaj chyba do nowego pliku news-more.php zapominasz dodać parametru ID który jest potrzebny do wyciagnięcia z bazy informacji czyli ...

open("news-more.php?id=IDNEWSA","okno","width=300,height=300");

Nie znam się na JS , ale jesli działa jak PHP, to funkcje musisz przebudowac tak:

  1. <script language="javascript" type="text/javascript">
  2. <!--
  3. function okienko($id) {
  4. open("news-more.php?id=$id","okno","width=300,height=300");
  5. }
  6. // -->


zamień $id na poprawną formę dla JS smile.gif

wtedy w

  1. <?php
  2. echo "<div style=\"float : right; margin-top : 7px;\">
  3.  <a href=\"\" onclick=\"okienko()\" \">więcej</a>
  4. </div>";
  5. ?>


zamieniasz na

  1. <?php
  2. echo "<div style=\"float : right; margin-top : 7px;\">
  3.  <a href=\"\" onclick=\"okienko($dane[id])\" \">więcej</a>
  4. </div>";
  5. ?>


Czyli piszesz funkcje otwierania okienka w JS która pobiera parametr ID , parametr id jest wstawiany podczas echo przy wyświetlaniu tabeli newsów , następnie taki link (generowany w funkcji js) zawiera już ?id=id i ten co wyświetla całego linka ma już co wstawić do WHERE smile.gif

Oczywiście:

<?php
// łaczenie sie z baza

dla pliku generującego całego newsa oznacza, że tutaj normalnie jest znowu kod do łaczenia się z bazą ? ...
FliSs_tCv
nie wiem własnie co ma byc w pliku news-more.php nie wiem jak to wykonac za diabła sad.gif i nie wiem jak to w js zrobic aby dzialalo sad.gif a jak zrobic to bez tego okienka w js ? aby wyswietlalo sie zauszmy w innej stronie ale tylko ten jeden news ? np jak na tej stronie http://www.zkm.tczew.pl/?akcja=aktualnosci&id=95
barat
sprawdź, czy plik news-more.php po ręcznym wpisaniu jakiegoś ID wyświetla Ci to co chcesz, jeśli tak, to znaczy, że działa ...

nie wiem też, czy nie powinno być

$wynik = mysql_query("SELECT * FROM $sql_tabela WHERE id='$_GET[id]' ");

Wtedy w przeglądarce otwórz coś takiego

news-more.php?id=1

i zobacz, czy Ci pokaże newsa o ID 1, jeśli tak, to już powinieneś wiedzieć co robić tongue.gif
FliSs_tCv
nie wykonuje tego skryptu pokazuje mi blad 404 nie ma takiej strony a w adresie dopisuje poprostu news-more.php?id=id wiec lipa sad.gif
-FliSs_tCv-
mialem pomylke w nazwie ale i tak nie pokazuje nic jedyne co pokazuje to białe tło :/
barat
jak nie ma ? masz na serwerze plik o nazwie news-more.php w którym jest kod który podałeś ?

Jesli tak to link

news-more.php?id=1

powinien pokazać newsa o ID 1 ...

ale pisz pełen adres na przykład http://localhost/news-more.php?id=1

Nie ma siły ... musi działać ...

Ja Ci radze, weź sobie jakąś dobrą książkę i przeczytaj ... "Php5 apache mysql - Od podstaw" jest całkiem fajna smile.gif
FliSs_tCv
kurde no niedziala naprawde moze zostawie to okinko popup w js a zastanowie sie jakos nad tym newsem wyswietlanym na osobnej stronie tylko dany chodz tak naprawde to bedzie to samo tylko ze bez js i popup no i nie wiem jak to wykonac sad.gif pomoze ktos mi w tym prosze bardzo wazne a nie mam czasu na czytanie ksiazki sad.gif potrzebne mi to do wykonania projektu.
barat
Człowieku ...

Stwórz plik testowy, nazwij go

niechcemisieczytakksiazki.php albo jakkolwiek inaczej ... dajmy na to plik.php

w nim wstaw

  1. <?php
  2.  // łaczenie sie z baza
  3.  
  4. $sql_serwer="------";
  5. $sql_login="------";
  6. $sql_haslo="-----";
  7. $sql_baza="-----";
  8.  
  9. mysql_connect($sql_serwer, $sql_login, $sql_haslo);
  10. mysql_select_db($sql_baza);
  11.  
  12. //zapytanie
  13.  
  14. mysql_query('SET CHARSET latin2');
  15. $wynik = mysql_query("SELECT * FROM nowosci WHERE id='1' ");
  16. $row = mysql_fetch_assoc($wynik);
  17.  echo "<div style=\"float : left; margin-top : 4px;\">";
  18.  echo "<strong>$row[tytul]</strong><br />";
  19.  echo "$row[tresc]";
  20.  echo "</div>";
  21. }
  22. ?>


po czym odpal zwyczajnie ten plik php i zobacz czy pokaże newsa o ID 1 ...
FliSs_tCv
ok wyswietla mi tego newsa smile.gif ale i tak nie wiem co dalej sad.gif
barat
Zabijesz mnie dzisiaj ...

zamień

$wynik = mysql_query("SELECT * FROM nowosci WHERE id='1' ");

na

$wynik = mysql_query("SELECT * FROM nowosci WHERE id='$_GET['id']' ");

poczym użyj tego samego adresu ale na końcu napisz ?id=1

czyli dla przykładu

http://localhost/plik.php?id=1

Jeśli takie cos też wyświetla, to po prostu dodaj do tego pliku całą skórkę (tak jak przy stronie pokazującej wszystkie newsy)

a następnie przy wyświetlaniu wszystkich newsów zamiast

Kod
echo "<div style=\"float : right; margin-top : 7px;\">
                       <a href=\"\" onclick=\"okienko()\" \">więcej</a>
                    </div>";


wstaw

Kod
echo "<div style=\"float : right; margin-top : 7px;\">
                       <a href=\"[b]nazwategopliku.php?id=$dane[id][/b]\">więcej</a>
                    </div>";


Wtedy klikniecie na ten link przeniesie Cie na strone wyświetlającą newsy smile.gif
FliSs_tCv
taki błąd otrzymuje teraz


Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in [sciezka tongue.gif]
barat
w pliku do wyświetlania newsa w całości ? zrób

$id = $_GET['id'];

$wynik = mysql_query("SELECT * FROM nowosci WHERE id='$id' ");


A jeśli w tym głównym ze wszystkimi linkami... to chyba nie przekleiłeś całego kode ? zrobiłem tam błąd (teraz poprawiłem)
FliSs_tCv
nie nie smile.gif ale pytanie mam jescze jedno jak zrobic to w ten sposob bo mam ten plik podpiety pod ten system wczytywania danych po srodku czyli index.php?id=wiecej . wiecej.php jest plikiem wczytywanym i jak mam teraz to zrobic aby wyswietlalo ten plik i zarazem tego newsa snitch.gif mam teraz cos takiego ale niedziala pokazuje puste tło sad.gif ?


<a href=\"index.php?id=wiecej&art=$dane[id]\">więcej</a>
barat
Jeśli chcesz użyć takiego linka to wtedy w pliku wiecej.php musisz zmienić $_GET['id'] na $_GET['art'] bo mam rozumieć, że w &art-$dane[id] przekazujesz ID artykuły do wyświetlenia ... smile.gif

Powinieneś się tego sam domyślić ...
FliSs_tCv
ak najezdzam na ten link nie pokazuje wg id danego rekordu na dole na pasku ;/ czyli nie czyta tego sad.gif co mam zle to jest kod ;>


<?php
$sql_serwer="localhost";
$sql_login="";
$sql_haslo="";
$sql_baza="";
$sql_tabela="nowosci";

mysql_connect($sql_serwer, $sql_login, $sql_haslo);
mysql_select_db($sql_baza);
mysql_query('SET CHARSET latin2');
$wynik = mysql_query("SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul FROM $sql_tabela LIMIT 2");
while($wynik and $dane = mysql_fetch_assoc($wynik)) {
echo "<div style=\"float : left; margin-top : 4px;\">";
echo "<strong>$dane[tytul]</strong><br />";
echo "$dane[tresc]";
echo "<div style=\"float : right; margin-top : 7px;\">
<a href=\"index.php?id=wiecej&art=$dane[id]\">więcej</a>
</div>";
echo "</div>";
}
?>
<div style="float : left; margin-top : -13px;">
<a href="index.php?id=archiwum">archiwum</a>
</div>


cos zle wywołuje sad.gif
barat
Link

index.php?id=wiecej&art=$dane[id]

Oznacza, że...

index.php?id=wiecej

odpala Ci plik wiecej.php (wstawia go w Twoją stronę?) ... jeśli tak to dalej

&art=$dane[id]

$dane[id] zawiera informacje o id artykuły który chcesz wyświetlić?

Jeśli tak to obecnie w pliku wiecej.php masz :

  1. <?php
  2.  // łaczenie sie z baza
  3.  
  4. $sql_serwer="------";
  5. $sql_login="------";
  6. $sql_haslo="-----";
  7. $sql_baza="-----";
  8.  
  9. mysql_connect($sql_serwer, $sql_login, $sql_haslo);
  10. mysql_select_db($sql_baza);
  11.  
  12. //zapytanie
  13. $id = $_GET['id'];
  14. mysql_query('SET CHARSET latin2');
  15. $wynik = mysql_query("SELECT * FROM nowosci WHERE id='$id' ");
  16. $row = mysql_fetch_assoc($wynik);
  17.  echo "<div style=\"float : left; margin-top : 4px;\">";
  18.  echo "<strong>$row[tytul]</strong><br />";
  19.  echo "$row[tresc]";
  20.  echo "</div>";
  21. }
  22. ?>


a powinieneś zmienić na

  1. <?php
  2.  // łaczenie sie z baza
  3.  
  4. $sql_serwer="------";
  5. $sql_login="------";
  6. $sql_haslo="-----";
  7. $sql_baza="-----";
  8.  
  9. mysql_connect($sql_serwer, $sql_login, $sql_haslo);
  10. mysql_select_db($sql_baza);
  11.  
  12. //zapytanie
  13. $id = $_GET['art'];
  14.  
  15. mysql_query('SET CHARSET latin2');
  16. $wynik = mysql_query("SELECT * FROM nowosci WHERE id='$id' ");
  17. $row = mysql_fetch_assoc($wynik);
  18.  echo "<div style=\"float : left; margin-top : 4px;\">";
  19.  echo "<strong>$row[tytul]</strong><br />";
  20.  echo "$row[tresc]";
  21.  echo "</div>";
  22. }
  23. ?>



Nie ma siły... to musi działać...

Wytłumacz mi, po co bierzesz się za PHP jak nie masz podstaw?
Ja zanim zacząłem cos pisać to przeczytałem ze 2 książki z przerabianiem przykładów ... nadal raczkuję , ale coś powoli kumam...
FliSs_tCv
po co biore sie za php skoro nie mam podstaw na to pytanie odpowiem Tobie tak smile.gif nie lubie suchej klepanki z ksiazki smile.gif ja wspomagam sie ksiązką jak musze a tak wole z praktyki dowiatywac sie co i jak czyli np forum smile.gif i jest mi z tym dobrze nie oczekuje gotowców lecz wytłumaczenia poprostu ksiazka za mna nie przemawia tongue.gif w zyciu nalezy sobie ułatwiac a nie utrudniac biggrin.gif a co do mojego problemu w tym topicu jak klikam na wiecej to pokazuje mi pusta strone nadal nie przekazuje tego id ale jak sam dopisze nr id do koncówki &art=1 pokaze ten artykul nie wiem dlaczego nie przekazuje tego id jeszcze pobajeruje smile.gif pozdrawiam serdecznie i naprawde dzieki za pomoc biggrin.gif
barat
czyli problem jest z tym:

index.php?id=wiecej&art=$dane[id]

spróbuj ...

echo "<div style=\"float : right; margin-top : 7px;\">
<a href=\"index.php?id=wiecej&art=".$dane[id]."\">więcej</a>
</div>";

W ogóle link wygenerowany przez PHP musisz zobaczyć jak wygląda, czyli jak klikasz więcej to co widzisz ?

ndex.php?id=wiecej&art=

czyli nic po znaku = ?


A książki to na prawdę świetna rzecz ... tylko trzeba dobrą kupić ... takie cykanie z tutoriali i z tego co się dowiesz na forum nie jest dobrym pomysłem ...
Tak to się możesz nauczyć xHTML i CSS ... ale nie programowania ... chyba, że jesteś genialny ...

Gdybyś przeczytał chociaż jedną, to ten problem rozwiązałbyś sam ... więcej - wcale by ten problem nie zaistniał, a mi byłoby łatwiej tłumaczyć ... tongue.gif
FliSs_tCv
No dobra przyznaje racje ze łatwiej by bylo to wytłumaczyc na 100% heh lecz wiedza z ksiązek nie zawsze mi wchodzi smile.gif pozatym przyznam sie ze jestem grafikiem a nie koderem a kodem zajmuje sie tylko dlatego ze nie mam z kim narazie wspolpracowac no i musze cos umiec wiec sie ucze z tego co mi potrzebne moze jak bede mial czas przeczytam jakas ksiazke ale nie wiam jaka sad.gif polecasz jakas ? a co do przykladu to tez nic nie dało to ".$dane[id]." nie wiem dlaczego tak jest kurde :/
barat
czyli problem jest z tym:

index.php?id=wiecej&art=$dane[id]

spróbuj ...

echo "<div style=\"float : right; margin-top : 7px;\">
<a href=\"index.php?id=wiecej&art=".$dane[id]."\">więcej</a>
</div>";

W ogóle link wygenerowany przez PHP musisz zobaczyć jak wygląda, czyli jak klikasz więcej to co widzisz ?

ndex.php?id=wiecej&art=

czyli nic po znaku = ?


Co do książek

"Php5 apache mysql - Od podstaw"

Czytałem jeszcze PHP i MySQL vademecum profesjonalisty ... ale jakoś nie jestem fanem tej ksiażki ...

Poza tym, to ja raczej wolę literaturę po angielsku ... tak jak oryginalnie książki były napisane smile.gif
FliSs_tCv
po tym znaku nic sie nie pokazuje jak najade na link wiecej pokazuje mi tylko to index.php?id=wiecej&art=
PanGuzol
  1. SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul FROM $sql_tabela LIMIT 2


dodaj jeszcze żeby pobierał również id

  1. SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul, id FROM $sql_tabela LIMIT 2


w pierwszym pliku
barat
Czyli musisz zrobić by się pokazywało smile.gif

Wodocznie nie ma czegoś takiego jak $dane[id]
Sprawdź w Twojej tabeli MySQL jaką ma nazwę kolumna przechowująca ID smile.gif
Pozostałe rzeczy czyli $dane[tytul] i $dane[tresc] są wyświetlane poprawnie ?


EDIT:

PanGuzol... no patrz, że tego nie zauważyłem smile.gif teraz będzie działało smile.gif To moje już nie ważne ... nie przypuszczałem, ze nie pobierasz id z bazy więc nawet nie spojrzałem tam biggrin.gif
FliSs_tCv
tak wyswietlane sa poprawnie biggrin.gif a ten id tez powienien smile.gif no nic sprawdze mysql smile.gif


ma nazwe id powinno sie wyswietlac ale czemu tego nie robi ;/ ehhh
barat
Cytat(FliSs_tCv @ 15.08.2007, 00:08:08 ) *
tak wyswietlane sa poprawnie biggrin.gif a ten id tez powienien smile.gif no nic sprawdze mysql smile.gif


Nie sprawdzaj... PanGuzol dał Ci rozwiązanie - przyczynę smile.gif Popraw tylko zapytanie SQL według tego co napisał ...
FliSs_tCv
przepraszam myliłem sie dziala bez zarzutów biggrin.gif dziekuje za pomoc biggrin.gif:D
barat
Cieszę się bardzo smile.gif
A Tobie na prawdę polecam książkę ... jak nie chcesz kupować do zobacz czy czegoś fajnego nie ma w bibliotece jakiejś smile.gif
FliSs_tCv
jednak mam jescze jedno pytanie tongue.gif a jak zrobic aby wyswietlalo dane te ostatnio dodane na stronie a nie po kolei 1,2,3 itp. itd. ;> questionmark.gif
barat
zapewne

  1. SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul, id FROM $sql_tabela LIMIT 2


zamienić na

  1. SELECT SUBSTRING(tresc, 1, 110) AS tresc, tytul, id FROM $sql_tabela ORDER BY id DESC LIMIT 2


Takie zapytanie najpierw posortuje według ID gdzie najnowsze będzie u góry smile.gif
PanGuzol
Dodaj w tabeli pole data i przy dodawaniu rekordu dajesz tam aktualny czas


a do zapytania dodajesz
  1. ORDER BY date
FliSs_tCv
Nie no teraz naprawde dziekuje bardzo smile.gif wszystko działa gites biggrin.gif:D
barat
Cytat(PanGuzol @ 15.08.2007, 00:25:55 ) *
Dodaj w tabeli pole data i przy dodawaniu rekordu dajesz tam aktualny czas
a do zapytania dodajesz
  1. ORDER BY date


Jeśli nie dodawał wcześniej dat, a ma już jakieś artykuły to może być kłopotliwe ...
Jeśli pole ID jest Auto increment i primary key, to z powodzeniem można sortować według ID smile.gif

Nie zmienia to faktu, ze osobiście też dodaje zawsze pole data i sortuje według daty ... smile.gif
PanGuzol
Cytat(barat @ 15.08.2007, 00:31:31 ) *
Jeśli nie dodawał wcześniej dat, a ma już jakieś artykuły to może być kłopotliwe ...
Jeśli pole ID jest Auto increment i primary key, to z powodzeniem można sortować według ID smile.gif

Nie zmienia to faktu, ze osobiście też dodaje zawsze pole data i sortuje według daty ... smile.gif


Racja ale skoro to są newy to i tak warto dodać pole date żeby było wiadomo jak stary jest ten news ;]
FliSs_tCv
ja akurat nie uwzględniam daty w tych newsach smile.gif poprostu nie ma miejsca tongue.gif dlatego heh a jakbym mial date to jak sie sortuje za pomcą daty snitch.gif
barat
Ale chyba nie chcesz go narażać na konieczność edytowania formularza do dodawania newsów o dodatkowe pole + zapytanie do SQL z nową tabelą data i NOW() ? smile.gif
Jak nie zakładał daty to niech już tak ma smile.gif

Cytat
a jakbym mial date to jak sie sortuje za pomcą dat


Tak samo, tylko ORDER BY data

ORDER BY sortuje Ci według wybranej kolumny alfabetycznie , jak dopiszesz DESC to alfabetycznie w odwrotnej kolejności - ot cała filozofia smile.gif
FliSs_tCv
aha rozumiem smile.gif. Zawsze nowa informacja w mojej głowie smile.gif
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.