/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
If med flere betingelser?
Fra : Jakob Munck


Dato : 03-01-06 18:09

Jeg fumler med noget if-struktur. Denne sætning virker korrekt.

<?php
if ($ext != ".pdf"){
$_SESSION[$besked] = "Du kan kun uploade filer i htm, html eller pdf-format
!";
}
?>

Men jeg skal have skrevet det så den udskriver den viste session, hvis ext
er forskellig fra .pdf, .htm og .html. Jeg har prøvet med:

if ($ext != ".pdf || $ext != .htm || $ext != .html"){

men det virker ikke.

Hvordan skriver jeg betingelsen, så den tillader de nævnte formater og ikke
andre?


v.h.
Jakob



 
 
Bertel Lund Hansen (03-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-01-06 18:35

Jakob Munck skrev:

> Jeg fumler med noget if-struktur. Denne sætning virker korrekt.

> <?php
> if ($ext != ".pdf"){
> $_SESSION[$besked] = "Du kan kun uploade filer i htm, html eller pdf-format
> !";
> }
> ?>

> Men jeg skal have skrevet det så den udskriver den viste session, hvis ext
> er forskellig fra .pdf, .htm og .html. Jeg har prøvet med:

Pseudokode:

HVIS (endelsen er rigtig) SÅ gørnoget();
ELLERS brok_dig();

if ($ext== ".pdf" || $ext== ".htm" || $ext== ".html")
   gørnoget();
else
   $_SESSION[$besked] = "Du kan kun uploade filer i htm, html eller pdf-format!";

> if ($ext != ".pdf || $ext != .htm || $ext != .html"){
> men det virker ikke.

Nej, for betingelsen er altid sand. Hvis ikke $ext er forskellig
fra det ene, er det forskelligt fra det andet.

Hvis der var meget mere end tre extensions der var tilladt, ville
jeg lave et array og et gennemløb, men det er ikke nogen fordel her
medmindre samme array kunne genbruges i andre dele af koden.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jakob Munck (03-01-2006)
Kommentar
Fra : Jakob Munck


Dato : 03-01-06 20:02

>
> if ($ext== ".pdf" || $ext== ".htm" || $ext== ".html")
> gørnoget();

Tak for svaret. Det kan helt sikkert bruges. Men jeg fandt ud af, at det
faktisk - i mit tilfælde - er lettere at skrive:

if ($ext != ".pdf" && $ext != ".htm" && $ext != ".html"){

herved er "adderer" man betingelserne og så behøver man ikke lave den øvrige
if-struktur om, hvilket jeg ved man skal passe på med for ikke at lave nye
fejl.

Tak for hjælpen.

v.h.
Jakob



Bertel Lund Hansen (03-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-01-06 23:23

Jakob Munck skrev:

> herved er "adderer" man betingelserne og så behøver man ikke lave den øvrige
> if-struktur om, hvilket jeg ved man skal passe på med for ikke at lave nye
> fejl.

Ja, det er også i orden. Jeg foretrækker blot at have den
'nyttige' del først i en if-sætning.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Dan Storm (03-01-2006)
Kommentar
Fra : Dan Storm


Dato : 03-01-06 21:35

> <?php
> if ($ext != ".pdf"){
> $_SESSION[$besked] = "Du kan kun uploade filer i htm, html eller pdf-format
> !";
> }
> ?>

En måde at gøre det på, samtidig med at gøre det pænt er:

$files = array('.pdf', '.htm', '.html');

if(in_array($ext)) {
   $_SESSION['besked'] = "Du kan kun uploade filer i htm, html eller pdf
format!";
};

> if ($ext != ".pdf || $ext != .htm || $ext != .html"){

Ovenstående virker ikke fordi det er forkert syntaks.
Du sætter alle dine betingelser ind i anførselstegn og betegner det som
en streng der siger at hvi variablen $ext ikke indeholder strengen _.pdf
|| $ext != .htm || $ext != .html_ skal følgende ske...

Den rette syntaks ville være:
if ($ext != ".pdf" || $ext != ".htm" || $ext != ".html"){


--
Dan Storm

http://err0r.dk
storm@err0r.dk

PGP Public key på http://err0r.dk/pubring.pkr

>>> husk på; en ekspert er en person der har begået alle fejl mulige
inden for et bestemt område

Bertel Lund Hansen (03-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-01-06 23:21

Dan Storm skrev:

> if(in_array($ext)) {
>    $_SESSION['besked'] = "Du kan kun uploade filer i htm, html eller pdf
> format!";
> };

Det skal være
if (!in_array($ext)) ...

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Peter Brodersen (04-01-2006)
Kommentar
Fra : Peter Brodersen


Dato : 04-01-06 02:14

On Tue, 03 Jan 2006 21:35:00 +0100, Dan Storm
<shadyz@_REMOVETHIS_err0r.dk> wrote:

>$files = array('.pdf', '.htm', '.html');
>
>if(in_array($ext)) {

... og så skal $files også lige med:

if(!in_array($ext,$files)) {

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Dan Storm (04-01-2006)
Kommentar
Fra : Dan Storm


Dato : 04-01-06 09:06

detaljer... hehe... var træt da jeg skrev det... ;)
--
Dan Storm

http://err0r.dk
storm@err0r.dk

PGP Public key på http://err0r.dk/pubring.pkr

>>> husk på; en ekspert er en person der har begået alle fejl mulige
inden for et bestemt område

Jakob Munck (04-01-2006)
Kommentar
Fra : Jakob Munck


Dato : 04-01-06 10:50

jeg takker for kyndig hjælp.

jm



Benny Andersen (05-01-2006)
Kommentar
Fra : Benny Andersen


Dato : 05-01-06 12:56

>if ($ext== ".pdf" || $ext== ".htm" || $ext== ".html")
gørnoget();
Godt nok nogle smarte == operatorer man har i php, jeg havde forventet
at man skulle bruge strcmp. Har selfølgeligt lige testet - og den er
god nok med ==

Hvis man ikke er helt sikker på at $ext er af typen string, er det en
god ide at bruge ===, idet udtrykket
$a=== $b
altid er falsk, hvis blot en af siderne ikke er af typen streng.

Mvh Benny Andersen


Bertel Lund Hansen (05-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 05-01-06 13:52

Benny Andersen skrev:

> Godt nok nogle smarte == operatorer man har i php

Det kan man mene. Indtil jeg lærte C, havde jeg aldrig kendt
andet (altså end simpel sammenligning af to strenge). Jeg havde
brugt Basic, Comal og Pascal.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste