Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 20-07-2004, 00:03
Krekker
Krekker is offline
Ik heb vandaag een beetje zitten experimenteren met het installeren en gebruiken van een webserver (apache 2.0.39) en php (laatste versie 4 geloof ik).
Ik heb hier voor mn neus ook een beginnershandleiding php liggen met de volgende twee scripts:

HTML- formulier
Code:
<html>
<head>
<title>HTML-formulier</title>
</head>

<body>
<form action="HandleForm.php" method=post>
Voornaam <input type=text name="Voornaam" size=20></br>
Achernaam <input type=text name="Achternaam" size=40></br>
E-mailadres <input type=text name="Email" size=60></br>
Commentaar <textarea name="Commentaar" rows=5 cols=40></textarea></br>
<input type=submit name="submit" value="Verzenden!">
</form>
</body>
</html>
HandleForm.php (uiteraard met nog wat html codes eromheen)
PHP-code:
print ("Uw voornaam is $Voornaam.</br>\n");
print (
"Uw achternaam is $Achternaam.</br>\n");
print (
"Uw e-mailadres is $Email.</br>\n");
print (
"U had dit te zeggen:</br>\n $Commentaar</br>\n");
?> 
Als ik het formulier invul en verstuur krijg ik echter dit:

Notice: Undefined variable: Voornaam in C:\Apache2\htdocs\HandleForm.php on line 8
Uw voornaam is .

Notice: Undefined variable: Achternaam in C:\Apache2\htdocs\HandleForm.php on line 9
Uw achternaam is .

Notice: Undefined variable: Email in C:\Apache2\htdocs\HandleForm.php on line 10
Uw e-mailadres is .

Notice: Undefined variable: Commentaar in C:\Apache2\htdocs\HandleForm.php on line 11
U had dit te zeggen:

Ik denk dat het iets te maken heeft met mn php configuratie, maar ik kan niet bedenken wat het zou kunnen zijn. Kan iemand mij helpen aub. Want voor zover ik weet hoef je in php variabelen niet de definiiëren.
Met citaat reageren
Advertentie
Oud 20-07-2004, 05:36
dafelix
Avatar van dafelix
dafelix is offline
Citaat:
Krekker schreef op 20-07-2004 @ 01:03 :

PHP-code:
print ("Uw voornaam is $_POST['Voornaam'].</br>\n");
print (
"Uw achternaam is $_POST['Achternaam'].</br>\n");
print (
"Uw e-mailadres is $_POST['Email'].</br>\n");
print (
"U had dit te zeggen:</br>\n $_POST['Commentaar']</br>\n");
?> 
__________________
$karma++;
Met citaat reageren
Oud 20-07-2004, 07:42
Verwijderd
Bij nieuwere versies van PHP staat auto_globals uit..
Met citaat reageren
Oud 20-07-2004, 07:52
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
******** schreef op 20-07-2004 @ 08:42 :
Bij nieuwere versies van PHP staat auto_globals uit..
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 09:27
Verwijderd
Bedoel je niet register_globals?
Met citaat reageren
Oud 20-07-2004, 10:07
Krekker
Krekker is offline
Kan ik dat ook gewoon aanzetten?

Edit:
Dit werkt trouwens niet:
Citaat:
dafelix schreef op 20-07-2004 @ 06:36 :

PHP-code:
print ("Uw voornaam is $_POST['Voornaam'].</br>\n");
print (
"Uw achternaam is $_POST['Achternaam'].</br>\n");
print (
"Uw e-mailadres is $_POST['Email'].</br>\n");
print (
"U had dit te zeggen:</br>\n $_POST['Commentaar']</br>\n");
?> 
Dit darentegen wel:
PHP-code:
print ("Uw voornaam is $_POST[Voornaam].</br>\n");
print (
"Uw achternaam is $_POST[Achternaam].</br>\n");
print (
"Uw e-mailadres is $_POST[Email].</br>\n");
print (
"U had dit te zeggen:</br>\n $_POST[Commentaar]</br>\n");
?> 

Laatst gewijzigd op 20-07-2004 om 10:11.
Met citaat reageren
Oud 20-07-2004, 10:11
Verwijderd
Citaat:
Krekker schreef op 20-07-2004 @ 11:07 :
Kan ik dat ook gewoon aanzetten?

