29. november 2010 - 22:56Der er
4 kommentarer og 1 løsning
PHP og 'forskellig fra'
Jeg proever med php kode at lave en tabel paa en hjemmeside og fylde den med data jeg faar fra en mysql query. Hvis siden kaldes i mode "create" skal der vaere en kolonne mindre end hvis siden kaldes i andre modes, og tilsvarende skal queryen soege efter et felt mindre i "create" mode.
Et kodeudsnit for query-strengen er: "query = "SELECT DISTINCT "; if(!$mode == "create") $query .= "a.name as `area`,"; $query .= "co.name as country ........
Jeg har googlet mig til at jeg i stedet for '!$mode == "create"' burde skrive '$mode != "create"', men goer jeg det ignoreres begraensningen og a.name bliver inkluderet for create mode.
Tvaert imod: her er et kodeudsnit for tabelbygningen.
Hvis jeg her proever med '!$mode == "create" ignoreres begraensningen og kolonnen inkluderes i create mode.
Jeg fatter ikke hvorfor jeg skal bruge !$mode == ... i det ene tilfaelde og $mode != i det andet tilfaelde. Jeg vil gerne laere at kode korrekt uden at skulle teste hver enkel saetning.
query = "SELECT DISTINCT "; if($mode != "create") { $query = $query . "a.name as 'area',"; } $query = $query . "co.name as country ........
Det tror jeg på ville virke.
! bliver kun brugt foran en variabel - f.eks:
if (!$mode) { echo "\$mode er ikke sat"; } if ($mode) { echo "\$mode ER sat"; } if ($mode == "create") { echo "\$mode er sat til create"; } if ($mode != "create") { echo "\$mode er IKKE sat til create"; }
The_Buzz, det er helt i orden, det var mig der sov i timen. Efter naermere undersoegelse (og en god nats soevn) skal koden (af grunde der gaar udover dette soergsmaal) ikke inkludere 'a.name as `area`, hverken i den ene eller den anden mode.
For at bevise at det du foreslog ikke hjalp, saa echoede jeg hele $query i de forskellige versioner (det skulle jeg naturligvis have gjort i aftes) og opdagede at php aabenbart ikke forstaar 'if(!$mode== ...)' og derved skipper den instruktion der slet ikke skulle have vaeret der.
Opretter du et svar?
Og naar man raekker djaevlen en lillefinger tager han hele haanden. Saa jeg spoerger videre: Du foreslaar placere koden efter if i en {blok}. Det undlader jeg normalt naar der kun er en instruktion. Videre foreslaar du at bruge $query = $query."a.name.... hvor jeg normalt bruger det kortere $query .= "a.name...." Det er mit, maaske naive, indtryk at det aldrig goer nogen forskel om man bruger disse kortere versioner eller dine laengere versioner. Er det korrekt, eller er de laengere versioner mere robuste, maaske fordi der er software der ikke understoetter de kortere versioner eller er der andre grunde til at bruge de laengere versioner?
Jamen tak for forklaringen og hjaelpen ioevrigt. Jeg proever at opbygge erfaring.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.