Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
Argos
Witam,
pisze skrypt który obrazuje mały sytem nowości na stronie (wiem ,że jest ich już mnóstwo w sieci ,ale chcę stworzyć własny przy okazji ucząć sie php).
Natrafilem na małą przeszkodę której nie mogę przejść.

Mam 2 tabele w bazie danych:
Kod
CREATE TABLE nowosci (
nowosc_id INT NOT NULL AUTO_INCREMENT ,
nowosc_naglowek TEXT DEFAULT 'Brak tematu' NOT NULL ,
nowosc_text TEXT NOT NULL ,
nowosc_autor VARCHAR( 20 ) NOT NULL ,
nowosc_data INT( 10 ) NOT NULL ,
PRIMARY KEY ( `nowosc_id` )
);

CREATE TABLE nowosci_komentarze (
komentarz_id INT NOT NULL AUTO_INCREMENT ,
komentarz_nowosci_id INT( 5 ) NOT NULL ,
komentarz_text TEXT NOT NULL ,
komentarz_autor VARCHAR( 20 )  NOT NULL ,
komentarz_data INT( 10 ) NOT NULL ,
PRIMARY KEY ( `komentarz_id` )
);


Mam problem z komentarzami do nowości.
Do wyświetlania newsów mam kod:
  1. <?php
  2. //wczesniejszy kod
  3.  $news = mysql_fetch_array($wynik);
  4. .
  5. .
  6. .
  7. print '<tr><td align=\"right\" colspan=\"2\">';
  8. print &#092;"<a href=komentarze.php?nowosc_id=\".$news['nowosc_id'].\">\";
  9. print '<font size=\"1\">Komentarze...</font>';
  10. print '</a>';
  11. print '</table>';
  12. ?>


Stosuje teraz
  1. <?php
  2. $id = $_GET['nowosc_id'];
  3. ?>
aby wyciagnac nr id nowosci i chcę wstawic go w pole "komentarz_nowosci_id" w tabeli: nowosci_komentarze. Dzięki temu będe mógł przypisać komentarze odpowiedniemu newsowi. W tym miejscu mam problem. Jak wstawić wartość "nowosc_id" w to pole?

Nie wiem czy wyraziłem się na tyle jasno abyście zrozumieli o co mi chodzi tongue.gif
nospor
No jak to jak? Inserta robisz
  1. <?php
  2.  
  3. $sql=&#092;"insert into nowosci_komentarze values (null,$id,'text','autor',\".strtotime(date()).\")\";
  4. //a tu wykonujesz ten sql
  5.  
  6. ?>

jesli to nie oto chodzilo, to wyraź się jasniej
id4
Witam

Jeśli uczysz sie dopiero php, to zwróć uwagę na małą sugestię z mojej strony. Staraj się pisać kod w ten sposób, by zbytecznie nie obciążać parsera php - a i pisanie i czytelność samego kodu są lepsze.

  1. <?php
  2. //wczesniejszy kod
  3.  $news = mysql_fetch_array($wynik);
  4. .
  5. .
  6. .
  7. ?>
  8. <tr><td align=\"right\" colspan=\"2\">
  9. <a href=\"komentarze.php?nowosc_id=<?echo $news['nowosc_id'];?>\">
  10. <font size=\"1\">Komentarze...</font>
  11. </a>
  12. </table>


Czyli maksymalnie (w miarę możliwości oczywiście) izoluj kod HTML od php.
Argos
Cytat(nospor @ 2005-06-24 06:47:25)
jesli to nie oto chodzilo, to wyraź się jasniej

Nie o to chodziło ,spróbuje się jaśniej wyrazić.
Mam plik naglowki.php ,w którym wyświtlane są tematy newsów i linki do obejrzenia komentarzy. Jak klikne na tym linku aby obejrzeć/dodać komentarz to mam wtedy w adresie http://jakis_adres/comments.php?nowosc_id=2. W pliku comments.php polecenie:
  1. <?php
  2. $id = $_GET['nowosc_id'];
  3. ?>

przypisuje zmiennej nowosc_id wartosc 2 lub 1 lub 3 itp. w zależności od id newsa.
Do tego momentu wszystko jest dobrze. Przysłowiowe schody zaczynają się gdy dodaje nowy komentarz. W pliku comments.php prócz wyświetlania komentarzy znajduje się skrypt tworzący formularz do dodawania nowych komentarzy. Wysyłając formularz wędruje on do pliku comment_wyslij.php gdzie znajduje się polecenie do bazy sql:
  1. $sql = "insert
  2. into nowosci_komentarze (komentarz_nowosci_id, komentarz_text, komentarz_autor, komentarz_data)
  3. values
  4. ('$id', '$komentarz_text', '$komentarz_autor', $czas)";

W bazie zapisuje wszystkie dane prawidłowo prócz komentarz_nowosci_id ,jemu zawsze przypisuje 0.

edit: dzięki id4 za dobrą radę.

Pozdrawiam
nospor
PRzy wysylaniu formualrza gubisz id. Musisz je wpisac do np. pola ukrytego w formualrzu:
  1. <?php
  2.  
  3. //...
  4. echo '<input type=\"hidden\" name=\"id\"  value=\"'.$id.'\" >';
  5. //..
  6.  
  7. ?>

i potem pobrać je z posta razem z innymi pola formularza
Argos
OK ,dzięki teraz działa smile.gif ,ale jeszcze jedno pytanie. Jeżeli na stronie naglowki.php tam gdzie wyswietlane mam newsy i linki do komentarzy chciałbym aby wyświetlała mi się liczba komentarzy do danego newsa. Jak to zrobić? Zapytanie będzie wyglądało tak:
  1. $zapytanie = "select *
  2. from nowosci_komentarze where komentarz_nowosc_id = '$id'";

potem
  1. <?php
  2. $wynik = mysql_query($zapytanie, $bd_lacz);
  3.  
  4. $ilosc = mysql_num_rows($wynik);
  5. ?>

ale na tej stronie (naglowki.php), hmm jakby to powiedziec? skrypt nie rozpoznaje tej zmiennej "$id" która jest mi potrzebna do tego zapytania. sad.gif
nospor
no tak, ale przecież zmienna $id to nic innego jak : $news['nowosc_id'], który używasz do zrobienia linku, więc w czym problem?
Argos
Hmmm....w sumie to masz racje tongue.gif Chyba za bardzo się skupiłem na tej zmiennej $id.
W zapytaniu wystarczy chyba połączyć dwie tabele i powinno grać. Dzięki. Dziś już nie mam czasu ale jutro to sprawdze smile.gif.

EDIT:
Niestety nie działa jak powinno. Jeżeli do pierwszego newsa mam cztery komentarze a do drugiego jeden to zlicza je wszystkie i pokazuje przy pierwszym jak i drugim newsie ,że jest 5 komentarzy.
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.