Autor | Zpráva | ||
---|---|---|---|
WladinQ Profil |
#1 · Zasláno: 14. 11. 2013, 12:44:59
nazdar mam problem pri pridavaní prispevkov ked pridam druhy je vzdy pod prvym ja to potrebujem opacne
<table border="0"> <tr> <td><textarea name='message' rows='2' cols='70'></textarea></td> <td><input type='submit' value='Pridať na nástenku' /></td> </tr> </table> </form> <?php $post_query = mysql_query("SELECT id, post, date, time FROM post"); while($run_post = mysql_fetch_array($post_query)){ $post_id = $run_post['id']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; ?> <div class='box2'> <b><?php echo $username; ?></b> | <font color='#4D68A1'>Dátum : <?php echo $post_date; ?> | Čas : <?php echo $post_time; ?></font> <br/> <p><?php echo $post; ?> <a href='#' class='vymazat' alt='Vymazať'><b>[X] </b></a></p> <div class='comments'> <?php $comment_query = mysql_query("SELECT id, comment FROM comment WHERE post_id='$post_id'"); while($run_comment = mysql_fetch_array($comment_query)){ $comment_id = $run_comment['id']; $comment = $run_comment['comment']; ?> <div class='vieww'> <b><?php echo $username; ?> : </b> <?php echo $comment; ?> </div> <?php } ?> </div> <br/> Komentovať : <input type='text' class='comment' post_id="<?php echo $post_id; ?>" /> </div> |
||
juriad_ Profil * |
#2 · Zasláno: 14. 11. 2013, 12:59:53
Tak si ty prispevky serad: dopln klauzuli ORDER BY do selectu.
|
||
WladinQ Profil |
#3 · Zasláno: 14. 11. 2013, 13:00:50
juriad:
mozes mi ukazat priklad ako by to malo byt ? |
||
juriad_ Profil * |
#4 · Zasláno: 14. 11. 2013, 13:07:47
SELECT id, post, date, time FROM post ORDER BY date DESC, time DESC Pokud je ty VARCHAR, tak to honem rychle zmen; mel bys problemy nejen s razenim. |
||
WladinQ Profil |
#5 · Zasláno: 14. 11. 2013, 13:14:02
juriad:
jo uz to ide diki moc a mam este jednu otazku ohladom toho <b><?php echo $username; ?></b> | <font color='#4D68A1'>Dátum : <?php echo $post_date; ?> | Čas : <?php echo $post_time; ?></font> potrebujem aby nieco miesto toho $username pretoze ked ja pridam prispevok a prihlasim sa cez iny ucet ukaze to ten isty prispevok na ktore kolvek meno malo by tam byt asi ID ci? |
||
juriad_ Profil * |
#6 · Zasláno: 14. 11. 2013, 13:21:45 · Upravil/a: juriad_
WladinQ:
Ty si ale nikam do databaze neukladas, kdo prispevek odeslal. V promenne $username je nejspis jmeno aktualne prihlaseneho uzivatele. Pridej si do tabulky post dalsi sloupec (treba author_id), ktery bude obsahovat id uzivatele, ktery prispevek zaslal. Dotaz se ti pak zesloziti (napriklad): SELECT p.id, p.post, p.date, p.time, u.name as author FROM post p JOIN user u ON p.author_id = u.id ORDER BY p.date DESC, p.time DESC Id prispevku ma jiny vyznam: je to jeho jednoznacne cislo. Diky tomu ti funguji komentare, protoze komentar tak vi, ke kteremu prispevku patri. |
||
WladinQ Profil |
#7 · Zasláno: 14. 11. 2013, 13:26:56 · Upravil/a: WladinQ
juriad:
takze musi tabulka vyzerat 1: id - bude A_I a primary 2: author_id - bude A_I a primary 3: post 4: date 5: time a co su tie p. ako si napisal p.id, p.post... ? juriad: takze to ma vyzerat nasledovne ? $post_query = mysql_query("SELECT p.id, p.post, p.date, p.time, u.name as author FROM post p JOIN user u ON p.author_id= u.id ORDER BY p.date DESC, p.time DESC"); while($run_post = mysql_fetch_array($post_query)){ $post_id = $run_post['id']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; ?> |
||
juriad_ Profil * |
#8 · Zasláno: 14. 11. 2013, 13:52:35
Ano takto; pri zalozeni prispevku do author_id ulozis ID aktualniho uzivatele.
user si zmen na nazev tabulky s uzivateli.
To u a p jsou zkratky (aliasy) za tabulky, aby nebylo nutne vypisovat cely jejich nazev. |
||
WladinQ Profil |
#9 · Zasláno: 14. 11. 2013, 13:56:42
juriad:
mam to takto a nefunguje to <?php $post_query = mysql_query("SELECT p.id, p.post, p.date, p.time, u.name as author FROM post p JOIN users u ON p.author_id= u.id ORDER BY p.date DESC, p.time DESC"); while($run_post = mysql_fetch_array($post_query)){ $post_id = $run_post['id']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; ?> <div class='box2'> <b><?php echo $author_id; ?></b> | <font color='#4D68A1'>Dátum : <?php echo $post_date; ?> | Čas : <?php echo $post_time; ?></font> <br/> netreba do $post_id = $run_post['id']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; |
||
juriad_ Profil * |
#10 · Zasláno: 14. 11. 2013, 14:03:24
Ne author_id ale author. A dostanes primo jeho jmeno.
Podivej se, co vraci samotny dotaz treba pres phpmyadmin. |
||
WladinQ Profil |
#11 · Zasláno: 14. 11. 2013, 14:15:06
juriad:
nechapem to stale ved mam to tak ako si povedal tabulka a kod <?php $post_query = mysql_query("SELECT p.id, p.post, p.date, p.time, u.name as p.author FROM post p JOIN users u ON p.author= u.id ORDER BY p.date DESC, p.time DESC"); while($run_post = mysql_fetch_array($post_query)){ $post_id = $run_post['id']; $post_author = $run_post['author']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; ?> <div class='box2'> <b><?php echo $post_author; ?></b> | <font color='#4D68A1'>Dátum : <?php echo $post_date; ?> | Čas : <?php echo $post_time; ?></font> <br/> a stale to nefunguje vcom robim chybu ma byt v tabulke nazov author typu int ? |
||
juriad Profil |
Ano, má být int.
http://sqlfiddle.com/#!2/44eccb/1 V dotazu máš chybu: u.name as p.author ; zvýrazněnou část smaž a ještě ON p.author_id = u.id zvýrazněnou část doplň.
Existují v tabulce users sloupce id a name? Jak se projevuje chyba? „Nefunguje“ je dost strohý popis. |
||
WladinQ Profil |
juriad:
opravil som a v users mam ID a USERNAME a nefunguje to tak ze ked napisem do textarea a dam pridat tak sa nic nestame |
||
juriad Profil |
Aha, tak v mém dotazu nahraď
u.name za u.username .
|
||
WladinQ Profil |
juriad:
stale to nefunguje :( <?php $post_query = mysql_query("SELECT p.id, p.author, p.post, p.date, p.time, u.username as author FROM post p JOIN users u ON p.author_id = u.id ORDER BY p.date DESC, p.time DESC"); while($run_post = mysql_fetch_array($post_query)){ $post_id = $run_post['id']; $post_author = $run_post['author']; $post = $run_post['post']; $post_date = $run_post['date']; $post_time = $run_post['time']; ?> <div class='box2'> <b><?php echo $post_author; ?></b> | <font color='#4D68A1'>Dátum : <?php echo $post_date; ?> | Čas : <?php echo $post_time; ?></font> <br/> |
||
juriad Profil |
#16 · Zasláno: 14. 11. 2013, 15:38:40
Máš opět špatně dotaz; napiš ho prosím konečně přesně, bez invencí.
SELECT p.id, p.post, p.date, p.time, u.username as author FROM post p JOIN users u ON p.author_id = u.id ORDER BY p.date DESC, p.time DESC Například za druhý řádek přidej: if(!$post_query) { echo "Chyba v dotazu: " . mysql_error(); } |
||
WladinQ Profil |
#17 · Zasláno: 14. 11. 2013, 15:53:58
|
||
juriad Profil |
#18 · Zasláno: 14. 11. 2013, 16:12:26
Mě to funguje.
Zkus zkontrolovat, že ve sloupci author_id jsou id-čka existujících uživatelů. Aby ten dotaz fungoval, tak každý příspěvek musí mít vyplněné author_id a jeho hodnota musí odpovídat id nějakého uživatele. |
||
WladinQ Profil |
#19 · Zasláno: 14. 11. 2013, 16:20:39
juriad:
nie su tam ziadne idcka ako ich tam vlozim ? |
||
juriad Profil |
#20 · Zasláno: 14. 11. 2013, 16:31:34
Manuálně v PHPMyAdminu ke každému příspěvku vlož id autora. Prostě si otevřeš detail tabulky post a dáš editovat (nebo tak nějak, PHPMyAdmin jsem už delší dobu neviděl).
Později upravíš ještě ukládání příspěvků, aby se id uživatele ukládalo automaticky. Nějak takto (za předpokladu, že $user obsahuje id aktuálně přihlášeného uživatele): mysql_query("INSERT INTO post VALUES('', $user, '$message', now(), now())"); |
||
WladinQ Profil |
juriad:
jo konecne to ide akurat ze mi to neukazuje meno xD kto to pridal <b><?php echo $post_authorid; ?></b> |
||
juriad Profil |
#22 · Zasláno: 14. 11. 2013, 16:47:14
$post_author = $run_post['author']; <b><?php echo $post_author; ?></b> |
||
WladinQ Profil |
#23 · Zasláno: 14. 11. 2013, 16:50:57
juriad:
jo funguje diki akurat nechapem preco mi nejde prepojit comment s id users nieco 18 mi tam dalo 38 |
||
juriad Profil |
#24 · Zasláno: 14. 11. 2013, 16:57:14
Aha, takže chceš znát autora každého komentáře. To s těmi čísly (18 a 38) absolutně nechápu.
Zkus provést s komentáři to samé jako s příspěvky: přidat sloupec s id autora; upravit dotaz tak, aby vytahoval jméno autora, a upravit výpis. |
||
WladinQ Profil |
#25 · Zasláno: 14. 11. 2013, 17:03:34
juriad:
ok takze zakladny tvar vyzera takto <?php $comment_query = mysql_query("SELECT id, comment FROM comment WHERE post_id='$post_id'"); while($run_comment = mysql_fetch_array($comment_query)){ $comment_id = $run_comment['id']; $comment = $run_comment['comment']; ?> <div class='vieww'> <b><?php echo $username; ?> : </b> <?php echo $comment; ?> </div> upravil som ho na <?php $comment_query = mysql_query("SELECT c.id, c.comment u.username as author FROM comment c JOIN users u WHERE post_id='$post_id'"); while($run_comment = mysql_fetch_array($comment_query)){ $comment_id = $run_comment['id']; $comment_author = $run_comment['author']; $comment = $run_comment['comment']; ?> <div class='vieww'> <b><?php echo $comment_author; ?> : </b> <?php echo $comment; ?> </div> dobre ? :) |
||
juriad Profil |
#26 · Zasláno: 14. 11. 2013, 17:12:04
Skoro. Dotazy si můžeš zkoušet v PHPMyAdminu, až bude vracet správné výsledky, zakomponuj ho do PHP.
mysql_query("SELECT c.id, c.comment, u.username as author FROM comment c JOIN users u ON c.author_id = u.id WHERE post_id='$post_id'"); Zkontroluj si, že v tabulce comment máš sloupec author_id typu int a komentáře ho mají vyplněný. |
||
WladinQ Profil |
#27 · Zasláno: 14. 11. 2013, 18:11:38
juriad:
ano je tam maju ho viplneni ale uplne ine id ako by malo byt tam je a ked tem koment tak napisem je tam a po refresh zmizne |
||
juriad Profil |
#28 · Zasláno: 14. 11. 2013, 20:29:44
Takže ty přihlášený jako některý uživatel odešleš komentář, ten se zobrazí a je u něj správný autor. Po refreshi komentář zmizí (v databázi je, ale nezobrazuje se). Chápu to správně?
Nedojde náhodou k nějaké chybě v PHP? Zobrazí se v takovém případě input pro zadání komentáře? Mohl bys psát s diaktitikou a interpukcí? Já původně nemohl, protože jsem byl ve škole v laborce a potom na mobilu. |
||
WladinQ Profil |
#29 · Zasláno: 14. 11. 2013, 21:20:43
juriad:
takto príspevky mi zobrazuje aj s autorom keď som to upravil podľa teba tak autor komentáru nezobrazovalo a po resresh komentár zmizol a v databazi nebol uložený v tabulke mam id INT post_id INT pridane authorid INT a comment VARCHAR môže byť vôbec v tabulke 3x INT ? |
||
juriad Profil |
#30 · Zasláno: 14. 11. 2013, 21:25:43
Ano, INT může být kolikrát chceš; je to prostě celé číslo, v tom problém není.
Problém bude přímo s ukládáním komentářů do databáze. Ukaž daný kus kódu (především ukolí toho INSERTu). Pokud v PHPMyAdminu vytvoříš komentář ručně (vložíš do tabulky comments nový záznam), tak se pak správně zobrazí? |
||
Téma pokračuje na další straně.
|
0