Autor | Zpráva | ||
---|---|---|---|
Pavlínka Profil |
#1 · Zasláno: 6. 1. 2017, 11:09:11
$getid = $_GET['id']; $c = 0; if($getid=="$c") if($getid=="") takový asi hloupý dotaz... obě podmínky mi vypíšou obsah... jak tedy to zapsat správně pokud ?id= je prázné? kuju :))) |
||
juriad_ Profil * |
#2 · Zasláno: 6. 1. 2017, 11:17:45
isset($_GET['id']) ti řekne, zda vůbec existuje
$_GET['id'] === '' ti řekne, zda obsahuje prázdný řetězec (za předpokladu, že existuje, jinak vypíše Notice)
$_GET['id'] === '0' ti, řekne, zda obsahuje řetězec "0" (za předpokladu, že existuje, jinak vypíše Notice)
$_GET['id'] === 0 ti, řekne, zda obsahuje číslo 0 (za předpokladu, že existuje, jinak vypíše Notice)
Co se stane, když porovnáš $_GET['id'] == 0 nebo $_GET['id'] == '0' ?
Pokud neexistuje, dostaneš Notice. Pokud existuje, zkusí porovnat nějak podivně. Pro přesnou definici podivně se podívej na php.net/manual/en/types.comparisons.php do části „Loose comparisons with ==“ |
||
Michales Profil |
#3 · Zasláno: 6. 1. 2017, 11:23:15
Pavlínka:
¨<?php if (isset($_GET['id'])) { $getid = intval($_GET['id']); echo " vyplněné id "; } else { $getid = 0; echo"nevyplněné id"; } ?> |
||
Keeehi Profil |
#4 · Zasláno: 6. 1. 2017, 11:24:36
A to co juriad zapomněl zmínit je funkce
empty($_GET['id']) . Kontroluje nejenom prázdný řetězec, ale i nulu, false, null a podobně. Pro přesný výčet se podívej do dokumentace.
|
||
Pavlínka Profil |
Pavlínka, juriad:
„Pokud existuje, zkusí porovnat nějak podivně“ to mě napadlo jako první... měla jsem if($getid==$c)
... ale když jsem přidala uvozovky stále to vypisovalo obsah i když to nemělo... a 3x =???? není to jen překlep? vždy jsem všude používala jen == Michales: isset (ač jsem spíš laik) znám a když to nepůjde přepíšu jej... mě zajímá rozdím v samotné podmínce... jak poznat 0 od "nic" :) |
||
Keeehi Profil |
Pavlínka:
„jak poznat 0 od "nic" :)“ Právě těmi třemi rovnítky. Jedno je na přiřazení, dvě se snaží najít shodu i napříč typy (např. 0 == "0" projde, ovšem projde i 0 == "" protože prázdný řetězec se převede na číslo 0), u tří musí sedět i typ (0 === "0" neprojde ale 0 === 0 ano). V poli $_GET jsou na začátku v hodnotách vždy stringy. Proto porovnání by mělo vypadat takto:
isset($_GET['id']) // Zda index vůbec existuje $_GET['id'] === '' // Test na prázdný řetězec $_GET['id'] === '0' // Test na nulu zapsanou jako řetězec |
||
juriad_ Profil * |
#7 · Zasláno: 6. 1. 2017, 11:52:13
Pavlínka:
Na mnou odkázané stránce je porovnání == a ===. Tři rovnítka jsou striktnější, není to překlep. Vždy musíš použít funkci isset nebo empty, v opačném případě ti použití proměnné $_GET['id'], která není definovaná, PHP vypíše Notice - viz třeba Notice: Undefined variable, opakuje se to tu každou chvíli. Pokud žádnou Notice nevidíš, zapni si vypisování všech chyb. |
||
Časová prodleva: 8 let
|
0