Autor | Zpráva | ||
---|---|---|---|
ulalaa Profil * |
#1 · Zasláno: 14. 12. 2022, 22:31:38
Ahoj, snažím se vytvořit podmínku v PHP, ale zřejmě tam je něco, co úplně nechápu. Potřebuji rozlišit, zda databáze u daného záznamu obsahuje vyplněné pole $linkhref. Pokud ano, potřebuji vytvořit proměnnou $linkpublic s odkazem - tj. jako bych v HTML napsal:
[mezera]<a href="linkhref" target=_blank">linktext</a> , pokud záznam neobsahuje $linkhref, měla by být proměnná $linkpublic prázdná - tj $linkpublic = ""; .
V tuhle chvíli mám vytvořený kód: $linkhref = $row['linkhref']; $linktext = $row['linktext']; if (isset ($linkhref)){$linkpublic = " <a href='". $linkhref ."' target='_blank'>". $linktext ."</a>.";} else {$linkpublic = "";}; $linkpublic = ""; , musím v databázi ručně zaškrtnout, že má být pole NULL, nestačí, aby bylo prázdné. Pokud je pole jen prázdné, celé se to chová, jako by tam byl prázný odkaz - tj. napíše se mi mezera s tečkou.
Jak mám tohle vyřešit? Mám něco špatně v uvedeném kódu nebo je potřeba vymyslet nějaký způsob, který by odesílal NULL do databáze? |
||
Firibix Profil |
#2 · Zasláno: 14. 12. 2022, 22:41:44
Reakce na ulalaa:
Prázdný řetězec (tj. "" ) a null není to samé. Funkce isset , kontroluje, zda proměnná existuje a není null . Pro prázdný řetězec tedy vrátí true .
Řešení je buď do databáze vkládat NULL místo prázdného řetězce (to je za mě preferované a čistší), nebo podmínku doplnit o test na prázdný řetězec:
if (isset($linkhref) && $linkhref !== "") |
||
ulalaa Profil * |
#3 · Zasláno: 14. 12. 2022, 22:58:47
Zkusil jsem kvůli jednoduchosti nejprve aplikovat vaší podmínku, tj.
if (isset($linkhref) && $linkhref !== "") {$linkpublic = " <a href='". $linkhref ."' target='_blank'>". $linktext ."</a>.";} else {$linkpublic = "";};
PHP mi teď ale hlásí chybu - Parse error: syntax error, unexpected ' ' (T_STRING), expecting ')' in (cesta a číslo tohoto řádku). |
||
Stroganov Profil * |
#4 · Zasláno: 14. 12. 2022, 23:06:49
ulalaa:
Tam, kde PHP očakáva klasickú medzeru, nemôže byť nedeliteľná medzera, ako máte vy v definícii podmienky a okolo nej. |
||
ulalaa Profil * |
#5 · Zasláno: 14. 12. 2022, 23:09:59
Super, děkuji, už vše funguje, jak má :).
|
||
Keeehi Profil |
#6 · Zasláno: 15. 12. 2022, 00:05:25
No, ta podmínka se dá zapsat jednodušeji.
if (!empty($linkhref)) |
||
Firibix Profil |
#7 · Zasláno: 15. 12. 2022, 12:51:42
Reakce na Keeehiho:
To ale není ekvivalentní isset($linkhref) && $linkhref !== "" . Tahleta skrytá přetypování falsey hodnot v PHP osobně nemám rád a snažím se jim vyhýbat.
|
||
Časová prodleva: 1 rok
|
0