Edit:
ja, staat in de php.ini
Met citaat reageren
Oud 20-07-2004, 10:27
Krekker
Krekker is offline
Bedankt allemaal, nu werkt dat in ieder geval wel, maar er zijn nog twee problemen.

Het eerste is dat als ik meerdere regels typ in de textarea, dit wordt weergegeven op één regel. Kan daar iets aan gedaan worden?

Het tweede is dat het volgende script:
PHP-code:
if ($waarde) {
        print (
"$waarde");
              }
?> 
de volgende foutmelding geeft als er niks voor $waarde wordt opgegeven:

Notice: Undefined variable: waarde in C:\Apache2\htdocs\test2.php on line 2

Is dit ook weer een irritante wijziging in php? En kan ik dit ook weer terugzetten naar de oude instellingen?
Met citaat reageren
Oud 20-07-2004, 11:02
Verwijderd
In een textarea zijn de enters dus een \n,
een enter in html is <br />

nl2br() will do the trick..
Met citaat reageren
Oud 20-07-2004, 11:11
Krekker
Krekker is offline
Citaat:
********** schreef op 20-07-2004 @ 12:02 :
In een textarea zijn de enters dus een \n,
een enter in html is <br />

nl2br() will do the trick..
En tussen de haakjes moet de variabele neem ik aan.

Edit: Ja, ik heb het al uitgevogeld. Nu dat tweede probleem nog.

Pff, wat kunnen dit soort dingen toch irritant zijn af en toe!

Laatst gewijzigd op 20-07-2004 om 11:15.
Met citaat reageren
Oud 20-07-2004, 11:30
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
Citaat:
Krekker schreef op 20-07-2004 @ 11:27 :
Bedankt allemaal, nu werkt dat in ieder geval wel, maar er zijn nog twee problemen.

Het eerste is dat als ik meerdere regels typ in de textarea, dit wordt weergegeven op één regel. Kan daar iets aan gedaan worden?

Het tweede is dat het volgende script:
PHP-code:
if ($waarde) {
        print (
"$waarde");
              }
?> 
de volgende foutmelding geeft als er niks voor $waarde wordt opgegeven:

Notice: Undefined variable: waarde in C:\Apache2\htdocs\test2.php on line 2

Is dit ook weer een irritante wijziging in php? En kan ik dit ook weer terugzetten naar de oude instellingen?
PHP-code:

if (isset($waarde)) { .... } 
Met citaat reageren
Oud 20-07-2004, 11:42
Krekker
Krekker is offline
Citaat:
Fade of Light schreef op 20-07-2004 @ 12:30 :
PHP-code:

if (isset($waarde)) { .... } 
Is het niet zo dat isset juist false geeft als de variabele is toegewezen? (zo staat het tenminste in het boek dat ik voor mn neus heb liggen, miscchien is het een goed idee om dat ding maar uit het raam te flikkeren )

Edit: het werkt op die manier idd wel.

*boek uit het raam gooit*
Met citaat reageren
Oud 20-07-2004, 11:56
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
http://nl3.php.net/manual/en/function.isset.php

Returns TRUE if var exists; FALSE otherwise.

Jouw manier zal FALSE teruggeven als de waarde 0 is, of boolean FALSE, dit terwijl de waarde wel toegewezen is, de variabele bestaat. Daarom kun je beter isset gebruiken.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 11:59
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
PHP-code:
function viewarray($arr)
{
 echo(
'<table cellpadding="0" cellspacing="0" border="1">');
 foreach ((array)
$arr as $key1 => $elem1)
 {
  echo(
'<tr>');
  echo(
'<td>'.$key1.'&nbsp;</td>');
  if (
is_array($elem1))
   
extarray($elem1);
  else
   echo(
'<td>'.$elem1.'&nbsp;</td>');
  echo(
'</tr>');
 }
 echo(
'</table>');
}

