Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022

Diskuze: výpis dat ze dvou tabulek

Aktivity
Avatar
fazy
Člen
Avatar
fazy:28.6.2014 17:38

Ahoj :) mám takový problém, udělal jsem si knihu návštěv. Teď jsem ale došel k názoru, že by se mi líbilo udělat možnost komentování příspěvků do knihy.. něco jako na fb když si komentujete příspěvky. Mám dvě tabulky, jedna obsahuje data z knihy návštěv a druhá komentáře. Propojeny jsou přes sloupce knihanavstev.id a komentar.komen­tar_id. to znamená, že každy příspěvek má svůj id a ten je klíčem pro zobrazení komentářů které mají komentar_id shodný s knihanavstev.id. potřebuju poradit s kódem, protože mi to u každehé příspěvku vypisuje všechny komentáře aniž by měli shodné hodnoty ID. ukázka kódu:
<?php

$hodina=time() ;
$host='localhost';
$uzivatel='root';
$heslo='';
$db=mysql_con­nect($host, $uzivatel, $heslo) or die('Nelze se připojit k serveru');
$databaze='kniha';
mysql_select_db($da­tabaze, $db) or die (mysql_error($db));
mysql_query('SET NAMES UTF8');
mysql_query('SET COLLATION_CON­NECTION=utf8_czech_ci'­);
if(isset($_POS­T['jmeno']) && isset($_POST['tex­t'])){
if(trim($_POS­T['jmeno']) !="" && trim($_POST['tex­t']) !="")
{
$jmeno=trim(html­specialchars(strip_tag­s($_POST['jme­no'])));
$prispevek=trim(htm­lspecialchars(strip_tag­s($_POST['tex­t'])));
$dotaz= 'INSERT INTO knihanavstev(jmeno, text, cas, zobrazovat) Values("'.$jme­no.'", "'.$prispevek.'", "'.Time().'", "1")';
$vysledky = mysql_query($do­taz,$db) or die(mysql_error($db));
}}
if(isset($vys­ledky))
{
echo '<div class="ok"><br>Váš příspěvek byl úspěšně vložen<br></div>';
}
else
{
echo '<div id="err"></div>';
}

$dotaz='SELECT * FROM knihanavstev WHERE zobrazovat="1" ORDER BY cas DESC';
$vysledek=mys­ql_query($dotaz, $db);

while($zaznam=mys­ql_fetch_assoc($vys­ledek))
{
echo '<div id="kniha" >
<div class="pridal"><stron­g> '.$zaznam['jme­no'].'</stron­g></div>
<div class="cas">'­.date('d.m.y / H:i:s' ,$zaznam['cas'])­.'</div>
<div style="clear:bot­h"></div>

<div class="textpris­pevku">'.$zaz­nam['text'].'</div>

<div id="komentar">
<p>Vložit komentář</p>
<form action="" method="POST">
<label for="prezdivka">Přez­dívka: </label>
<input type="text" name="koment_jmeno" id="koment_jmeno" style="width:70px"><br>
<label for="komentar">Ko­mentář: </label>
<textarea name="koment" id="koment" style="width:300px;he­ight:50px"></t­extarea><br>
<input type="submit" value="vložit">
</div></div>
<br>';
$dotaz2='SELECT * FROM komentar,kniha­navstev WHERE komentar.komen­tar_id = knihanavstev.id';
$vysledek2=mys­ql_query($dotaz2, $db) or die(mysql_error($db));
while($zaznam2=mys­ql_fetch_assoc($vys­ledek2)){
echo $zaznam2['prez­divka'];
echo $zaznam2['time'];
echo $zaznam2['komen­tar'];
};
};

echo '</div>';

?>

 
Odpovědět
28.6.2014 17:38
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na fazy
KlimiCZ:28.6.2014 17:39

je tu tlačítko na kod :D

Nahoru Odpovědět
28.6.2014 17:39
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
fazy
Člen
Avatar
Odpovídá na KlimiCZ
fazy:28.6.2014 17:43

nevsiml jsem si :D

 
Nahoru Odpovědět
28.6.2014 17:43
Avatar
fazy
Člen
Avatar
fazy:28.6.2014 17:45

v tom kódu je už i zahrnutý nový formulář pro vkládání komentářů který ještě není naprogramovaný tak ať vás to nemate :)

 
Nahoru Odpovědět
28.6.2014 17:45
Avatar
Petr D
Člen
Avatar
Odpovídá na fazy
Petr D:28.6.2014 19:02

Nějak tak?

$dotaz2='SELECT * FROM komentar WHERE komentar.komentar_id = $zaznam["id"]';
 
Nahoru Odpovědět
28.6.2014 19:02
Avatar
fazy
Člen
Avatar
fazy:29.6.2014 0:24

chyba: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '["id"]' at line 1

 
Nahoru Odpovědět
29.6.2014 0:24
Avatar
Petr D
Člen
Avatar
Odpovídá na fazy
Petr D:29.6.2014 11:49
$dotaz2='SELECT * FROM komentar WHERE komentar.komentar_id = ' . $zaznam['id'] . ';';
 
Nahoru Odpovědět
29.6.2014 11:49
Avatar
fazy
Člen
Avatar
fazy:29.6.2014 11:55

joo už to běží :) dík moc :)

 
Nahoru Odpovědět
29.6.2014 11:55
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr D
David Čápka:29.6.2014 12:43

SQL injekce.

Nahoru Odpovědět
29.6.2014 12:43
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
Petr D
Člen
Avatar
Odpovídá na David Čápka
Petr D:29.6.2014 13:48

Samozřejmě. Ale tak zadání neznělo :)

 
Nahoru Odpovědět
29.6.2014 13:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.