30. oktober 2005 - 19:31Der er
22 kommentarer og 1 løsning
php ignorerer de fleste af mine if()
hejsa jeg har lavet en form som skal oprette en vare i db via en form her er et udkast af koden.
function opret_vare($varenr, $navn, $beskrivelse, $pris, $tilbud, $kategori, $udsolgt, $imgname, $imgtempname, $img2name, $img2tempname, $antal) { if(!isset($varenr)) { $this->err="Du skal huske at taste et vare nummer"; $this->err_no=111; return; } if(!isset($navn)) { $this->err="FEJL : Du har ikke angivet et navn på din vare."; $this->err_no=300; return; } if(!isset($beskrivelse)) { $this->err="FEJL : Du har ikke beskrevet din vare."; $this->err_no=301; return; } if(!isset($pris)) { $this->err="FEJL : Skal varen ikke koste noget ? husk prisen skal angives ex. moms"; $this->err_no=302; return; } if(!isset($antal)) { $this->err="FEJL : Hvor mange af denne vare skal lagerføres ?"; $this->err_no=303; return; } if(!isset($kategori)) { $this->err="FEJL : Hvis du ikke tilslutter din vare en kategori, kan varen ikke vises i shoppen."; $this->err_no=303; return; }
ALT i denne kode bliver totalt ignoreret undtagen if(!isset($kategori)) { $this->err="FEJL : Hvis du ikke tilslutter din vare en kategori, kan varen ikke vises i shoppen."; $this->err_no=303; return; }
er der nogen der kan give mig en fornuftig forklaring på det ???
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
Hvor får du dine variable $varenr, $navn, $beskrivelse, $pris, $tilbud, $kategori, $udsolgt, $imgname, $imgtempname, $img2name, $img2tempname og $antal fra?
som nielle skriver skal jeg have den første fejl hvis $navn ikke er sat og eller bare derud af med de andre... men med denne kan jeg gå igennem alle fejl hvis jeg blot sætter kategori. den er ligeglad med alle de andre....
Jeg får mine variabler fra en form på en anden side, som så kalder denne function...
Som sagt det har virket før og alle variabler er stillet i rigtig rækkefølge, for hvis jeg taster alle felterne, kommer alle i det rigtige sted i db... derfor virker det meget underligt at den ikke vil reagere....
if($a->err_no) { $besked = "" .$a->err. ", " .$a->err_no. ""; } else { $besked = "Vare Nr. " .$a->vare_nr. " er nu oprettet.\nTryk <a href='productinfo.php?id=" .$a->id. "'>HER</a> for at se varen i shoppen."; }
Ja okey det giver ikke meget mening.... hvis jeg gør som du siger med || $variabel == "" så virker de alle hvor jeg gør dette.... er der en ybere mening med det ??
Ja, isset(...) siger om variablen er defineret. Det er den hvis der står den tomme streng i. Kommer du fra en <form> med felter, vil de være definerede. Men de kan så være tomme. (30/10-2005 20:46:20, ja, nielle, jeg så forkert *g*)
erikjacobsen>> de burde virke... jeg har 3 andre sider på andre servere hvor denne metode virker fint. og dette her virkede også fint lige indtil jeg fik rettet en del andre ting i samme funktion, så stoppede det med at virke.... nu har jeg lavet denne også if(isset($imgname) || $imgname != "") den er stik modsat.. den skal kun gøre noget hvis der er sat noget i variablen, men den er også skide ligeglad... den udfører koden lige meget hvad... ???
- tester om variablen er sat (defineret) eller ej. Hvis den ikke er det returnere !isset($antal) værdien sand og du får dermed returneret en fejlkode.
PHP benytter en smart form for boolsk tjek på udtryk som:
if (Test1 || Test2) { ... }
Hvis Test1 returnere sand, så "gider" PHP ikke en gang at teste på Test2; Uanset om Test2 er sand eller falsk vil det hele jo alligevel blive sand.
Dette "boolean-shortcircuit" (boolsk kortslutning) benytter jeg mig af i kodestumpen:
Trin 2) ... || $antal == ""
Hvis !isset($antal) returnere sand, bliver der slet ikke testet på højresiden af or'en (altså på $antal == ""). Hvis !isset($antal) derimod er falsk, så er $asntal derimod defineret, men den kan som sagt bare være lig med den tomme streng.
ja min funktion skal teste alle de andre variabler om de er der ellers kom med en fejl, men netop img ifferne skal ikke give fejl... den skal uploade et billede hvis det er sat, og ellers skal den bare ignorerer denne variabel..
Altså jeg har en funktion hvor den først teste om der er sat noget i de variabler som jeg bestemmer at der SKAL skrives noget.. og bagefter begynder den at udføre funktioner som fek.s at uploade billeder og indsætte data i mysql og så videre...
med andre ord jeg har en form hvor alle data skal udfyldes undtagen billeder de er valfrie. i funktionen tester jeg først om tingene er udfylt hvis de er det, tjekker jeg om billederne er sat (der er 2) HVIS de er det, skal den uploade dem via ftp hvis IKKE ignorer den del af koden. Derefter indsæt data i Mysql... men den uploader billeder selvom der ikke er nogen at uploade, så uploader den bare 2 billeder med time() som navn og billedet fylder 0kb
Ja okey... der var den.. hmm syndes bare det er underligt der skal så meget til.... har jeg sku ikke på de andre sider, og de virker fint... men nok om det... vil i begge svare ?? så skal jeg lukke...
Ja det er jeg naturligvis med på.. det sjove er bare at de er sat ens op... benytter kun egne servere.... og alle er sat ens op, og alle har det samme installeret.... Men det er også lige meget... det skal bare virke og det gør det nu.. :-)
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.