29. november 2010 - 22:56 Der 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.

echo "<th>PRICE</th>";
if($mode != "create") echo "<th>BASKET</th>";

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.
Avatar billede The_Buzz Novice
29. november 2010 - 23:45 #1
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"; }
Avatar billede showsource Seniormester
30. november 2010 - 02:21 #2
Er jeg logget ind ?
30. november 2010 - 06:25 #3
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?
Avatar billede The_Buzz Novice
30. november 2010 - 08:47 #4
Hehe mit forslag er bare min måde at programmere på - jeg bruger altid { og } sammen med if sætninger - og appender med $query = query . "";

Din metode er såmænd lige så gyldig som andre, men min har jeg mere erfaring med og foreslog det - fordi jeg vidste det ville fungere :)
30. november 2010 - 10:00 #5
Jamen tak for forklaringen og hjaelpen ioevrigt.  Jeg proever at opbygge erfaring.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester