21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Ameopro
Profil
Ahoj mám script na upravu dat v mysql ale když chci přiřadit aby se to ukazalo jen pro přihlášene a s hodností Administrator tak to nefunguje netušíte proč url vypadá takto: index.php?mode=upravit&edit=355
s tím že vše funguje na index.php?mode=upravit ale jak jdu mezi edit index.php?mode=upravit&edit tak tam to už zase nefunguje netušíte proč ?

<?php
include('view/config/config.php');
session_start();
$user_check=$_SESSION['username'];
$ses_sql=mysql_query("select username, hodnost from login where username='". mysql_real_escape_string($user_check) . "' ");
$row=mysql_fetch_array($ses_sql);
$login_session=$row['username'];
?>

<?php
    include_once "view/config/config.php";
    mysql_set_charset("utf8");
    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'>";
    }
 
?>
<?php if(isset($login_session) & row['hodnost']=="Administrator") { ?>
<form action="" method="POST">
<table style="text-transform: uppercase;">
<tr>
<td><input type="hidden" name="id" value="<?php echo $row[id]; ?>"></td>
</tr>
<tr>
<td>Jméno a Příjmení:</td><td><?php echo $row['input_name'];?> <?php echo $row['input_surname'];?></td>

<tr>
<td>status</td><td>
<select name="client_stat">
<option value="schváleno">Schváleno<option>
<option value="zamítnuto">Zamítnuto<option>
<option value="Čekáme na dodání podkladů">Čekáme na dodání podkladů<option>
<option value="Zpracovava se">Zpracovává se<option>
<option value="Nezvedá">Nezvedá<option>
    <option value="Rozmyslí se">Rozmyslí se<option>
    <option value="K podepsání">K podepsání<option>
    <option value="Odeslano k podpisu">Odeslano k podpisu<option>    
    <option value="Kompletace">Kompletace<option>
<option value="Žádost Nemovitost">Žádost Nemovitost<option>    
</select>
</td>
</tr>

</table>
</form>
<?php } ?>
lionel messi
Profil
Ameopro:
Riadok 33 má byť správne takto:
<?php if(isset($login_session) && row['hodnost']=="Administrator") { ?>

Operátor & znamená síce AND, ale tzv. bitové, ktoré funguje úplne inak než logické AND, ktoré ty potrebuješ.

Detailnejšie som kód neskúmal, ešte mi udrelo do očí nepoužité escapovanie (tam, kde do db posielaš užívateľský vstup) a neoverenie existencie $_SESSION['username'] pred priradením do lokálnej premennej (r. 4), čo môžeš vyriešiť jednoduchou podmienkou.

$user_check = (isset($_SESSION['username']) ? $_SESSION['username'] : "");
Ameopro
Profil
Díky moc již to funguje.
jaky má smysl tedy toto ? $user_check = (isset($_SESSION['username']) ? $_SESSION['username'] : ""); že má se uložit do session a poté hop mohu volat nebo ?
lionel messi
Profil
Ameopro:
nefunguje to zmizí potom celé pole
Prepáč, som slepý ako patrón.

<?php if(isset($login_session) && $row['hodnost']=="Administrator") { ?>
Ameopro
Profil
toho $row sem se všim to nevadí každopádně děkuji
bylo by možné my vysvětlit tuto funkci ?

$user_check = (isset($_SESSION['username']) ? $_SESSION['username'] : "");
lionel messi
Profil
Ameopro:
bylo by možné my vysvětlit tuto funkci ?
>
$user_check = (isset($_SESSION['username']) ? $_SESSION['username'] : "");
Jasné. V skutočnosti však nejde o funkciu, ale o ternárny operátor. Uvedený zápis je vlastne skrátenou verziou podmienky:

if (isset($_SESSION['username'])) {
  $user_check = $_SESSION['username'];
}
else {
  $user_check = "";
}
Ameopro
Profil
OK supper děkuji
lionel messi
Profil
Ameopro:
děkuji
Za málo.

Ešte doplním odkaz na český zdroj venovaný ternáru v PHP Základní kurz 10: Podmínky.
bestik_63
Profil
Ameopro:
Pokud existuje proměnná $_SESSION['username'] tak $user_check=$_SESSION['username'], jinak $user_check=""
Je to zkrácený IF

Tak pozdě :-)
Ameopro
Profil
Menší problém když to použiju sice veme podmínky ale zas nevypíše data . netušíte proč ?

<?php session_start();
    include_once "view/config/config.php";
    mysql_set_charset("utf8");
    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'];
        $provize = $_POST['provize']; 
        $info = $_POST['info']; 
        $id       = $_POST['id'];
        $sql     = "UPDATE clients SET client_stat='$client_stat', provize_up='$provize', info='$info'  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'>";
    }
 
?>

 <?php
include('view/config/config.php');
session_start();
$user_check = (isset($_SESSION['username']) ? $_SESSION['username'] : "");
$ses_sql=mysql_query("select username, hodnost from login where username='". mysql_real_escape_string($user_check) . "' ");
$row=mysql_fetch_array($ses_sql);
$login_session=$row['username'];
?>
lionel messi
Profil
Ameopro:
když to použiju sice veme podmínky ale zas nevypíše data . netušíte proč ?
Pretože ty tie dáta síce z databázy vyťahuješ (aj to vždy len 1 riadok, hoci by ich dotaz mohol teoreticky vrátiť viacero), ale nikde fyzicky nevypisuješ.

$ses_sql=mysql_query("select username, hodnost from login where username='". mysql_real_escape_string($user_check) . "' ");
while ($row=mysql_fetch_array($ses_sql)) {
  $login_session=$row['username'];
  echo $login_session;
}
?>
Ameopro
Profil
Vípis mám potom dole

<tr>
<td>Jméno a Příjmení:</td><td><?php echo $row['input_name'];?> <?php echo $row['input_surname'];?></td>
</tr>



ale stejně nefunguje to zároven netuším proč
Tomáš123
Profil
Ameopro:
Okrem toho, že kľúče, ktorých hodnoty vypisuješ som v skripte nevidel mi napadajú ešte dve ďalšie príčiny:
1. Hodnoty z tabuľky neprechádzaš cyklom následkom čoho sa ku požadovanému záznamu skript nikdy nemusí dostať. Riešenie už navrhol [#11]lionel messi vyššie.
2. Funkcia session_start() má byť umiestnená pred akýmkoľvek výpisom (typicky nazačiatku skriptu).
Ameopro
Profil
Tak ale když to dám bez podmínky Login_session a $row tak to veme v pořádku jen když dám podmínky atd tak už nikoli
lionel messi
Profil
Ameopro:
Tak ale když to dám bez podmínky Login_session a $row tak to veme v pořádku jen když dám podmínky atd tak už nikoli
To znamená, že podmienka sa vyhodnotí ako nesplnená. Skúsil si už cyklus v [#11] (bez echo)? Čo vypíše var_dump($login_session);?
Ameopro
Profil
Omlouvám se dneska jsem to nestíhal kouknu na to zítra a dám vědět každopádně zatím děkuji
Ameopro
Profil
hlásí to toto : string(5) "Ameopro"

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