Autor Zpráva
Josef Přerovský
Profil
Zdravím. Jak se dá udělat toto:
if(isset($_POST['addreply'])) {                                           
mysql_query("INSERT INTO tickets_o SET ticket_id='".$id."', datum='$datum', nick='$nick', text='".$_POST['text']."'");
mysql_query("UPDATE topics SET stav='1' WHERE id='".$id."'");
echo"<meta http-equiv='refresh' content='0;url=/podpora/detail.php?id=$id'>";}

Aby to fungovalo? :) Děkuji
Ikki
Profil
Co přesně ti nefunguje, nebo čeho tím chceš dosáhnout? Moc nechápu kde je problém.
Josef Přerovský
Profil
Když odešlu formulář if(isset($_POST['addreply'])) { ...
tak ať se přidá odpověď a nastaví stav 1. viz nahore.
Nefunguje to. Nepřidá to odpověď ani stav nezmění
Hando
Profil
Ahoj.
1.) mysql_* je zastaralé, z novějších verzí php odstraněné. Používej jiné rozšíření pro manipulaci s databází. Např. mysqli_*, PDO...
2.) Tenhle kousek sám o sobě samozřejmě nebude fungovat, ale předpokládám, že nastavuješ připojení k databázi dříve.
3.) 2 dotazy na databázi nejsou problém, zejména když se jedná o různé tabulky, netřeba se snažit o to, spojit to do jednoho dotazu, kor když je to v rámci jednoho připojení.
4.) echo"<meta http-equiv='refresh' content='0;url=/podpora/detail.php?id=$id'>";} - přesměrovávat pomocí tohoto není úplně ono, lépe: header("Location: cesta někam...");
5.) Nikde nevidím escapování vkládaných dat, tak snad to děláš v nějakém předchozím kroku... :)
Josef Přerovský
Profil
Např jak?
Hando
Profil
Josef Přerovský:
Čteš vůbec ty odpovědi, které ti lidi posílají? Víceméně můj bod 1, 4 a 5 byl zmíněn již zde: PHP insert chyba?

Např jak?
Jestli se ptáš na to escapování, tak si pročti toto: phpfashion.com/escapovani-definitivni-prirucka

