Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarze zabawa z bazami danych :)
Forum PHP.pl > Forum > PHP
boya
Mam www na ktorej robie newsy z komentarzmi i mam maly problem z tabelkami smile.gif

:arrow: zalozmy:

baza danych: strona tabela: news pola ( $id $kto $text $kiedy)

teraz chcce stworzyc tabele o nazwie takiej jak id konkretnego newa np. 1

i jak napisac skrypt zeby tworzyl konkretna table o okreslonym id questionmark.gif w bazie strona questionmark.gif?

:arrow: cala struktura zeby wygladala tak :


baza: strona
tabela 1 stala: news ($ID $KTO $TEXT $KIEDY)
tabela 3 tworzona razem z newsem: 1 - id news-a ( $ID $MAIL $GG $TEXT $CZAS)

a moze macie inny sposob tworzenia komentarzy do newsow questionmark.gif?
DeyV
proszę na mnie nie krzyczeć!!!!!!
DeyV
Mam nadzieję, że zaraz edytujesz swojego posta.
Już teraz jednak powiem Ci, że jest to bardzo zły pomysł.
Przemyśł odrobinkę konstrukcję zwojej bazy, i zaraz okaże się, że w zupełności wystarczą 2 tabele. Jedna na newsy, druga na komantarze.
Przy czym każdy komantarz ma zaznaczone, do którego newsa przynależy.
Wtedy też pobieranie komentarzy jest bardzo proste.
np. tak:
Cytat
Select * from komentarze WHERE id_news = $numer_newsa
boya
ja naprawde nie krzycze tongue.gif tylko lubie pisac duzymi smile.gif dzieki za odpowiedz juz kombinuje ....
wassago
no ja bym sie DeyV pogniewal! teraz zmiennymi na ciebie krzyczy tongue.gif :wink:
konrad_vme
Cytat
Cytat
Select * from komentarze WHERE id_news = $numer_newsa


DeyV już nie wytrzymał i "where" mu się "wykrzyknęło" smile.gif
migacz
wg mnie wystrczy jedna tabela dajesz pole w ktorym zaznaczasz czy to jest news czy komentarz oraz drugie pole w które dajesz id newsa lub 0 gdy to komentarz
[Regis]
Migacz --> Zwykle piszac newsa nie piszesz komentarza, a komentujac newsa sam news nie musi byc wyswietlany smile.gif Dlatego ja proponuje dwie tabele jednak smile.gif Podobnie jak jest t ow phpBB w ankietach zrobione - jest id newsa i news itp. itd., a potem kolejna tabela w ktorej id nie sa juz auto_increment, a zalaza od tego do jakiego newsa jest to komentarz.
boya
hmm probowalem i jakos nie idzie tabelki szaleja smile.gif)

na stronie glownej w bazie mam news te texty daty i osobe i doego dodane komentarz i komentuj w jednych ramach <? ?> teraz jak mam skleic 2 polonczenia bazy w jednym questionmark.gif zeby laczyl sie z tabla news i tabela komentarze

pozniej jak zrobi link od komentuj w javie zeby otwieral okienko z adresem komentuj.php?numer=$id_news bo tak nie wychodzi questionmark.gif

dajcie troche kodu.... biggrin.gif
[Regis]
Hmmm... Twoja wypowiedz jest nie co chaotyczna, ale zrob tak (przyklad):

Tabela "news":

id | autor | tytul | tresc
-------------------------------------------
1 | Jasiu | Witam | Witam wszystkich!

i baza "komentarze":

id | autor | tresc
-------------------------
1 | AAA | Super news
1 | Mr X | Kiepski news

I teraz na stronie glownej robisz:

SELECT * FROM news ORDER BY desc;

Po odpowiedniej obrobce wyswietli Ci to newsy od najnowszego do najstarszego (mozesz dodac takie duperele jak np. umieszczanie tylko ostatnich 10 newsow na str. glownej)

Pod spodem dajesz link komentuj.php?id=1

Jak ktos kliknie, to sie otworzy okienko z opcjami dodania komentarza do newsa 1. Nastepnie robisz przycisk submit (dodanie komentarza) i tamlink add_comment.php?$id=1. Do tego skryptu przesylane sa dane formularza: $tresc i $autor

i na stronie add_comment.php robisz

INSERT INTO komentarze (id, autor, tresc) VALUES ("$id", "$autor", "$tresc")

Chyba wszystko wyjasnilem.

Aha! Nie wiem tylko co masz na mysli piszac:

Cytat
teraz jak mam skleic 2 polonczenia bazy w jednym questionmark.gif zeby laczyl sie z tabla news i tabela komentarze


Nie potrzebujesz 2 baz, a jedynie 2 tabele w jednej bazie ! I najpierw pobierasz dane z jednej, potem z drugiej...
boya
dobra juz teraz wiem smile.gif a jeszcze jak chce zrobic ilosc klomentardzy to jak wyswietlic najwyszy id questionmark.gif

a z tym cytatem to chodzilo oto zeby w 1 polaczeniu polaczyc sie z dwoma tabelami pobierajac wynik i z 1 i z 2
boya
Cytat
dobra juz teraz wiem smile.gif a jeszcze jak chce zrobic ilosc klomentardzy to jak wyswietlic najwyszy id questionmark.gif

a z tym cytatem to chodzilo oto zeby w 1 polaczeniu polaczyc sie z dwoma tabelami pobierajac wynik i z 1 i z 2



a to twoje jak napisales "Pod spodem dajesz link komentuj.php?id=1" to jakl zrobic zeby automatycznie tworzyl taki link do konkretnego newsa zamiast 1 rownie dobrze moze byc 10 bo do 10 newsa bedzie to sie odnosic....
mazy
Cytat
proszę na mnie nie krzyczeć!!!!!!


Cytat
hehe mała sugestia (auto?) a raczej zapytanie czy wiesz ze gadanie dużymi literami bywa uznawane za krzyk?


Cytat
MAZY DUŻA SUGESTIA NABIJANIE POSTÓW NIE JEST MILE WIDZIANE

przemysl to ...
nie odpowiadaj moj post ....
poprostu przemysl ...


heheh
kwiateek
Cytat
dobra juz teraz wiem smile.gif a jeszcze jak chce zrobic ilosc klomentardzy to jak wyswietlic najwyszy id questionmark.gif

zliczanie w zapytaniu:
Kod
count(id) as ilosc

najwzyszy - chodzi chyba o sorotwanie ? - w zapytaniu
Kod
ORDER BY id DESC

Cytat
a z tym cytatem to chodzilo oto zeby w 1 polaczeniu polaczyc sie z dwoma tabelami pobierajac wynik i z 1 i z 2

prefixy, np.
Kod
SELECT tabela_newsy.kolumna1, tabela_komentarze.kolumna2 FROM tabela_newsy, tabela_komentarze itd.

Cytat
a to twoje jak napisales "Pod spodem dajesz link komentuj.php?id=1" to jakl zrobic zeby automatycznie tworzyl taki link do konkretnego newsa zamiast 1 rownie dobrze moze byc 10 bo do 10 newsa bedzie to sie odnosic....

mysql_fetch_array();
BzikOS
Cytat
dobra juz teraz wiem smile.gif a jeszcze jak chce zrobic ilosc klomentardzy to jak wyswietlic najwyszy id questionmark.gif

Na początek zmodyfikował bym nieco tabele newsów i komentarzy na:

tabela newsów:
ID | Autor | Tytul | Tresc | Data

a tabele komentarzy na:
ID | News_ID | Autor | Tresc | Data


Wyciągnięcie ID ostatniego komentarza do newsa:
[php:1:9343c4fb64]<?php
$sql = "SELECT id FROM komentarze WHERE news_id=$news_id ORDER BY data DESC LIMIT 1";
?>[/php:1:9343c4fb64]

Zliczenie liczby komentarzy:
[php:1:9343c4fb64]<?php
$sql = "SELECT count(*) FROM komenatrze WHERE news_id=$news_id";
?>[/php:1:9343c4fb64]
boya
napisales mi odnoscnie komentarzy ze Zliczenie liczby komentarzy:
Kod php:
Kod
1

2

3

<?php

$sql = "SELECT count(*) FROM komenatrze WHERE news_id=$news_id";

?>  



pytanie jak mam to wyswietlic echo $news_id questionmark.gif?

i czy moge w jednym polaczeniu wykonac kilka zapytane questionmark.gif

tego typu
Kod
<?php

@mysql_connect ("localhost","xxx","xxxxx");

@mysql_select_db (www);

$zapytanie1 = "SELECT * FROM news ORDER BY id DESC LIMIT 15";

$zapytanie2 = "SELECT id FROM komentarze WHERE news_id=$news_id ORDER BY data DESC LIMIT 1";  

$zapytanie3 = "SELECT count(*) FROM komenatrze WHERE news_id=$news_id";

$wykonaj = mysql_query ($zapytanie);

while($wiersz=@mysql_fetch_array ($wykonaj)) {

echo "  

COSTAM COSTAM

";}



$wykonaj = mysql_query ($zapytanie2);

while($wiersz=@mysql_fetch_array ($wykonaj)) {

echo "  

COSTAM COSTAM

";}





$wykonaj = mysql_query ($zapytanie3);

while($wiersz=@mysql_fetch_array ($wykonaj)) {

echo "  

COSTAM COSTAM

";}







?>

mozna takie cos zrobic questionmark.gif rolleyes.gif

jak mozna w jednych ramach php zrealizowac kilka zapytan po kolei questionmark.gif?
BzikOS
Cytat
pytanie jak mam to wyswietlic echo $news_id questionmark.gif?

[php:1:5c53ec90d1]<?php
list($komentarzy) = @mysql_fetch_row($result); // $result jest wynikiem zapytania do bazy
echo($komentarzy);
?>[/php:1:5c53ec90d1]

Cytat
i czy moge w jednym polaczeniu wykonac kilka zapytane questionmark.gif

Możesz smile.gif
g0blin
Ja mam jeszcze od siebei pytanie czy nie dobrze bylo by w tabeli z komentarzami dac pole np komentarz_id i zrobic z tego index dla tabeli ? Czy przy duzej ilosci komentarzy nie polepszylo by to dzialania ?
[Regis]
Musi takie pole byc, ale nie takie ze kazdy komentarz ma osobne id, tylko komentarz ma id newsa do ktorego jest komentarzem - kolejna kolumna z unikalnym id nie ma chyba zadnego zastosowania smile.gif
BzikOS
Cytat
Ja mam jeszcze od siebei pytanie czy nie dobrze bylo by w tabeli z komentarzami dac pole np komentarz_id i zrobic z tego index dla tabeli ? Czy przy duzej ilosci komentarzy nie polepszylo by to dzialania ?

Przecież jest:
Cytat
a tabele komentarzy na:
ID | News_ID | Autor | Tresc | Data
tomek55
tylko teraz jak pobrać nr newsa bo nie chce sie dodawać?questionmark.gif

zrobiłem taki formularz (ale może to nie od formularza zależy, może coś wcześniej skopałem?questionmark.gif)

formularz:

[php:1:a35e27ccac]<?php
echo'<br><br><br>Dodaj newsa:<br><form action="komentarzee.php?news_id&id='.$news_id.'" method="post">
<input type="hidden" name="cmd" value="dodaj">
<input type="hidden" name="news_id" value="'.$news_id.'">
<table>
<tr><td>tresc newsa:</td><td><input type="text" name="text" value='.$text.'></td></tr>
<tr><td>autor</td><td><input type="text" name="autor" value='.$autor.'></td></tr></table>

<input type="submit" VALUE="dodaj"></form>';
?>[/php:1:a35e27ccac]
BzikOS
Cytat
[...]
<form action="komentarzee.php?news_id&id='.$news_id.'" method="post">
[...]


Nie podobają mi się te dwie rzeczy. Poza tym po co przekazujesz $news_id GET'em skoro później leci jeszcze POST'em?

Do moderatorów: wywaliłem BBCODE bo nie da się w nim pogrubiać tongue.gif
zulus
Cytat
"]Musi takie pole byc, ale nie takie ze kazdy komentarz ma osobne id, tylko komentarz ma id newsa do ktorego jest komentarzem - kolejna kolumna z unikalnym id nie ma chyba zadnego zastosowania smile.gif

mylisz się

Gdybyś chciał zrobić sobie skrypt do ewentualnego poprawiania i usuwania komentarzy, kolumna z unikalnymi id jest bardzo przydatna, łatwo się dzięki niej odwoływać do poszczególnych wpisów.
boya
juz zrobilem aaevil.gif
tomek55
z postem też nie działa rolleyes.gif , a plik nazywa sie komentarzee smile.gif
BzikOS
Cytat
z postem też nie działa  :roll: , a plik nazywa sie komentarzee smile.gif

To pokaż kawałek php odpowiedzialny za obsługę przesyłanych zmiennych.
tomek55
[php:1:856bb06b9d]<?php
$zapytanie=("SELECT *
FROM komentarze
WHERE news_id = '$id' AND autor LIKE '%$searchtext%' ORDER by id DESC
LIMIT $p,$ile");

$wynik=mysql_query($zapytanie);




if ($cmd == 'dodaj') {
if ($text && $autor) {
mysql_query("INSERT INTO komentarze VALUES('', '$news_id', now(),'$text','$autor')");
} else{ echo"uzupelnij wszystkie pola"; }
}
if ($cmd == 'pokaz_dodaj') {

}


//przypisanie rekordom zmiennych

while ($rekord = mysql_fetch_array ($wynik)) {
$id = $rekord[0];
$news_id=$rekord[1];
$date = $rekord[2];
$text = $rekord[3];
$autor = $rekord[4];

$text = nl2br(htmlentities ($text)); // "entery"
?>[/php:1:856bb06b9d]

dalej jest już tylko wyświetlanie, porcjonowanie i na końcu ten formularz...
batlord
Cytat
Cytat
dobra juz teraz wiem smile.gif a jeszcze jak chce zrobic ilosc klomentardzy to jak wyswietlic najwyszy id questionmark.gif

Na początek zmodyfikował bym nieco tabele newsów i komentarzy na:

tabela newsów:
ID | Autor | Tytul | Tresc | Data

a tabele komentarzy na:
ID | News_ID | Autor | Tresc | Data


Wyciągnięcie ID ostatniego komentarza do newsa:
[php:1:6b9e833134]<?php
$sql = "SELECT id FROM komentarze WHERE news_id=$news_id ORDER BY data DESC LIMIT 1";
?>[/php:1:6b9e833134]

Zliczenie liczby komentarzy:
[php:1:6b9e833134]<?php
$sql = "SELECT count(*) FROM komenatrze WHERE news_id=$news_id";
?>[/php:1:6b9e833134]

Miałem dokładnie ten sma problem...
Twój sposób okazał się całkiem niezły!
Teraz skrypt z moimi newsami chodzi dosyć dobrze...
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.