Autor | Zpráva | ||
---|---|---|---|
michal454454 Profil |
#1 · Zasláno: 17. 1. 2015, 14:07:49
Zdravim potřeboval bych prosim radu jak uložit komenty do DB podle id článku ke kterému koment píši.. zatím mám vložení do DB jen přes insert.. v DB mám tabulku KOMENTARE(id,komentar,id_clanku,id_uzivatele), takže se mi ukládají do DB zatím ukládají všechny komenty nezávisle na článku.. který jsem zatím jen k jednomu komentu napsal ručně v DB..
|
||
lionel messi Profil |
#2 · Zasláno: 17. 1. 2015, 14:11:58
michal454454:
Ak prenášaš id článku ako parameter v url adrese (čiže example.com/index.php?clanok=1 , nájdeš ho v superglobálnom poli $_GET["clanok"] , čo už bez problémov uložíš do db.
|
||
michal454454 Profil |
#3 · Zasláno: 17. 1. 2015, 14:29:27
Ok a kam toto napisu když mám soubor
koment.php <?php class koment{ private $db; public function __construct(&$db){ session_start(); //session_regenerate_id(true); $this->db = $db; } public function pridejKoment($koment) { if($this->db->insert('komentare',['komentar' => $koment])){ return "<p>Komentář byl úspěšně přidán !</p>"; } else { return "<p>Chyba databáze</p>"; } } } ?> $k= new koment($db); case 'zobrazClanek': if(isset($_GET['id'])){ if(isset($_POST['forum'])){ echo $k->pridejKoment($_POST["forum"]); } $clanek = $db->get('clanky','*',['id' => $_GET['id']]); include_once "./articleViewer.php"; if($u->checkLogin($referer) === true){ if($_GET['action']== 'zobrazClanek'){ echo "<form action='./index.php?action=zobrazClanek&id=".$_GET['id']."' method='POST'> Napište váš komentář<br /> <input type='text' name='forum' /><br /> <input type='submit' value='odeslat'/> </form>"; } } |
||
Micruss Profil |
#4 · Zasláno: 17. 1. 2015, 17:53:38
To je hodně divoký :D...
Přeskočím tu třídu a řeknu ti problém... Přijde mi, že blbě předáváš paremetry nevím jak máš postavený formulář... ale ty vložíš do databáze jen sloupec "komentar" a chybí ti tam id_clanku, id_uzivatele.. takze se tam doplní defaultní hodnota tipuju NULL/0, buď předej metodě více parametrů a nebo celej $_POST... a pak to z toho dostaň co chceš samozřejmě by jsi to měl ošetřit pomocí escape funkcí Každopádně bych opravil to $_GET['id'] třeba na $clanek_id = (int)$_GET['id']; a dále pracoval s touto proměnou
|
||
michal454454 Profil |
tak ted to mám takto.. TABULKA komentare(id,komentar,id_clanku,id_uzivatele)
index.php case 'zobrazClanek': if(isset($_GET['id'])){ $clanek = $db->get('clanky','*',['id' => $_GET['id']]); include_once "./articleViewer.php"; if($u->checkLogin($referer) === true){ if($_GET['action']== 'zobrazClanek'){ include_once "./pridejKoment.php"; } } } <?php include_once './class/medoo.php'; include_once './class/koment.php'; $db = new medoo(); $k = new koment($db); if(isset($_POST["forum"],$_POST["id_clanku"],$_POST["id_uzivatele"])){ echo $k->pridejKoment($_POST["forum"],$_POST["id_clanku"],$_POST["id_uzivatele"]); } $koment=$db->select("komentare","*",["id_clanku" => $_GET["id"]]); foreach($koment as $kom){ echo "<table> <th><td>Komentář</td><td>Článek_id</td></th> <tr><td>". $kom["komentar"]."</td><td>". $kom["id_clanku"]."</td></tr> </table>"; } echo "<form action='pridejKoment.php' method='POST'> <textarea name='forum'></textarea> <input type='text' name='id_clanku'/> <input type='text' name='id_uzivatele'/> <input type='submit' value='Odeslat'/> </form>"; ?> <?php class koment{ private $db; public function __construct(&$db){ $this->db = $db; } public function pridejKoment($koment,$id_clanku,$id_uzivatele) { $id_clanku=(int)$_GET["id"]; if($this->db->insert('komentare',['komentar' => $koment,'id_clanku'=>$id_clanku,'id_uzivatele'=>$id_uzivatele])){ return "<p>Komentář byl úspěšně přidán !</p>"; } else { return "<p>Chyba databáze</p>"; } } } ?> |
||
michal454454 Profil |
#6 · Zasláno: 18. 1. 2015, 15:05:02
Neporadil by teda někdo jak dostat ID clanku ne kterým pisu komentar dostat do tabulky komentaru do sloupce id_clanku? nevím jak to mám teď napsat
Diky |
||
Dan Charousek Profil |
#7 · Zasláno: 18. 1. 2015, 15:54:46
Udělej to pomocí skrytého inputu:
echo '<input type="hidden" name="id_clanku" value="' . htmlspecialchars($_GET['id']) . '">'; |
||
Časová prodleva: 10 let
|
0