Jinak bych doporučil přejít na MVC způsob psaní aplikací, tenhle spaghetti kód není úplně dobrá cesta - míchat dotazy na databázi, řízení běhu programu a ještě výpis do jednoho skriptu, to je cesta do záhuby.
Josef Přerovský
Profil
Ptám se na ty 2 mysql dotazy... ne na escapování...
Hando
Profil
Tak jinak:
1.) nech si vypsat ty dotazy jako string a vlož je do admineru, nebo phpmyadminu - každý zvlášť. Když budou fungovat, není v nich problém. Netuším, jak vypadá tvá databáze a jaká data do těch proměnných dosazuješ. Ta změť uvozovek a apostrofů je příšerná, ale vypadá v pořádku.
2.) Vypisuje to nějakou chybovou hlášku? Máš povolený error_reporting?
Keeehi
Profil
Ptám se na ty 2 mysql dotazy.
To máš v pořádku. Zavolat funkci mysql_query dvakrát není žádný problém a normálně to funguje. Chybu máš v kódu někde jinde.
A vše co napsal Hando také platí.
Josef Přerovský
Profil
Celkový kod vypadá takhle...
<?php include "system-php/header.php";
// ziskani ID
if($_GET['id']) {

//checknuti levelu
if($user['level'] == 3){

//zapnuti reportu
error_reporting(E_ALL);

//kody
$id = $_GET['id'];
$profil = mysql_query("SELECT * FROM tickets WHERE id='".mysql_real_escape_string($id)."'");
$zobraz = mysql_fetch_array($profil);


//pridani komentare
if(isset($_POST['addreply'])) {  
//ziskani id
$id = $_GET['id'];
//ziskani nicku
$nick = $user['nick'];
//ziskani data
$datum = date("d.m.Y v H:i");   
//prikazy                                   
mysql_query("INSERT INTO tickets_o SET ticket_id='".$id."', datum='$datum', nick='$nick', text='".$_POST['zpravaid']."'");
mysql_query("UPDATE topics SET stav='1', admin='$nick' WHERE id='".$id."'");
//redirect
echo"<meta http-equiv='refresh' content='0;url=tickets.php'>";}

//***************************************************************************************************************************//

//uprava ticketu
if(isset($_POST['editticket'])) {
//ziskani id
$id = $_GET['id'];
//ziskani nicku
$nick = $user['nick'];
//ziskani data
$datum = date("d.m.Y v H:i");
//prikazy    
mysql_query("UPDATE tickets SET nadpis='".$_POST['nazevid']."', stav='".$_POST['stav']."', admin='$nick', autor='".$_POST['autorid']."', text='".$_POST['text']."' WHERE id='".$id."'");
//redirect
echo"<meta http-equiv='refresh' content='0;url=tickets.php'>";}
?>
<div class="col-lg-12">
    <div class="ibox float-e-margins">
        <div class="ibox-title">
            <h5>Editace ticketu: <?php echo"(#".$zobraz['id'].")";?></h5>
        </div>
        <div class="ibox-content">
         <form action="" method="POST" class="form-horizontal">
            <div class="form-group">
                <label class="col-lg-2 control-label">Název ticketu</label>
                <div class="col-lg-10">
                    <input type="text" name="nazevid" value='<?php echo"".$zobraz['nazev']."" ?>' class="form-control" disabled>
                </div>
            </div>
            
            <div class="hr-line-dashed"></div>

            <div class="form-group">
                <label class="col-lg-2 control-label">Text ticketu</label>
                <div class="col-lg-10">
                    <?php echo"".$zobraz['text']."" ?>
                </div>
            </div>
            
            <div class="hr-line-dashed"></div>
            
            <div class="form-group">
                <label class="col-lg-2 control-label">Jméno autora</label>
                <div class="col-lg-10">
                    <input type="text" name="autorid" value='<?php echo"".$zobraz['nick']."" ?>' class="form-control" disabled>
                </div>
            </div>

            <div class="hr-line-dashed"></div>

            <div class="form-group">
                <label class="col-lg-2 control-label">Stav ticketu</label>
             <div class="col-lg-10">
                    <input type="text" name="stav" value='<?php echo"".$zobraz['stav']."" ?>' class="form-control">
                <span class="help-block m-b-none">Ticket <strong><?php if($zobraz['stav'] == 2){echo"<span class='label bg-warning text-white'><i class='fa fa-times m-r-xs'></i> Čeká na vaší odpověď</span>";}
                        elseif($zobraz['stav'] == 1){echo"<span class='label bg-danger text-white'><i class='fa fa-times m-r-xs'></i> Uzavřený</span>";}elseif($dnn['stav'] == 3){echo"Významný a uzamčený";}else{echo"<span class='label bg-success text-white'><i class='fa fa-check m-r-xs'></i> Otevřený</span>";}?></strong></span>
                </div>
            </div>

            <div class="hr-line-dashed"></div>

            <div class="form-group">
                <label class="col-lg-2 control-label">Odpověď</label>
                <div class="col-lg-10">
                    <textarea style="height:300px" type="text" name="zpravaid" class="editor form-control"></textarea>
                </div>
            </div>

            <div class="hr-line-dashed"></div>

            <div class="form-group">
                <div class="col-sm-4 col-sm-offset-2">
                    <button class="btn btn-sm btn-primary pull-right m-t-n-xs" name="editticket">Upravit ticket</button>
                    <button class="btn btn-sm btn-success pull-right m-t-n-xs" name="addreply">Vložit odpověď</button>
                    
                </div>    </form>
            </div>
        </div>
    </div>
</div>
<?php }} include "system-php/footer.php"?>     
Nejde mi změna stavu ticketu ani změna administrátora, ale odpověď to přidá. Nevím jestli je tam něco špatně
Hando
Profil
Hm, nějak postrádám prvek, kterým by se ten formulář odesílal... Jestli tedy špatně nevidím, i to je možné...
Ikki
Profil
Form tam má, ale já postrádám definice, které se mají uložit. SQL příkaz tam sice máš, ale nemůžu najít nic ck by se tam mělo odeslat. Je to nepřehledný až otřesný, eh.
Davex
Profil
Josef Přerovský:
Není dobré se spoléhat na to, že všechny volání funkce mysql_query skončí úspěšně a tady je navíc neštěstí to přesměrování přes Refresh, protože se tak připravíš o případnou chybovou hlášku. Ukládej chyby alespoň někam do souboru.
Hando
Profil
Ikki:
Form tam má, ale já postrádám definice, které se mají uložit. SQL příkaz tam sice máš, ale nemůžu najít nic ck by se tam mělo odeslat.
A to myslíš jak? Všechny proměnné má tak nějak definovány, byť bych k tomu měl drobné výhrady. Např. do query na řádku 26 je předává. A i kdyby ne, tak by se měly uložit prázdné.

Myšleno to bylo tak, že nevidím žádný input type="submit", nebo button type="submit".
Ikki
Profil
Hando:
A to myslíš jak?

Díval jsem se na to na telefonu a nemohl jsem tam najít něco, teď přesně nevím co to bylo.

<?php 
include "system-php/header.php";

    $id = $_GET['id'];
    $nick = $user['nick'];
    $datum = date("d.m.Y v H:i");  

    if($_GET['id']) {
        if($user['level'] == 3){
        
            $profil = mysql_query("SELECT * FROM tickets WHERE id='".mysql_real_escape_string($id)."'");
            $zobraz = mysql_fetch_array($profil);
 
            if(isset($_POST['addreply'])) {  
                
                mysql_query("INSERT INTO tickets_o SET ticket_id='".$id."', datum='$datum', nick='$nick', text='".$_POST['zpravaid']."'");
                mysql_query("UPDATE topics SET stav='1', admin='$nick' WHERE id='".$id."'");
                echo"<meta http-equiv='refresh' content='0;url=tickets.php'>";
                
            }
 
            if(isset($_POST['editticket'])) {
                
                mysql_query("UPDATE tickets SET nadpis='".$_POST['nazevid']."', stav='".$_POST['stav']."', admin='$nick', autor='".$_POST['autorid']."', text='".$_POST['text']."' WHERE id='".$id."'");
                echo"<meta http-equiv='refresh' content='0;url=tickets.php'>";
                
            }
?>

<div class="col-lg-12">
    <div class="ibox float-e-margins">
        <div class="ibox-title">
            <h5>Editace ticketu: <?php echo"(#".$zobraz['id'].")";?></h5>
        </div>
        <div class="ibox-content">
            
         <form method="POST" class="form-horizontal">
            <div class="form-group">
                <label class="col-lg-2 control-label">Název ticketu</label>
                <div class="col-lg-10">
                    <input type="text" name="nazevid" value='<?php echo"".$zobraz['nazev']."" ?>' class="form-control" disabled>
                </div>
            </div>
            
            <div class="hr-line-dashed"></div>
 
            <div class="form-group">
                <label class="col-lg-2 control-label">Text ticketu</label>
                <div class="col-lg-10">
                    <?php echo"".$zobraz['text']."" ?>
                </div>
            </div>
            
            <div class="hr-line-dashed"></div>
            
            <div class="form-group">
                <label class="col-lg-2 control-label">Jméno autora</label>
                <div class="col-lg-10">
                    <input type="text" name="autorid" value='<?php echo"".$zobraz['nick']."" ?>' class="form-control" disabled>
                </div>
            </div>
 
            <div class="hr-line-dashed"></div>
 
            <div class="form-group">
                <label class="col-lg-2 control-label">Stav ticketu</label>
             <div class="col-lg-10">
                    <input type="text" name="stav" value='<?php echo"".$zobraz['stav']."" ?>' class="form-control">
                <span class="help-block m-b-none">Ticket <strong><?php if($zobraz['stav'] == 2){echo"<span class='label bg-warning text-white'><i class='fa fa-times m-r-xs'></i> Čeká na vaší odpověď</span>";}
                        elseif($zobraz['stav'] == 1){echo"<span class='label bg-danger text-white'><i class='fa fa-times m-r-xs'></i> Uzavřený</span>";}elseif($dnn['stav'] == 3){echo"Významný a uzamčený";}else{echo"<span class='label bg-success text-white'><i class='fa fa-check m-r-xs'></i> Otevřený</span>";}?></strong></span>
                </div>
            </div>
 
            <div class="hr-line-dashed"></div>
 
            <div class="form-group">
                <label class="col-lg-2 control-label">Odpověď</label>
                <div class="col-lg-10">
                    <textarea style="height:300px" type="text" name="zpravaid" class="editor form-control"></textarea>
                </div>
            </div>
 
            <div class="hr-line-dashed"></div>
 
            <div class="form-group">
                <div class="col-sm-4 col-sm-offset-2">
                    <button type="submit" class="btn btn-sm btn-primary pull-right m-t-n-xs" name="editticket">Upravit ticket</button>
                    <button type="submit" class="btn btn-sm btn-success pull-right m-t-n-xs" name="addreply">Vložit odpověď</button>
                    
                </div>    </form>
            </div>
        </div>
    </div>
</div>
<?php 
        }
    } 
include "system-php/footer.php";
?>    

Jelikož to stavíš pořád na mém starém kódu a dokonce i mojí staré admince, tak jsem byl tak hodnej a vyzkoušel to jen na tom co vím z kódu. Funguje to v pohodě.
A pro jistotu jsem ten kód i otestoval na checkeru, kód sám o sobě je taky v pohodě.
Hando
Profil
Ikki:

Jeho kód:
<div class="form-group">
                <div class="col-sm-4 col-sm-offset-2">
                    <button class="btn btn-sm btn-primary pull-right m-t-n-xs" name="editticket">Upravit ticket</button>
                    <button class="btn btn-sm btn-success pull-right m-t-n-xs" name="addreply">Vložit odpověď</button>
                    
                </div>    </form>
Tvůj kód:
<div class="col-sm-4 col-sm-offset-2">
                    <button type="submit" class="btn btn-sm btn-primary pull-right m-t-n-xs" name="editticket">Upravit ticket</button>
                    <button type="submit" class="btn btn-sm btn-success pull-right m-t-n-xs" name="addreply">Vložit odpověď</button>
                    
                </div>    </form>

Zde je podle mě zakopaný pes, protože Josef Přerovský tam nic takového nemá, tedy pokud to neodesílá mě nějakým záhadným způsobem, tak se nemá form jak odeslat.
Ikki
Profil
Já jsem to trošku upravil, protože tam asi 3x GET-oval ID a taky mě to tam zarazilo, hlavně jsem myslel že mu tam chybí jedna definována proměnná, ale nakonec jsem jí našel :D

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0