« 1 2 »
Autor Zpráva
Forms
Profil
Dobrý den
Rád bych se optal či nevíte proč my nenačte script mám ho takto :

<?php
function uprava_clienta() {
    include_once "view/config/config.php";
 
    if( isset($_GET['edit']) )
    {
        $id = $_GET['edit'];
        $res= mysql_query("SELECT * FROM clients WHERE id='$id'");
        $row= mysql_fetch_array($res);
        
    }
 
    if( isset($_POST['client_stat']) )
    {
        mysql_query("set names utf8"); 
        $client_stat = $_POST['client_stat'];
        $id       = $_POST['id'];
        $sql     = "UPDATE clients SET client_stat='$client_stat' WHERE id='$id'";
        $res      = mysql_query($sql) 
                                    or die("Could not update".mysql_error());
        echo "<meta http-equiv='refresh' content='0;url=index.php?mode=status_clienta'>";
    }
}
?>

Volání scriptu na vypsání mám nad formulářem ale nic neudělá nevím ptoč

<?php include_once "view/script/script.php"; uprava_clienta(); ?>
tímto ho volám


formulář mám takto

<form action="" method="POST">
<table>
<tr>
<td><?php echo $row['id'];?></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $row[id]; ?>"></td>
</tr>
<tr>
<td>
<select name="client_stat">
<option value="schvaleno">Schvaleno<option>
<option value="zamitnuto">Zamítnuto<option>
</select>
<input type="submit" value="Editovat"/>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</form>
Taps
Profil
Forms:
Funkce by měla mít vystupu return...nebo alespon echo..ani jedno nevidim(prohlizim z mobilu)
Forms
Profil
tedkon nechápu a kde by mělo byt to return ? to je jenom příkaz na update v mysql ale potřebuji aby to formulář zpracoval .... poslal by jsi ukázku prosím ?
Joker
Profil
Forms:
A co by to mělo udělat?

Budu-li předpokládat, že v config.php není žádný výkonný kód, ta funkce:
• Pokud není nastavené $_GET["edit"] ani $_POST["client_stat"] (v HTML žádná taková pole nevidím), neudělá nic.
• Pokud z těch dvou je nastavené jen $_GET["edit"], v podstatě taky nic neudělá. Resp. pošle dotaz do databáze, ale s vrácenými daty nic neudělá a skončí.
• Pokud je nastavené $_POST["client_stat"], vloží <meta> značku, což -pokud prohlížeč neudělá to přesměrování- nemusí taky být na první pohled viditelné.

Hlavní příčinou potíží nejspíš je ignorování kontextů, respektive neznalost rozsahu platnosti proměnných.
Vedle toho bych doporučil k přečtení i kapitolu o funkcích a jejich návrhu.
Forms
Profil
Takto je to editace s tím že u daného kontaktu kliknu na editovat a veme to id a pokračuje dále na tento formulář a script a podle id pak edituje .
Problém je v tom že když to dám mezi ostatní scripty a pak ho volám function tak to neveme ale když ho mám přímo nad formulářem tak jde krasně


jde my o to jak ho mám volat aby my fungoval ten script na tom formuláři
Joker
Profil
Forms:
když to dám mezi ostatní scripty a pak ho volám function tak to neveme ale když ho mám přímo nad formulářem tak jde krasně
Ano, protože kontext.
Viz můj předchozí příspěvek.
Forms
Profil
jasny ale on dostal už věci $_GET z formuláře před tím a tedkon má formulář novy kterym to má zpracovat co vybere v tomto formuláři

jen potřebuji vědět jak volat script na formulář .

Seznam s ID kliknu upravit > poté sem na formuláři uvedenem > spracuje script
Forms
Profil
Celkový kod

(1)
<?
include_once "view/config/config.php";
$user_check = $_SESSION['username'];
$result = mysql_query($sql);
echo "<table cellpadding=\"2px\" cellspacing=\"0px\" border=\"1px\" id='stat_clients'";
$status =mysql_query("SELECT * From clients order by id desc LIMIT 50;");
while ($row=mysql_fetch_array($status))
echo "<tr><td>".$row['client_stat']."</td><td><a href=\"index.php?mode=uprava&edit=$row[id]\">upravit</a></td></tr>\n";
>?

po kliknutí upravit :

<form action="" method="POST">
<table>
<tr>
<td><?php echo $row['id'];?></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $row[id]; ?>"></td>
</tr>
<tr>
<td>
<select name="client_stat">
<option value="schvaleno">Schvaleno<option>
<option value="zamitnuto">Zamítnuto<option>
</select>
<input type="submit" value="Editovat"/>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</form>

Script:

<
<?php
function uprava_clienta() {
    include_once "view/config/config.php";
 
    if( isset($_GET['edit']) )
    {
        $id = $_GET['edit'];
        $res= mysql_query("SELECT * FROM clients WHERE id='$id'");
        $row= mysql_fetch_array($res);
        
    }
 
    if( isset($_POST['client_stat']) )
    {
        mysql_query("set names utf8"); 
        $client_stat = $_POST['client_stat'];
        $id       = $_POST['id'];
        $sql     = "UPDATE clients SET client_stat='$client_stat' WHERE id='$id'";
        $res      = mysql_query($sql) 
                                    or die("Could not update".mysql_error());
        echo "<meta http-equiv='refresh' content='0;url=index.php?mode=status_clienta'>";
    }
}
?

ktery volám <?php include_once "view/script/script.php"; uprava_clienta(); ?>



Nevím proč my to nechce vzít a pracovat prosím poradte
Davex
Profil
Bylo by dobré, kdybys to upřesnil. Nikdo nemůže vědět, co je v jakém souboru, zda voláš funkci uprava_clienta() ve stejném skriptu jako je formulář a co znamená, že ti to nebere.

Mimochodem, proč jsi změnil přezdívku a nezůstal u Ameopro?
Forms
Profil
index.php

<?
include_once "view/config/config.php";
$user_check = $_SESSION['username'];
$result = mysql_query($sql);
echo "<table cellpadding=\"2px\" cellspacing=\"0px\" border=\"1px\" id='stat_clients'";
$status =mysql_query("SELECT * From clients order by id desc LIMIT 50;");
while ($row=mysql_fetch_array($status))
echo "<tr><td>".$row['client_stat']."</td><td><a href=\"index.php?mode=uprava&edit=$row[id]\">upravit</a></td></tr>\n";
>?

index.php?mode=uprava&edit=$row[id]

<
<?php include_once "view/script/script.php"; uprava_clienta(); ?>

<form action="" method="POST">
<table>
<tr>
<td><?php echo $row['id'];?></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $row[id]; ?>"></td>
</tr>
<tr>
<td>
<select name="client_stat">
<option value="schvaleno">Schvaleno<option>
<option value="zamitnuto">Zamítnuto<option>
</select>
<input type="submit" value="Editovat"/>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</form

view/script/script.php

<?php
function uprava_clienta() {
    include_once "view/config/config.php";
 
    if( isset($_GET['edit']) )
    {
        $id = $_GET['edit'];
        $res= mysql_query("SELECT * FROM clients WHERE id='$id'");
        $row= mysql_fetch_array($res);
        
    }
 
    if( isset($_POST['client_stat']) )
    {
        mysql_query("set names utf8"); 
        $client_stat = $_POST['client_stat'];
        $id       = $_POST['id'];
        $sql     = "UPDATE clients SET client_stat='$client_stat' WHERE id='$id'";
        $res      = mysql_query($sql) 
                                    or die("Could not update".mysql_error());
        echo "<meta http-equiv='refresh' content='0;url=index.php?mode=status_clienta'>";
    }
}
?

Oprava aby bylo vidět kde je co
Jinak Ameopro je Bratr oba se učíme programovat akorád že ja jsem začal nedavno
Joker
Profil
Forms:
jen potřebuji vědět jak volat script na formulář .
Skript se nejspíš zavolá (bez debuggeru se o tom dá snadno přesvědčit přidáním kontrolních výpisů na zajímavá místa v kódu), akorát nic neudělá.

Davex:
Bylo by dobré, kdybys to upřesnil.
Podstata je v tom, že se snaží používat lokální proměnné z funkce i mimo funkci.
Až si přečte článek odkázaný v [#4], měl by pochopit, proč to nejde.
Samozřejmě druhá věc je, že celý návrh té funkce je divný, proto jsem v [#4] odkázal i ten druhý článek.
Taps
Profil
Forms:
já bych tvůj skript upravil do dvou samostatných funkcí
<?php

function uprava_clienta($id) { 
        include_once "view/config/config.php";
        $res = mysql_query("SELECT * FROM clients WHERE id = ".intval($id));
        $row = mysql_fetch_assoc($res);
        
        return $row;
        
}

function stat_client($id, $client){
        include_once "view/config/config.php";
        mysql_query("set names utf8"); //dát do konfiguračního souboru
        $client_stat = mysql_real_escape_string($client);
        $id = intval($id);

        $sql = "UPDATE clients SET client_stat = '$client_stat' WHERE id = ".$id;
        $res = mysql_query($sql)  or die ("Could not update".mysql_error());

        if($res){
            header('location:index.php?mode=status_clienta');
        }
}
        
?>
a poté na stránce s formulářem volal funkci následujícím způsobem
<?php
 include_once "view/script/script.php"; 
 
 if(isset($_GET['edit'])){
 $row = uprava_clienta($_GET['edit']); 
}
 ?>

Důležité je testovat existenci $_GET['edit']. Vzhledem k tomu, že jsi začátečník, tak se zatím vyhni používání vlastních funkcí. Důležité je pochopit základy programování v PHP, jeho principy a loginu. Teprve až poté je vhodné vytvářet vlastní funkce.
Forms
Profil
Taps:
skoušel jsem tvůj script ale nefunguje nic nezpracuje . hodí hnet zase na stranku s formulářem na vyber select
Alphard
Profil
Taps [#12]:
To je asi k ničemu. Neaplikuješ vlastní radu [#2], volání funkce uprava_clienta() nebude mít žádný efekt a editace jako celek nemůže fungovat.

Forms:
Po přečtení článků, které vám odkázal [#4] Joker bude jasné, proč to takhle nemůže fungovat.
Joker
Profil
Taps:
Čistě po návrhové stránce to je sice lepší, ale tím víc snad z tohohle kódu:
function uprava_clienta($id) { 
        include_once "view/config/config.php";
        $res = mysql_query("SELECT * FROM clients WHERE id = ".intval($id));
        $row = mysql_fetch_array($res);
}
je už na první pohled zřejmé, že ta funkce vůbec nic neudělá*!

* Pro přesnost, něco udělá, ale až na nějaké obskurní scénáře zavolání té funkce nebude mít žádný vliv, výsledek bude stejný, jako by tam vůbec nebyla.
Taps
Profil
Forms:
Nefunguje ani poupravená verze?
Forms
Profil
nn nefunguje
Taps
Profil
Forms:
Zobrazí se nějaká chyba?
Forms
Profil
Taps:
nn neukaže žadnou chybu pouze udělá refresh ale nic nezpracuje
Taps
Profil
Forms:
pouze udělá refresh ale nic nezpracuje
Na základě čeho se provádí ten refresh? Jakou máš tedy současnou verzi těch souborů?
Forms
Profil
Taps:
<?php
 
ffunction uprava_clienta($id) { 
        include_once "view/config/config.php";
        $res = mysql_query("SELECT * FROM clients WHERE id = ".intval($id));
        $row = mysql_fetch_array($res);
}
 
function stat_client($id, $client){
        include_once "view/config/config.php";
        mysql_query("set names utf8"); //dát do konfiguračního souboru
        $client_stat = mysql_real_escape_string($client);
        $id = intval($id);
 
        $sql = "UPDATE clients SET client_stat = '$client_stat' WHERE id = ".$id;
        $res = mysql_query($sql)  or die ("Could not update".mysql_error());
 
        if($res){
            header('location:index.php?mode=status_clienta');
        }
}
        
?>


volám : 

<?php
 include_once "view/script/script.php"; 
 
 if(isset($_GET['edit'])){
 $row = uprava_clienta($_GET['edit']); 
}
 ?>

formulář:

<form action="" method="POST">
<table>
<tr>
<td><?php echo $row['id'];?></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $row[id]; ?>"></td>
</tr>
<tr>
<td>
<select name="client_stat">
<option value="schvaleno">Schvaleno<option>
<option value="zamitnuto">Zamítnuto<option>
</select>
<input type="submit" value="Editovat"/>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</form
Skype asi nemáš že ?
Taps
Profil
Forms:
první funkci jsem dodatečně ještě upravoval po upozornění Joker a Alphard
<?
function uprava_clienta($id) { 
        include_once "view/config/config.php";
        $res = mysql_query("SELECT * FROM clients WHERE id = ".intval($id));
        $row = mysql_fetch_assoc($res);
        
        return $row;
        ?>
        
}
Forms
Profil
Tento už funguje
<?
function uprava_clienta($id) { 
        include_once "view/config/config.php";
        $res = mysql_query("SELECT * FROM clients WHERE id = ".intval($id));
        $row = mysql_fetch_assoc($res);
        
        return $row;
        ?>
        
}


ale tento stale ne
function stat_client($id, $client){
        include_once "view/config/config.php";
        mysql_query("set names utf8"); //dát do konfiguračního souboru
        $client_stat = mysql_real_escape_string($client);
        $id = intval($id);
 
        $sql = "UPDATE clients SET client_stat = '$client_stat' WHERE id = ".$id;
        $res = mysql_query($sql)  or die ("Could not update".mysql_error());
 
        if($res){
            header('location:index.php?mode=status_clienta');
        }
}
lionel messi
Profil
Forms:
ale tento stale ne
Nebude to náhodou spôsobené tým, že mysql_query nevracia pri úspechu boolean ale resource? Nebude, viď nižšie.

Mne totiž toto funguje:

function presmeruj($url)
{
    header("Location: $url");
}

presmeruj("http://www.djpw.cz/");

A aj toto:

function presmeruj($url)
{
    mysql_connect("localhost", "root", "");
    mysql_select_db("db");
    $res = mysql_query("SELECT * FROM tabulka");
    if ($res)
    {
        header("Location: $url");
    }
}
Forms
Profil
nevím skoušel jsem spodek poupravit i po svém ale nepustí mě to furt to dává na stejnou stránku s formuláře i když ho odkazuji jinam


a nic nezpracuej
Taps
Profil
Forms:
a jak voláš tu funkci?
Forms
Profil
tak jak si psal :

<?php
 include_once "view/script/script.php"; 
 
 if(isset($_GET['edit'])){
 $row = uprava_clienta($_GET['edit']); 
}
?>
lionel messi
Profil
Taps:
Forms:
a jak voláš tu funkci?
Taps myslel predovšetkým volanie funkcie stat_client, ktorá ti nefunguje.
Forms
Profil
Pardon ale už se v tom motáme celou dobu je jeden script uprava_clienta
potom jsem skoušel jak tu píšete rozděleni a od te doby to tahneme . volám celou dobu pouze funkci uprava_clienta nebot potřebuji aby takto byl cely script ....


Je to na upravu dat v mysql ale aby to rozeznal tak sem dal podle id .......


Potřebuji vlasně script na upravu mysql podle id uživatele
mimochodec
Profil
Jen dotaz. Tohle <?php echo $row
[id]; ?>, tzn bez uvozovek kolem id, vypisuje patricne id tak jak ma?
« 1 2 »

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: