ASP-alternatief voor PHP's (Empty($var)) functie?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
In php had ik vaak dat ik een bepaalde structuur maakte bij else / if constructies. En het begon dan met het checken of een bepaalde variabel leeg was, en als deze leeg was een standaardwaarde geven. (als er geen categorie is gekozen voor iets, dan word het categorie A)

Nu moet ik ineens een hele website ombouwen van PHP naar ASP en kom ik knel te zitten met deze functie. De empy functie van PHP zit niet 1:1 in ASP, maar de isNull en isNothing functies in ASP krijg ik niet aan de praat en lijken ook niet direct voor dat doel geschikt te zijn.. Wie o wie kan mij vertellen of er een asp functie is als php's empty?

This space is occupied


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
IsEmpty() :?

[ Voor 72% gewijzigd door RobIII op 19-06-2009 19:03 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Rob: die reageert net iets anders dan de empty-functie van PHP. For one thing: in PHP returnt empty($var) ook true als $var een nullwaarde bevat.

Collaborator: wat let je om zelf een functie te schrijven die wél voldoet? Daarnaast: Waar hoort mijn topic? Sticky's doorlezen is iets dat ik toch wel verwacht van iemand die hier al zo'n 7 jaar rondloopt. ;)

WEB>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • smesjz
  • Registratie: Juli 2002
  • Niet online
Met klassieke ASP deed ik altijd (lang geleden):

if request("blabla") <> "" then

else

end if

Volgens mij gaat dat ook goed met Option Strict. Ik ga er even vanuit dat je het met gebruikers input wil testen dat via de POST/GET binnen komt.

Overigens voor isnull moet je in ASP/vbscript toch echt iets gebruiken als dit:

dim blabla
set blabla = null
response.write isnull(blabla) // Geeft volgens mij true terug.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

null bestaat toch niet in VBScript? Daar heet het toch Nothing? En verder: Request("iets") gaat voor zover ik weet (ASP is lang geleden voor mij) de mist in als je niet daadwerkelijk een variabele die zo heet meegeeft aan je querystring, etc. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
smesjz schreef op vrijdag 19 juni 2009 @ 19:43:
Met klassieke ASP deed ik altijd (lang geleden):

if request("blabla") <> "" then

else

end if
Je hebt Empty en je hebt een lege string. Dat zijn 2 verschillende dingen.
NMe schreef op vrijdag 19 juni 2009 @ 20:25:
null bestaat toch niet in VBScript? Daar heet het toch Nothing?
Nee hoor. Je hebt Empty, Null en Nothing. Alle 3 een andere betekenis/toepassing.
Empty
Used to indicate an uninitialized variable value. A variable value is uninitialized when it is first created and no value is assigned to it, or when a variable value is explicitly set to empty.

Nothing
Used to indicate an uninitialized object value, or to disassociate an object variable from an object to release system resources.

Null
Used to indicate that a variable contains no valid data. One way to think of Null is that someone has explicitly set the value to "invalid", unlike Empty where the value is "not set".
NMe schreef op vrijdag 19 juni 2009 @ 20:25:
En verder: Request("iets") gaat voor zover ik weet (ASP is lang geleden voor mij) de mist in als je niet daadwerkelijk een variabele die zo heet meegeeft aan je querystring, etc. :)
Nope. Werkt gewoon en geeft in dat geval dus gewoon Empty terug.

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<pre>
<%
response.write request.querystring("a") & vbCrLf
response.write (request.querystring("a") = "") & vbCrLf
response.write IsEmpty(request.querystring("a")) & vbCrLf

response.write request.querystring("b") & vbCrLf
response.write (request.querystring("b") = "") & vbCrLf
response.write IsEmpty(request.querystring("b")) & vbCrLf

response.write request.querystring("c") & vbCrLf
response.write (request.querystring("c") = "") & vbCrLf
response.write IsEmpty(request.querystring("c")) & vbCrLf
%>
</pre>

Aanroepen met:
http://blabla.foo/test.asp?a=1&b=

Geeft:
code:
1
2
3
4
5
6
7
8
9
1
False
False

True
False

True
True

[ Voor 6% gewijzigd door RobIII op 19-06-2009 21:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
NMe schreef op vrijdag 19 juni 2009 @ 19:36:
Collaborator: wat let je om zelf een functie te schrijven die wél voldoet? Daarnaast: Waar hoort mijn topic? Sticky's doorlezen is iets dat ik toch wel verwacht van iemand die hier al zo'n 7 jaar rondloopt. ;)

WEB>>PRG
Sorry, ik had juist wel de sticky's gelezen, maar perongeluk de tekst over Programming gelezen alsof hij over Webdesign, Markup & Clientside Scripting ging. Vandaar het verkeerd geplaatste topic :)

Het verbaasde me dat er eigenlijk niet zo heel veel over te vinden was toen ik aan het zoeken was naar een functie om te kijken of een variabel leeg was. Ik heb verschillende scripts die ik vond geprobeerd en natuurlijk zelf vanalles gebrouwd, maar asp werkt toch allemaal net even wat anders dan php waar ik normaal mee werk, en juist zoeits simpels was vrijwel niks over te vinden.

Ik wil niet zozeer weten of hij leeg (of null of iets anders) is maar domweg of hij al een waarde heeft, en als hij dat niet had een standaardwaarde geven. Dit gebruik ik om verschillende includes te laden. Het script zorg er dus voor dat de content op de website terecht komt afhankelijk van de variabel.

Wat ik in php altijd deed was de volgende opzet
if (empty($cat))
{ cat = "a"}

elseif (cat = "a")
{ optie a }

elseif (cat = "b")
{optie b}

elseif (cat = "c")
{optie c}

[ Voor 4% gewijzigd door Collaborator op 19-06-2009 22:09 ]

This space is occupied


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Collaborator schreef op vrijdag 19 juni 2009 @ 22:08:
Ik wil niet zozeer weten of hij leeg (of null of iets anders) is maar domweg of hij al een waarde heeft, en als hij dat niet had een standaardwaarde geven.
Dan gebruik je in PHP alvast de verkeerde functie; je moet dan isset hebben. Kijk eens naar de return values op deze pagina. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
NMe schreef op zaterdag 20 juni 2009 @ 00:35:
[...]

Dan gebruik je in PHP alvast de verkeerde functie; je moet dan isset hebben. Kijk eens naar de return values op deze pagina. ;)
I see! Dat wist ik niet, anders had ik die namelijk wel gebruikt, echter kom ik wel altijd prima uit met de empty functie, is dat dan zo verkeerd?
Als ik dan naar een asp gelijkwaardige functie zoek krijg je weer de ifnull ifempy functies etc..

[ Voor 10% gewijzigd door Collaborator op 20-06-2009 09:49 ]

This space is occupied


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
code:
1
2
3
4
5
6
7
8
9
10
{ cat = "a"}

elseif (cat = "a") 
{ optie a }

elseif (cat = "b")
{optie b}

elseif (cat = "c")
{optie c}


Kun je toch veel beter schrijven als
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch(waarde){
    case "a":
      break;
    case "b":
       break
    default:
       break;
}

of

if(a){
}else if(b){
}else{ //lege else is laatste mogelijkheid of de variabele is de laatste mogelijkheid of hij is null 
//en dan wil je ook deze case (de default case dus als laatste)
}


Zo komt de variabele dus altijd geinitialiseerd uit het switch blok en hoef je niet te checken op ifnull/ifempty/etc. (Tenminste ik geloof dat dit goed gaat heel misschien krijg je een compiler warning "might not have been initialised" want ik weet niet 100% zeker of ASP een switch toestaat op een variabele die misschien null is, maar ik denk het wel.)

[ Voor 13% gewijzigd door roy-t op 20-06-2009 11:09 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

Verwijderd

Dat is dan wel asp j-script.

Meetsal wordt vbscript gebruikt in asp

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select case waarde
case "a"
 doe iets
 case "b"
doe iets
case else
doe de default
end select

if a then

elseif b then

else

end if

Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
Eindigen met een else is niet altijd wenselijk in dit geval, aangezien je dan soms dubbele inhoud hebt in je code

Helaas moet ik in dit geval werken met grote lappen text content in de code, en die wil ik niet overal dubbel hebben. Er word niet met includes gewerkt (in het geval van content, wel in het geval van navigatie natuurlijk wel) Dan is het natuurlijk veel effcienter om gewoon vantevoren even te kijken of een variabel leeg is dan alles maar lekker dubbel erin te zetten..
daarnaast wil ik eigenlijk altijd een value hebben, omdat gewoon alles van de pagina gebaseerd is op de categorie / pagina variabelen, dus leeg is dan geen mogelijkheid. Leeg = home, en als ie niet leeg is heeft de gebruiker blijkbaar ergens op geklikt ;)

[ Voor 20% gewijzigd door Collaborator op 20-06-2009 23:42 ]

This space is occupied


Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
PHP porten naar ASP classic? Ik neem aan dat je in de gaten hebt dat je 10 jaar terug gaat in de tijd. Je springt op de boot die de kapitein (MS) al met de laatste reddingssloep heeft verlaten.

Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
Cousin Boneless schreef op zondag 21 juni 2009 @ 04:11:
PHP porten naar ASP classic? Ik neem aan dat je in de gaten hebt dat je 10 jaar terug gaat in de tijd. Je springt op de boot die de kapitein (MS) al met de laatste reddingssloep heeft verlaten.
hey ik had de website klaar in php, en toen kwam de beheerder van het domein waar het op moest komen te staan met de leuke mededeling dat het alleen in ASP mocht.. |:(

This space is occupied


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat klinkt nou typisch als een requirement die je van tevoren hoort uit te zoeken. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
NMe schreef op maandag 22 juni 2009 @ 00:24:
Dat klinkt nou typisch als een requirement die je van tevoren hoort uit te zoeken. :+
De website zou eerst in een web 'builder' gebouwd worden. het grootste deel van het project ging meer om de inhoud en indeling goed overdenken, de techniek en realisatie was meer een afrondende fase. Uiteindelijk kwam ik er op uit dat de builer te beperkend zou zijn om de gewenste site in te kunnen realiseren.

Daarom heb ik hem toen in PHP gebouwd om aan te tonen hoe hij zou moeten worden (met in het achterhoofd wel ervanuitgaande dat een fatsoenlijke server toch wel minstens php zou ondersteunen.. maargoed dat is mijn fout inderdaad) Pas na de presentatie werd er toegang gegeven tot de server.

This space is occupied


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Beginnersfout dus. Als je een site gaat maken gewoon eerst je requirements duidelijk maken. In jouw geval oa. dat je een hostingpartij wil die PHP ondersteunt. Kun je niet gewoon contact opnemen met je klant en een andere hostingpartij uitzoeken? Dan ben je ook klaar zonder terug te grijpen naar een verouderde taal.

Acties:
  • 0 Henk 'm!

  • Collaborator
  • Registratie: April 2002
  • Laatst online: 19-08 12:03

Collaborator

You! Cake or Death?

Topicstarter
Cartman! schreef op maandag 22 juni 2009 @ 10:17:
Beginnersfout dus. Als je een site gaat maken gewoon eerst je requirements duidelijk maken. In jouw geval oa. dat je een hostingpartij wil die PHP ondersteunt. Kun je niet gewoon contact opnemen met je klant en een andere hostingpartij uitzoeken? Dan ben je ook klaar zonder terug te grijpen naar een verouderde taal.
De site die gemaakt is hoort bij een grotere website, en de server gaan ze no way veranderen. Ik heb trouwens niet gezegd dat het niet in Asp.net mocht/kon.. maar het gaat om slechts enkele if / else constructies en includes, om dat om te zetten naar asp is een kleine stap in verhouding met asp.net.

Ik weet dat we bij tweakers de neiging hebben om meteen het beste/nieuwste te pakken, en asp is idd niet de jongste, maar goed dit advies kreeg ik van de beheerder, het alternatief was permantent de website op mijn domein laten staan en een redirect op de server maken, maar dat is nou niet echt ideaal.

Anyway, met de Len functie kom je al een heel eind.. aangezien de variabelen vaste waardes hebben die ik zelf ingesteld heb kan ik zelf zeggen dat als een variabel korter als 2 (of 1) is hij als leeg beschouwd mag worden.

[ Voor 9% gewijzigd door Collaborator op 22-06-2009 11:03 ]

This space is occupied


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ehm... 8)7

Visual Basic .NET:
1
2
3
Function MyEmpty(var)
  MyEmpty = IsNull(var) Or IsNothing(var) Or IsEmpty(var) Or (var = 0) Or (var = "") Or (IsArray(var) And (UBound(var) = 0))
End Function

Die zou precies hetzelfde moeten doen als de PHP-versie? :)

Disclaimer: uit de losse pols geschreven en mijn VBS-kennis is redelijk roestig. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NMe schreef op maandag 22 juni 2009 @ 11:30:
Die zou precies hetzelfde moeten doen als de PHP-versie? :)
VBS doet niet aan short-circuit evaluation* dus als een var Nothing zou zijn klapt 'ie (bijv.) op de "var = 0" omdat je een object (Nothing is een object ja) niet met 0 kan vergelijken (tenzij, en nu maken we het nog moeilijker :P ) de default property een int zou zijn; maar dat gaat alsnog mis omdat de var Nothing is dus die property niet kan hebben :P Zou var een object anders dan Nothing zijn dan mag je comparison (op die default property, if any, na dan) ook niet, want daar is de "is" operator voor :Y)

Je zult dus met een hele zooi nested-if's moeten gaan werken ;) Of... On Error Resume Next :X :P :+

* = De hele expressie wordt altijd geëvalueerd.

[ Voor 24% gewijzigd door RobIII op 22-06-2009 11:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1