Autor Zpráva
Josef Přerovský
Profil
Zdravím, mám Ticket System, a když chci vytvořit nový topic, tak to nejde. Nevykoná to žádnou akci.

Kod:
<?php
if(isset($_SESSION['user']))
{ ?>

                    <div class="panel panel-default"> 
                        <div class="panel-heading"> 
                            <h3 class="panel-title">Ticket System &bull; Vytvoření topicu <a class="btn btn-info pull-right" data-toggle="modal" data-target="#info"><i class="fa fa-info"></i></a></h3> 
                        </div>                         
                        <div class="panel-body"> 
    <div class="col-sm-12 col-md-3">
Tu nejaky text
</div>
<hr class="visible-xs visible-sm" />
<div class="col-sm-12 col-md-9">
<?php
        $nick = $user['nick'];
        $datum = date("d.m.Y v H:i");
        if(isset($_POST['addticket'])) {
        mysql_query("INSERT INTO tickets SET stav='0', datum='$datum', nick='$nick', nazev='".$_POST['nazev']."', text='".$_POST['text']."'");
        echo"<meta http-equiv='refresh' content='0;url=/podpora/index.php'>";}
?>
<h4></h4>
<input type="text" name="nazev" placeholder='Zadejte titulek' class="form-control" required>
<br>
<textarea style="margin: 0px; width: 510px; height: 188px;" name="text" placeholder="Prosím, poskytněte nám co nejvíce informací o problému pro rychlé vyřešení!" required></textarea>    
<br>
<button class="btn btn-primary pull-right" name="addticket">Přidat ticket</button>
</div>
<?php };?>

Poradí někdo? :)
Keeehi
Profil
Josef Přerovský:
Tak důležité je zjistit, co za data dostaneš a zda v komunikaci s databází nastala nějaká chyba.

<?php
        var_dump($_GET);
        var_dump($_POST);
        $nick = $user['nick'];
        $datum = date("d.m.Y v H:i");
        if(isset($_POST['addticket'])) {
            mysql_query("INSERT INTO tickets SET stav='0', datum='$datum', nick='$nick', nazev='".$_POST['nazev']."', text='".$_POST['text']."'");
            var_dump(mysql_error());
            // echo"<meta http-equiv='refresh' content='0;url=/podpora/index.php'>";
        }
?>
Josef Přerovský
Profil
array(0) { } array(0) { }
DarkMeni
Profil
Tak to asi není dobře, když po odeslání formuláře ani v GET, ani v POST, nejsou žádná data, ne? :D
Takže problém bude někde ještě před tímto kusem kódu.

Je to celé ve <form>?
Nepřepisuješ někde proměnné GET a POST?
Případně zkus místo <button> použít <input type="submit" name="addticket" class="btn btn-primary pull-right" value="Přidat ticket">

A btw, tag <meta> kterým chceš po zpracování přesměrovat, už v <body> nejspíš nebude mít žádný efekt, a pokud ano, tak to nemusí fungovat ve všech prohlížečích. Je lepší zpracovat formulář ještě před jakýmkoliv výstupem a přesměrovat přes php funkci header("Location: jinam.php");, nebo když by to bylo moc komplikované - dát to zpracování ještě před jakýkoliv výstup / echo (jinak to hodí warning "headers already sent") tak spoň v <head> a tam dát ten tag <meta> na přesměrování.

A ještě jedna důležitá vec: Ošetřuj vstupy, které předáváš SQL dotazu.
// např.
$nazev = mysql_real_escape_string($_POST['nazev']);
$text = mysql_real_escape_string($_POST['text']);
A taky mysql_* funkce přestanou fungovat, pokud hosting přejde na novější verzi PHP (7.0.0+) Ale to asi víš, je to psané obřím červeným warningem u každé z těchto funkcí v php manuálu. Naštěstí není zas tak velký problém je nahradit za funkce mysqli_* (rozdíl je v přídání měkkého i na konec), a procedurální styl kódu může zůstat.
Josef Přerovský
Profil
Takže, taková prkotina to byla... nebyla to ve form.. Díky moc :)
Keeehi
Profil
DarkMeni:
A btw, tag <meta> kterým chceš po zpracování přesměrovat, už v <body> nejspíš nebude mít žádný efekt, a pokud ano, tak to nemusí fungovat ve všech prohlížečích.
Ale bude. Dle standardů by měl meta tag být v hlavičce ale prohlížeče s ním běžně nemají problém i v rámci dokumentu. Živá ukázka

(rozdíl je v přídání měkkého i na konec)
To není úplně přesné. Rozdílů je tam více. Ale je si to velmi podobné

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0