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 |
#5 · Zasláno: 19. 4. 2015, 18:23:39
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 |
#7 · Zasláno: 19. 4. 2015, 18:42:21
OK supper děkuji
|
||
lionel messi Profil |
#8 · Zasláno: 19. 4. 2015, 18:45:08
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 |
#10 · Zasláno: 19. 4. 2015, 19:01:30
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 |
#12 · Zasláno: 19. 4. 2015, 19:11:48 · Upravil/a: Ameopro
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 |
#13 · Zasláno: 19. 4. 2015, 20:40:46
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 |
#14 · Zasláno: 19. 4. 2015, 22:18:40
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 |
#15 · Zasláno: 19. 4. 2015, 22:26:46
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 |
#16 · Zasláno: 20. 4. 2015, 21:48:37
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"
|
||
Časová prodleva: 8 let
|
0