function 
extarray($arr)
{
 echo(
'<td>');
 echo(
'<table cellpadding="0" cellspacing="0" border="1">');
 foreach (
$arr as $key => $elem)
 {
  echo(
'<tr>');
  echo(
'<td>'.$key.'&nbsp;</td>');
  if (
is_array($elem))
   
extArray($elem);
  else
   echo(
'<td>'.htmlspecialchars($elem).'&nbsp;</td>');
  echo(
'</tr>');
 }
 echo(
'</table>');
 echo(
'</td>');

Include deze functie eens, en doe dan viewarray($_POST);
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 11:59
Krekker
Krekker is offline
Dan wil ik hierbij "PHP voor het world wide web" van Larry Ullman aan iedereen afraden.

Laatst gewijzigd op 20-07-2004 om 12:06.
Met citaat reageren
Oud 20-07-2004, 12:00
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Krekker schreef op 20-07-2004 @ 12:59 :
Dan wil ik hierbij "PHP voor het world wide web" van Larry Ullman aan iedereen afraden.
Wat staat er dan letterlijk?

Staat er niet !isset() ?
Het uitroepteken geldt als een NOT operator, dus die draait het zaakje om.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 12:06
Krekker
Krekker is offline
Citaat:
Enlightenment schreef op 20-07-2004 @ 13:00 :
Wat staat er dan letterlijk?

Staat er niet !isset() ?
Het uitroepteken geldt als een NOT operator, dus die draait het zaakje om.
Oeps, ik heb gewoon verkeerd gelezen. Er staat het volgende:
Citaat:
U kun ook met de functie isset() bepalen of een variabele al dan niet bestaat. Deze functie zal, anders dan wanneer u gewoon op naam aan een variabele zou refereren, zoals we dat hier tot dusver gedaan hebben, TRUE leveren als de variabele gelijk is aan nul. Bijvoorbeeld:
PHP-code:
$aantal 0
   
if ($aantal) { ... // FALSE
   
if (isset($aantal)) { ... // TRUE 
Met citaat reageren
Oud 20-07-2004, 12:11
Krekker
Krekker is offline
Citaat:
Enlightenment schreef op 20-07-2004 @ 12:59 :
PHP-code:
function viewarray($arr)
{
 echo(
'<table cellpadding="0" cellspacing="0" border="1">');
 foreach ((array)
$arr as $key1 => $elem1)
 {
  echo(
'<tr>');
  echo(
'<td>'.$key1.'&nbsp;</td>');
  if (
is_array($elem1))
   
extarray($elem1);
  else
   echo(
'<td>'.$elem1.'&nbsp;</td>');
  echo(
'</tr>');
 }
 echo(
'</table>');
}

function 
extarray($arr)
{
 echo(
'<td>');
 echo(
'<table cellpadding="0" cellspacing="0" border="1">');
 foreach (
$arr as $key => $elem)
 {
  echo(
'<tr>');
  echo(
'<td>'.$key.'&nbsp;</td>');
  if (
is_array($elem))
   
extArray($elem);
  else
   echo(
'<td>'.htmlspecialchars($elem).'&nbsp;</td>');
  echo(
'</tr>');
 }
 echo(
'</table>');
 echo(
'</td>');

Include deze functie eens, en doe dan viewarray($_POST);
Leuk en aardig, maar ik moet ook nog begrijpen wat ik doe. En bovendien heb ik niet een doel met mijn code, meer met mijn codeerwerk. (leren php te schrijven)
Met citaat reageren
Oud 20-07-2004, 12:12
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Ja dat is dus correct. Daarom dien je eigenlijk altijd isset te gebruiken, of $var === true in het geval van een boolean-check.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 12:13
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Krekker schreef op 20-07-2004 @ 13:11 :
Leuk en aardig, maar ik moet ook nog begrijpen wat ik doe. En bovendien heb ik niet een doel met mijn code, meer met mijn codeerwerk. (leren php te schrijven)
ViewArray is een functie uit de reakties op php.net. Het laat zien wat er in de $_POST array zit. Zeer handig voor debuggen. [blah] moet je namelijk nooit gebruiken als array element, altijd ['blah'].
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 20-07-2004, 12:34
Krekker
Krekker is offline
Het is waarschijnlijk een gigantische noob vraag, maar wat is een boolean-check?
Met citaat reageren
Oud 20-07-2004, 16:08
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
Citaat:
Krekker schreef op 20-07-2004 @ 13:34 :
Het is waarschijnlijk een gigantische noob vraag, maar wat is een boolean-check?
Kijken of een boolean variabele (een variabele met als type boolean (boolean is een type dat alleen de waarde true of false aannemen)) true of false is.
Met citaat reageren
Oud 20-07-2004, 18:09
Verwijderd
Citaat:
********** schreef op 20-07-2004 @ 10:27 :
Bedoel je niet register_globals?
Ja

Het wordt trouwens afgeraden deze aan te zetten. Ten eerste omdat het gewoon slordig programmeren is en ten tweede omdat je code hierdoor dus niet meer overal werkt, aangezien hosting providers het ook steeds vaker uitzetten.

Zelf gebruik ik altijd de $HTTP_POST_VARS array. En als ik wil controleren of een waarde bestaat, gebruik ik de array_key_exists() functie.
Met citaat reageren
Oud 20-07-2004, 20:06
Vinnie Paz
Vinnie Paz is offline
Citaat:
******** schreef op 20-07-2004 @ 19:09 :

Zelf gebruik ik altijd de $HTTP_POST_VARS array. En als ik wil controleren of een waarde bestaat, gebruik ik de array_key_exists() functie.
is isset() dan niet makkelijker of heb jij het ergens anders over, want k ken die functie helemaal niet
Met citaat reageren
Oud 20-07-2004, 21:23
Verwijderd
Citaat:
******** schreef op 20-07-2004 @ 19:09 :
Ja

Het wordt trouwens afgeraden deze aan te zetten. Ten eerste omdat het gewoon slordig programmeren is en ten tweede omdat je code hierdoor dus niet meer overal werkt, aangezien hosting providers het ook steeds vaker uitzetten.

Zelf gebruik ik altijd de $HTTP_POST_VARS array. En als ik wil controleren of een waarde bestaat, gebruik ik de array_key_exists() functie.
hmm slordig.. ik vind het zelf wel meevallen.. maja wie ben ik .. een php-eitje.. die net de doorsnee array en de functie doorheeft ..

op naar de classes
Met citaat reageren
Advertentie
Oud 21-07-2004, 08:19
Verwijderd
Citaat:
Vinnie Paz schreef op 20-07-2004 @ 21:06 :
is isset() dan niet makkelijker of heb jij het ergens anders over, want k ken die functie helemaal niet
Het resultaat van isset() is hetzelfde en isset($array[$key]) zal ook werken, maar je doet in feite nog steeds iets dat niet mag: je refereert naar een element in een array dat niet bestaat. De ontwikkelaars van PHP hebben het je gewoon makkelijker gemaakt door die foutmelding te onderdrukken, maar het blijft niet netjes.

Citaat:
SE schreef op 20-07-2004 @ 22:23 :
hmm slordig.. ik vind het zelf wel meevallen..
Onder programmeurs gezegd, is het "Quick 'n' Dirty"
Met citaat reageren
Oud 21-07-2004, 12:00
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
******** schreef op 21-07-2004 @ 09:19 :
De ontwikkelaars van PHP hebben het je gewoon makkelijker gemaakt door die foutmelding te onderdrukken, maar het blijft niet netjes.
Nee hoor, het is gewoon zo gedefinieerd. Isset($array[key]) is niet fout, en bovendien een stuk minder omslachtig.

Wat betreft regiter_globals aanzetten heb je wel gelijk. Het is gewoon fout, en je leert jezelf de verkeerde dingen aan.
Met citaat reageren
Oud 21-07-2004, 12:17
Verwijderd
Citaat:
Chimera schreef op 21-07-2004 @ 13:00 :
Nee hoor, het is gewoon zo gedefinieerd. Isset($array[key]) is niet fout, en bovendien een stuk minder omslachtig.
Ik ben het met ******** eensch.
Wanneer je wilt weten of een array key bestaat, moet je array_key_exists() gebruiken; niet isset. De eerste is leesbaarder voor jezelf en anderen. Verder denk ik dat array_key_exists ook sneller is dan isset, maar dat is een gok van mijn kant.
Met citaat reageren
Oud 21-07-2004, 13:04
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Er is wel wat voor te zeggen dat array_key_exists() correcter is, maar het is echt teveel typewerk om het ook daadwerklijk te gebruiken, IMHO. Het zou trouwens wel best kunnen dat array_key_exists() iets sneller is, hoewel isset() waarschijnlijk vrij hard geoptimaliseerd is.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 21-07-2004, 14:18
Verwijderd
teveel typewerk is een n00b argument; een beetje texteditor heeft shortcuts en code completion etc.

Verder vind ik de functie isset kompleet overbodig; waarom zou je moeten controleren of een variabele bestaat? Ga je conditioneel variabelen aanmaken ofzo Dit is, zoals ******** al zei, Quick-n-Dirty...
Met citaat reageren
Oud 21-07-2004, 14:41
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
eddie schreef op 21-07-2004 @ 13:17 :
Ik ben het met ******** eensch.
Wanneer je wilt weten of een array key bestaat, moet je array_key_exists() gebruiken; niet isset. De eerste is leesbaarder voor jezelf en anderen. Verder denk ik dat array_key_exists ook sneller is dan isset, maar dat is een gok van mijn kant.
Wel een hele wilde gok.

Het is een kwestie van voorkeuren, "is gezet" of "bestaat" maakt niks uit, voordeel is dat je isset() consequent kan gebruiken, en array_key_exists natuurlijk alleen op arrays werkt.
Met citaat reageren
Oud 21-07-2004, 14:43
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
eddie schreef op 21-07-2004 @ 15:18 :
Verder vind ik de functie isset kompleet overbodig; waarom zou je moeten controleren of een variabele bestaat?
Je wil weten of een variabele toegewezen is, niet of 'ie bestaat. Het is exact hetzelfde als een if(foo != null) in strongly typed talen.
Met citaat reageren
Oud 21-07-2004, 14:53
Verwijderd
Citaat:
Chimera schreef op 21-07-2004 @ 15:43 :
Je wil weten of een variabele toegewezen is, niet of 'ie bestaat. Het is exact hetzelfde als een if(foo != null) in strongly typed talen.
Helaas; de omschrijving op nl.php.net zegt:
Citaat:
isset -- Controleer of een variabele bestaat
Dus niet of deze is toegewezen (dat je hem daarvoor kunt gebruiken is een bijkomstigheid). Dat PHP on-the-fly variabelen aanmaakt, is naar mijn idee een fout van PHP.
Voor jou controle heb je is_null() (en consorten)
Met citaat reageren
Oud 21-07-2004, 14:58
Verwijderd
Citaat:
Chimera schreef op 21-07-2004 @ 15:41 :
Wel een hele wilde gok.
Correct Ik heb het even getest met PHP 5.0 met de volgende code:

PHP-code:
<?php
// Array gejat van php.net voorbeeldje
$vHost = array(
   
'yilan' => 'yilan.index.php',
   
'yl' => 'http://oo8h.com',
   
'ice' => 'http://oo8h.com/about.php',
   
'ise' => 'nce.index.php',
);

$totaalissset 0;
$totaalarraykey 0;

for( 
$i 0$i 10000$i++)
{
    
$begin microtime();
    
$a = isset( $vHost'yilan' ] );
    
$eind microtime();
    
$totaalissset += $eind $begin;
};

for( 
$i 0$i 10000$i++)
{
    
$begin microtime();
    
$a array_key_exists('yilan'$vHost ) ;
    
$eind microtime();
    
$totaalarraykey += $eind $begin;
};

echo 
'isset   : ' $totaalissset "\n";
echo 
'arraykey: ' $totaalarraykey "\n";
echo 
'diff        : ' abs$totaalissset $totaalarraykey ) . "\n";
;
?>
(soms krijg ik een negatief getal )
isset is iets sneller dan array_key_existst. Op mijn computer dan.
Citaat:
Chimera schreef op 21-07-2004 @ 15:41 :

Het is een kwestie van voorkeuren, "is gezet" of "bestaat" maakt niks uit, voordeel is dat je isset() consequent kan gebruiken, en array_key_exists natuurlijk alleen op arrays werkt.
isset moet je helemaal niet willen gebruiken... dat is sloppy programming
Met citaat reageren
Oud 21-07-2004, 15:05
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
Citaat:
eddie schreef op 21-07-2004 @ 15:53 :
[B]Helaas; de omschrijving op nl.php.net zegt:
Aangezien je in php niet hoeft te declareren, kun je dat als hetzelfde opvatten?
Met citaat reageren
Oud 21-07-2004, 15:25
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
eddie schreef op 21-07-2004 @ 15:53 :
Helaas; de omschrijving op nl.php.net zegt:
Wat de omschrijving zegt boeit me weinig, de nederlandse vertaling is echt bar en bar slecht.

Citaat:
eddie schreef op 21-07-2004 @ 15:53 :

Dus niet of deze is toegewezen (dat je hem daarvoor kunt gebruiken is een bijkomstigheid). Dat PHP on-the-fly variabelen aanmaakt, is naar mijn idee een fout van PHP.
Zal wel, dan moet je geen PHP maar C# ofzo gebruiken. Isset staat gewoon letterlijk voor "is gezet", lijkt me erg duidelijk waar die functie voor is.

Citaat:
eddie schreef op 21-07-2004 @ 15:58 :
isset moet je helemaal niet willen gebruiken... dat is sloppy programming
Is dat zo...
Met citaat reageren
Oud 21-07-2004, 15:54
dafelix
Avatar van dafelix
dafelix is offline
laten we ophouden met de discussie of we isset() nou wel of niet moeten gebruiken, en weer ontopic gaan
__________________
$karma++;
Met citaat reageren
Oud 21-07-2004, 16:11
Verwijderd
Citaat:
dafelix schreef op 21-07-2004 @ 16:54 :
laten we ophouden met de discussie of we isset() nou wel of niet moeten gebruiken, en weer ontopic gaan
mwah... het antwoord is al gegeven en TS heeft het volgens mij al opgelost
Met citaat reageren
Oud 21-07-2004, 16:23
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Wat mij betreft mogen jullie semi-offtopic gaan, ik ben daar niet zo heel strict in.

Voorwaarden:
  • De topicstarter moet enigszins al antwoord hebben, offtopic-chat mag hem of haar niet storen in het antwoord krijgen op zijn/haar vraag of probleem.
  • De semi-offtopic discussie moet niveau hebben, geen onzin-chat (humor/grapje mag natuurlijk wel)
  • De semi-offtopic discussie moet een vriendelijk karakter hebben; flamewars zijn hier niet welkom
Maar misschien denken mijn collegae (Manuz en ekki) er anders over, dus onder voorbehoud.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 21-07-2004, 16:37
Verwijderd
Citaat:
Chimera schreef op 21-07-2004 @ 16:25 :
Wat de omschrijving zegt boeit me weinig, de nederlandse vertaling is echt bar en bar slecht.
Ok, dan van de engelse site:
Citaat:
Returns TRUE if var exists; FALSE otherwise.
exists --> bestaat

Citaat:
Chimera schreef op 21-07-2004 @ 16:25 :

Zal wel, dan moet je geen PHP maar C# ofzo gebruiken. Isset staat gewoon letterlijk voor "is gezet", lijkt me erg duidelijk waar die functie voor is.
Zie hierboven. De functie is duidelijk bedoeld om te controleren of een variabele bestaat (dat het niet zo werkt daar kan ik niks aan doen).

Citaat:
Chimera schreef op 21-07-2004 @ 16:25 :
Is dat zo...
Met citaat reageren
Oud 21-07-2004, 16:41
Verwijderd
Citaat:
Fade of Light schreef op 21-07-2004 @ 16:05 :
Aangezien je in php niet hoeft te declareren, kun je dat als hetzelfde opvatten?
Je moet òf alle variabelen initialiseren (declareren) zodat je in de rest van het script niet meer hoeft te controleren of de variabele bestaat, òf je moet overàl controleren of de variabele bestaat.

(vind ik dan)
Met citaat reageren
Oud 21-07-2004, 16:46
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
eddie schreef op 21-07-2004 @ 17:37 :
Zie hierboven. De functie is duidelijk bedoeld om te controleren of een variabele bestaat (dat het niet zo werkt daar kan ik niks aan doen).
Het werkt dus wel zo.

Citaat:
eddie schreef op 21-07-2004 @ 15:53 :
Dat PHP on-the-fly variabelen aanmaakt, is naar mijn idee een fout van PHP.
Dat is dus onzin. PHP is daar juist op gebouwd, dit maakt de taal zo prettig in het gebruik voor beginners.

Ik heb sterk het idee dat isset() in feite precies hetzelfde doet als is_null()... Zie hier wat null inhoudt in PHP.

Overigens ben ik het wat betreft het offtopic-gaan met Enlightenment eensch.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 21-07-2004, 16:49
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
eddie schreef op 21-07-2004 @ 17:41 :
Je moet òf alle variabelen initialiseren (declareren) zodat je in de rest van het script niet meer hoeft te controleren of de variabele bestaat, òf je moet overàl controleren of de variabele bestaat.

(vind ik dan)
En waarom is dat goed? Als ik mijn script goed ken kan ik heus zelf wel bedenken of ik op een bepaalde plek moet checken of een var bestaat of niet. En initialiseren is echt een enorm inhoudsloze bezigheid, alleen maar de naampjes van je variabelen op een rij zetten zonder inhoud omdat je die nog niet weet.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 21-07-2004, 17:08
Verwijderd
Citaat:
Manuzhai schreef op 21-07-2004 @ 17:46 :
Dat is dus onzin. PHP is daar juist op gebouwd, dit maakt de taal zo prettig in het gebruik voor beginners.
En dat maakt het dus makkelijker om bagger code te maken...
Citaat:
Manuzhai schreef op 21-07-2004 @ 17:46 :

Ik heb sterk het idee dat isset() in feite precies hetzelfde doet als is_null()... Zie hier wat null inhoudt in PHP.
PHP geeft bij is_null() een fout indien de variabele niet bestaat; bij isset() niet.
Met citaat reageren
Oud 21-07-2004, 17:14
Vinnie Paz
Vinnie Paz is offline
Citaat:
eddie schreef op 21-07-2004 @ 15:53 :
Helaas; de omschrijving op nl.php.net zegt:

Dus niet of deze is toegewezen (dat je hem daarvoor kunt gebruiken is een bijkomstigheid). Dat PHP on-the-fly variabelen aanmaakt, is naar mijn idee een fout van PHP.
Voor jou controle heb je is_null() (en consorten)
php.net zegt:
Citaat:
isset -- Determine whether a variable is set
het controleert dus of een variable een toegekende waarde heeft(een 0 telt dus ook). En aangezien variable on the fly worden gemaakt komt het precies op hetzelfe neer. Nu weet ik alleen niet wat array_key_exists() oplevert als je een element uit een array eerst set en dan unset. unset() in bv C++(bestaat wel niet voor zover ik weet maar effe in gedachte) zou de gereserveerde geheugen van een variable moeten behouden, maar gewoon de waarde NULL toekennen.
Ik ga trouwens ervan uit dat unset doet wat het zegt, dus toegekende waarde weghalen.

Nu weet ik niet of PHP zo is gemaakt dat op het moment dat unset wordt uitgevoerd de variable als het ware wordt vrijgegeven of dat alleen de waarde naar NULL word gezet.

Als het 2de gebeurd kan je isset() en array_key_exist() gewoon allebei gebruiken zonder dat je het mag uitschelden voor quick 'n dirty, imo.

Maar echt zou heel de variable verwijderd worden dan zou isset() een verkeerde uitkomst geven.
Met citaat reageren
Oud 21-07-2004, 17:15
Verwijderd
Citaat:
Manuzhai schreef op 21-07-2004 @ 17:49 :
En waarom is dat goed? Als ik mijn script goed ken kan ik heus zelf wel bedenken of ik op een bepaalde plek moet checken of een var bestaat of niet. En initialiseren is echt een enorm inhoudsloze bezigheid, alleen maar de naampjes van je variabelen op een rij zetten zonder inhoud omdat je die nog niet weet.
Als jij goed code, dat breng je gedeeltes onder in verschillende functie of zelfs verschillende bestanden. Het is hierdoor (bijna) onmogelijk om met global variabele te werken.

Zolang je er actief mee bezig bent weet je idd welke variabelen er zijn en wanneer. Stop je er een maand mee, dan weet je dat niet meer; net zomin een ander jouw code nog kan volgen.

Dat PHP geen constructies kent zoals
Code:
my ( $var1, $var2, $var3 ) = 0;
(let niet op de naamgeving van de variabelen; het is maar een voorbeeld)
om in één keer een rij variabelen te zetten... tja...

Wanneer jij niet weet van welk type je variabelen moeten worden, klopt je script opbouw niet. Je kunt naar mijn idee altijd een waarde toewijzen aan een variabele -- een waarde die hoogts waarschijnlijk niet voorkomt tijdens het uitvoeren van het script zodat je hierop kunt controleren, ipv het gebruik van isset().
Met citaat reageren
Oud 21-07-2004, 17:18
Verwijderd
Zo een NERD INSIDE ben je niet
Met citaat reageren
Oud 21-07-2004, 17:20
Vinnie Paz
Vinnie Paz is offline
Citaat:
eddie schreef op 21-07-2004 @ 18:15 :
Wanneer jij niet weet van welk type je variabelen moeten worden, klopt je script opbouw niet. Je kunt naar mijn idee altijd een waarde toewijzen aan een variabele -- een waarde die hoogts waarschijnlijk niet voorkomt tijdens het uitvoeren van het script zodat je hierop kunt controleren, ipv het gebruik van isset().
how dit laatste volg ik niet, mar k het het wel met de rest eens. Ik heb het namelijk zelf ook een aantal keer ondervonden. Als je ook maar 2 weken helemaal kapt met een project en je probeert daarna de draad op te pakken dan valt dat niet tegen zonder goede commentaar, duidelijke namen voor je variable
Met citaat reageren
Oud 21-07-2004, 17:26
Verwijderd
Citaat:
Vinnie Paz schreef op 21-07-2004 @ 18:14 :
het controleert dus of een variable een toegekende waarde heeft(een 0 telt dus ook). En aangezien variable on the fly worden gemaakt komt het precies op hetzelfe neer. Nu weet ik alleen niet wat array_key_exists() oplevert als je een element uit een array eerst set en dan unset. unset() in bv C++(bestaat wel niet voor zover ik weet maar effe in gedachte) zou de gereserveerde geheugen van een variable moeten behouden, maar gewoon de waarde NULL toekennen.
Ik ga trouwens ervan uit dat unset doet wat het zegt, dus toegekende waarde weghalen.
PHP-code:
<?php
error_reporting
E_ALL );
$vHost = array(
   
'yilan' => 'yilan.index.php',
   
'yl' => 'http://oo8h.com',
   
'ice' => 'http://oo8h.com/about.php',
   
'ise' => 'nce.index.php',
);
var_dump( isset( $vHost'yilan' ] ) ); // true
var_dump($vHost'yilan' ] ); // yilan.index.php
unset( $vHost'yilan' ] ) ;
var_dump( isset( $vHost'yilan' ] ) ); // false
var_dump$vHost'yilan' ] ); // Notice: undefined index // NULL
?>
Het complete array-element wordt verwijderd met unset (undefined index).

Citaat:
Vinnie Paz schreef op 21-07-2004 @ 18:14 :

Nu weet ik niet of PHP zo is gemaakt dat op het moment dat unset wordt uitgevoerd de variable als het ware wordt vrijgegeven of dat alleen de waarde naar NULL word gezet.

Als het 2de gebeurd kan je isset() en array_key_exist() gewoon allebei gebruiken zonder dat je het mag uitschelden voor quick 'n dirty, imo.

Maar echt zou heel de variable verwijderd worden dan zou isset() een verkeerde uitkomst geven.
PHP-code:
<?php
error_reporting
E_ALL );
$a null;
var_dump( isset( $a ) ); // false
var_dump$a ); // null
unset( $a ); 
var_dump( isset( $a ) ); // false
var_dump$a ); // Notice: undefined variable // NULL
?>
De variabele wordt weggegooid met unset.

Laatst gewijzigd op 21-07-2004 om 17:30.
Met citaat reageren
Oud 21-07-2004, 17:30
Vinnie Paz
Vinnie Paz is offline
Citaat:
eddie schreef op 21-07-2004 @ 18:26 :
De variabele wordt weggegooid met unset.
dan heb jij gelijk dat isset() quick 'n dirty is
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
De Kantine Weerwolfspel #95.2
Dark Phoenix
500 03-12-2013 19:00
De Kantine Mals Argensaains vleesch #1531
Trimm Trabb
500 18-10-2011 13:23
De Kantine Weerwolfspel #70, topic 2
Martiño
500 10-07-2010 08:49
De Kantine Weerwolfspel #59 deel 2
Verwijderd
500 02-06-2009 20:51
Software & Hardware Webserver
Plusmarktboy
28 07-08-2003 14:00


Alle tijden zijn GMT +1. Het is nu 01:58.