| 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: 11 let
|
|||
0