« 1 2 »
Autor Zpráva
WladinQ
Profil
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 *
Tak si ty prispevky serad: dopln klauzuli ORDER BY do selectu.
WladinQ
Profil
juriad:
mozes mi ukazat priklad ako by to malo byt ?
juriad_
Profil *
SELECT id, post, date, time FROM post ORDER BY date DESC, time DESC
Mimochodem, jaky mas datovy typ sloupcu date a time? Doufam, ze je to DATE a TIME; muzes pouzit jediny sloupec s typem DATETIME.
Pokud je ty VARCHAR, tak to honem rychle zmen; mel bys problemy nejen s razenim.
WladinQ
Profil
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 *
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
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 *
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
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'];
dopisat $post_author_id = $run_post['author_id']; ?
juriad_
Profil *
Ne author_id ale author. A dostanes primo jeho jmeno.
Podivej se, co vraci samotny dotaz treba pres phpmyadmin.
WladinQ
Profil
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
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
Pokud to nebude fungovat; vypiš si chybu pomocí funkce mysql_error.

Například za druhý řádek přidej:
if(!$post_query) {
  echo "Chyba v dotazu: " . mysql_error();
}
WladinQ
Profil
juriad:
nevipisuje to ziadnu chybu ale aj tak to nefakci

Tady mas v rar vsetko
juriad
Profil
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
juriad:
nie su tam ziadne idcka ako ich tam vlozim ?
juriad
Profil
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
$post_author = $run_post['author'];
a později:
<b><?php echo $post_author; ?></b>
WladinQ
Profil
juriad:
jo funguje diki akurat nechapem preco mi nejde prepojit comment s id users nieco 18 mi tam dalo 38
juriad
Profil
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
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
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'");
Chybějící čárka je snad zřejmá; ta druhá vyznačená část znamená, že ke komentáři chceš doplnit informace o uživateli, jehož id je ve sloupci author_id.
Zkontroluj si, že v tabulce comment máš sloupec author_id typu int a komentáře ho mají vyplněný.
WladinQ
Profil
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
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
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
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í?
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: