Autor Zpráva
Pavlínka
Profil
$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 *
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
Pavlínka:
¨<?php
if (isset($_GET['id'])) {
    $getid = intval($_GET['id']);
        echo " vyplněné id ";
}
else {
    $getid = 0;
         echo"nevyplněné id";
}
?>
Keeehi
Profil
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 *
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.

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