| Autor | Zpráva | ||
|---|---|---|---|
| Rodgers23 Profil |
#1 · Zasláno: 5. 7. 2015, 23:41:36
Ahoj, lámu si hlavu nad tím, co dělám špatně...potřebuju mazat položky z databáze pomocí checkboxů. V html mám tento výstup:
<!-- START mycomments -->
<p>Vložil jste komentář <b>{comment}</b></p>
<form action="profile/deletecomments-all" method="post" enctype="multipart/form-data">
<input type="checkbox" name="check[]" value="{ID}" />Vyber<br />
<!-- END mycomments -->
<input type="submit" id="delete" name="delete" value="Smazat" />
</form>V controlleru se mi následně volá funkce: "profile/deletecomments-all" kde by se měl tento příkaz vykonat: private function deleteCommentsAll( $user)
{
if(isset($_POST['delete']))
{
foreach ($_POST["check"] as $id);
$sql = "DELETE FROM mycomments WHERE ID = $id";
}
}Nevíte, kde je problém? |
||
| Alphard Profil |
#2 · Zasláno: 5. 7. 2015, 23:55:58
Středník za foreach tvoří prázdný příkaz, tudíž se nic neprovede (resp. mohla by se smazat poslední položka).
A hned na dalším řádku se pouze sestavuje SQL dotaz, který však zůstává jen uložený v proměnné, nevolá se žádná funkce, která by ho mohla vykonat. |
||
| Rodgers23 Profil |
#3 · Zasláno: 6. 7. 2015, 10:43:31
Tak trochu jinak, upravil jsem funkci v controller, který navazuje na model, kde by se měl tento příkaz vykonat, ale nevím přesně jak to upravit:
private function deleteCommentsAll( $user)
{
if(isset($_POST['delete']))
{
foreach ($_POST["check"] as $id)
{
require_once( FRAMEWORK_PATH . 'models/mycomments.php' );
$mycomments = new MyComments( $this->registry, $mycomments );
if( $mycomments->deleteall() )
{
$this->registry->errorPage( 'Je nám líto...', 'Při pokusu o smazání komentáře došlo k chybě');
}
else
{
$url = $this->registry->getObject('url')->buildURL( array('profile'), '', false );
$this->registry->redirectUser( $url, 'Konec sledování komentáře', 'Váš komentář byl úspěšně smazán');
}
}
}
}V modelu se následně volá funkce deleteall: public function __construct( Registry $registry, $id=0 )
{
$this->registry = $registry;
if( $id > 0 )
{
$this->id = $id;
$sql = "SELECT a.*, p.name as creator_name FROM mycomments a, profile p WHERE p.user_id=a.creator AND a.ID=" . $this->id;
$this->registry->getObject('db')->executeQuery( $sql );
}
else
{
$this->id = 0;
}
public function deleteall($id)
{
$sql = "DELETE FROM mycomments WHERE ID = $id";
$this->registry->getObject('db')->executeQuery( $sql );
}Mazání jednotlivých komentářů mi přes model funguje, ale když tam chci mít právě mazání pomocí checkboxu pomocí funkce "deleteall", tak si nevím rady |
||
| Taps Profil |
#4 · Zasláno: 7. 7. 2015, 07:15:01
Rodgers23:
zkus <?
private function deleteCommentsAll( $user)
{
if(isset($_POST['delete']))
{
foreach ($_POST["check"] as $id)
{
require_once( FRAMEWORK_PATH . 'models/mycomments.php' );
$mycomments = new MyComments( $this->registry, $mycomments );
if( $mycomments->deleteall($id) )
{
$this->registry->errorPage( 'Je nám líto...', 'Při pokusu o smazání komentáře došlo k chybě');
}
else
{
$url = $this->registry->getObject('url')->buildURL( array('profile'), '', false );
$this->registry->redirectUser( $url, 'Konec sledování komentáře', 'Váš komentář byl úspěšně smazán');
}
}
}
}
?> |
||
| Rodgers23 Profil |
#5 · Zasláno: 7. 7. 2015, 14:50:50
nee, ani to mi nepomůže, nic to nedělá: if( $mycomments->deleteall($id) )
|
||
| Taps Profil |
Rodgers23:
zkus ten výstup vypsat na obrazovku z funkce vypsat na obrazovku |
||
| Rodgers23 Profil |
#7 · Zasláno: 8. 7. 2015, 07:39:13
Jak to myslíš přesně? po odeslání se mi stránka vrátí zpět na stránku profile. Mě to připadá že to vůbec nereaguje na ten příkaz.
|
||
| Taps Profil |
#8 · Zasláno: 8. 7. 2015, 08:56:25
Rodgers23:
tím pádem musíš více prozkoumat <? $mycomments->deleteall($id) ?> |
||
| Rodgers23 Profil |
#9 · Zasláno: 9. 7. 2015, 11:11:47
Tak už jsem to vyřešil. Místo
foreach ($_POST["check"] as $id)
{ if(isset ($_POST["check"]))
{
$id=implode(',',$_POST['check']);
... $sql = "DELETE FROM mycomments WHERE id IN ($id)";
$this->registry->getObject('db')->executeQuery( $sql ); |
||
|
Časová prodleva: 11 let
|
|||
0