PHP-code met HTML mengen (if/else)

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Uit een PHP4-boek begrijp ik dat je gerust het volgende kunt doen:

<?php
if (voorwaarde):
?>
HTML-code die moet worden weergegeven indien voorwaarde TRUE
<?php
else:
?>
HTML-code indien voorwaarde FALSE

Dit werkt bij mijn ISP niet |:( , dus moet ik alles in echo's omhullen. Is er een andere methode?

alvast zeer veel dank voor jullie reacties.

Nobody knows nothing... some of us just know very little


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

PHP:
1
2
3
4
5
6
7
8
9
10
<?
if($blaat)
{
   echo "<html>";
}
else
{
  echo "<html>";
}
?>

Doet iets met Cloud (MS/IBM)


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Ja zo kom je er ook uit. Maar volgens dat boek moet je dus ook uit php kunnen springen om de HTML te schrijven die op die plaats in je if-statement hoort, om vervolgens weer doodleuk naar php over te springen en met je else-blabla door te gaan. Moet je echt met echo werken?

Nobody knows nothing... some of us just know very little


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
je moet endif toevoegen:
code:
1
2
3
4
5
<? if (voorwaarde): ?>
(blaat 1)
<? else: ?>
(blaat 2)
<? endif; ?>

  • Yo-L
  • Registratie: December 2000
  • Niet online
code:
1
2
3
4
5
6
7
8
<?php
if (voorwaarde):
?>
HTML-code die moet worden weergegeven indien voorwaarde TRUE
<?php
else:
?>
HTML-code indien voorwaarde FALSE
ehh.. je doet toch wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
  if (voorwaarde)
  {
?>
  <HTML>
<?
  }
  else
  {
?>
  <HTML>
<?
  }
?>

of niet? (let op de brackets)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Als je meerdere lijntjes in een if of else blok hebt staan, moet je ALTIJD de accolade's gebruiken. De dubbel punt is alleen bedoeld als er maar EEN regel code is. En het staat trouwens ook niet zo netjes in je code, maar dat is puur persoonlijk :)

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Ik gebruik dus inderdaad geen <HTML> idere keer dat ik naar HTML terugschakel. In het voorbeeld van dat boek PHP4 staat dat ook niet. Maar ik zal het proberen. Van die dubbele punt wist ik niet dat dat voor slechts één regel geld (ben nog niet zo lang bezig met programmeren), maar ik vind het juist wel nettjes staan. Zal ik dus maar niet meer doen.
Jullie horen van me of het lukt.

Nobody knows nothing... some of us just know very little


  • Yo-L
  • Registratie: December 2000
  • Niet online
Op dinsdag 13 november 2001 21:45 schreef Steam het volgende:
Ik gebruik dus inderdaad geen <HTML> idere keer dat ik naar HTML terugschakel. In het voorbeeld van dat boek PHP4 staat dat ook niet. Maar ik zal het proberen. Van die dubbele punt wist ik niet dat dat voor slechts één regel geld (ben nog niet zo lang bezig met programmeren), maar ik vind het juist wel nettjes staan. Zal ik dus maar niet meer doen.
Jullie horen van me of het lukt.
Je snapt't niet

<HTML> was slechts om aan te geven waar de html code moest.. je hoeft niet <HTML> letterlijk te typen :)

't ging om die brackets.. die moet je gebruiken :)

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Nee, het werkt nogsteeds niet ;( . Het stomme ding voert gewoon alles uit! :?

Nobody knows nothing... some of us just know very little


  • Yo-L
  • Registratie: December 2000
  • Niet online
Op dinsdag 13 november 2001 21:51 schreef Steam het volgende:
Nee, het werkt nogsteeds niet ;( . Het stomme ding voert gewoon alles uit! :?
Wat is je code dan precies?

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Oh sorry, te vlug gelezen.
Nee die acculades gebruik ik wel. Maar nog geen resultaat.

Nobody knows nothing... some of us just know very little


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Kom ik zo op terug. Mijn 'test.php' is door al dat geprobeer aardig verschrompeld. Wil het eerst weer netjes maken voor ik het aan de wijze heren toon!

Nobody knows nothing... some of us just know very little


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 13 november 2001 21:41 schreef MisterData het volgende:
Als je meerdere lijntjes in een if of else blok hebt staan, moet je ALTIJD de accolade's gebruiken. De dubbel punt is alleen bedoeld als er maar EEN regel code is. En het staat trouwens ook niet zo netjes in je code, maar dat is puur persoonlijk :)
nope, dit werkt gewoon:
code:
1
2
3
4
5
6
7
8
9
10
<?
    $blaat = false;
    if ($blaat):
        echo "bla bla bla<br>";
        echo "bla bla bla<br>";
    else:
        echo "niet bla bla bla<br>";
        echo "niet bla bla bla<br>";
    endif;
?>

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
ben ik weer met de code:<?php
if (!isset($unaam))
?>
<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD=POST>
Gebruikersnaam: <INPUT TYPE=TEXT NAME="unaam"> </Br>
Password: <INPUT TYPE=PASSWORD NAME="password">
<INPUT TYPE=SUBMIT VALUE="Inloggen">
</FORM>

<?php
endif;
else
{
INCLUDE ("verbinding.inc");
$toegang=mysql_query("SELECT ID FROM Toegang WHERE Naam=$unaam AND Password=$password");
if (!$toegang)
{ echo (U heeft geen toegang);
exit();
}
}
?>

Het probleem is dus ten eerste dat altijd het formulier verschijnt, en ten tweede dat $toegang altijd leeg blijft. Maar dat laatste hoop ik later nog op te lossen.

Nobody knows nothing... some of us just know very little


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
je vergeet de dubbele punt na if
code:
1
2
if (!isset($unaam)):
             ^ dubbele punt

en:
code:
1
2
endif;
else

die endif moet daar niet staan, en achter de else moet weer een :

  • Yo-L
  • Registratie: December 2000
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
if (!isset($unaam))
{
?>
<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD=POST>
Gebruikersnaam: <INPUT TYPE=TEXT NAME="unaam"> </Br>
Password: <INPUT TYPE=PASSWORD NAME="password">
<INPUT TYPE=SUBMIT VALUE="Inloggen">
</FORM>
<?php
}
else
{
  INCLUDE ("verbinding.inc");
  $toegang=mysql_query("SELECT ID FROM Toegang WHERE Naam=$unaam AND Password=$password");
  if (!$toegang)
    { echo (U heeft geen toegang);
      exit();
    }
}
?>

Zo?

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

huh? ben ik nou te simple of?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
 
 if ($bBlaat){
 ?>
      <HTML> blaaaaaa</html>
 <?
 }
 Else
 {
 ?>
      <HTML>blaaaaaa</html>
<?
 };
?>

must work

BTW......die opmerking over dat END IF invoegen is niet juist, in php doe je dat met } en vaak ook nog een ; erachteraan.

GL

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 13 november 2001 22:07 schreef Mir het volgende:
BTW......die opmerking over dat END IF invoegen is niet juist, in php doe je dat met } en vaak ook nog een ; erachteraan.
probeer het zelf eens zou ik zeggen. een ; achter een } moet zover ik weet nooit.

[edit]
linkje erbij: http://php.nederland.net/manual/en/control-structures.alternative-syntax.php

[nog een edit]
dit is erg handig juist voor dit soort dingen

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
OK, dubbele punt toegevoegd, accolades rondom de HTML, maar binnen de php-tags natuurlijk. Nu krijg ik weer een PARSE-ERROR op line 21. Ik ben dus hobbyist, en het is geloof ik maar goed dat het mijn vak niet is! :(

Nobody knows nothing... some of us just know very little


Verwijderd

Op dinsdag 13 november 2001 22:07 schreef Mir het volgende:

BTW......die opmerking over dat END IF invoegen is niet juist, in php doe je dat met } en vaak ook nog een ; erachteraan.
Quote uit mijn PHP manual:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
if ($a == 5):
    print "a is gelijk aan 5";
    print "...";
elseif ($a == 6):
    print "a is gelijk aan 6";
    print "!!!";
else:
    print "a is niet gelijk aan 5 of 6";
endif;
?>

Is dus een alternatieve syntax, speciaal voor dit soort dingen ja.

  • Yo-L
  • Registratie: December 2000
  • Niet online
Op dinsdag 13 november 2001 22:13 schreef Steam het volgende:
OK, dubbele punt toegevoegd, accolades rondom de HTML, maar binnen de php-tags natuurlijk. Nu krijg ik weer een PARSE-ERROR op line 21. Ik ben dus hobbyist, en het is geloof ik maar goed dat het mijn vak niet is! :(
en die code van mij werkt ook niet?

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

probeer het zelf eens zou ik zeggen. een ; achter een } moet zover ik weet nooit.
Hmmm..
PHP:
1
2
3
4
5
6
<?
 if ($bBlaat) {
    echo "Jemoetwat";
 }
 echo "en nog wat";
?>

zal naar mijn mening echt een fout geven.
PHP:
1
2
3
4
5
6
<?
 if ($bBlaat) {
    echo "Jemoetwat";
 };  //  <--------
 echo "en nog wat";
?>

Dit niet.....
Op dinsdag 13 november 2001 22:13 schreef Cheatah het volgende:

[..]

Quote uit mijn PHP manual:
........
Is dus een alternatieve syntax, speciaal voor dit soort dingen ja.
uw! weer wat geleerd....naja, in ASP doe ik het weer met END IF...hier weer met } .....zo blijf je tenminste lekker scherp *D

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 13 november 2001 22:13 schreef Steam het volgende:
OK, dubbele punt toegevoegd, accolades rondom de HTML, maar binnen de php-tags natuurlijk. Nu krijg ik weer een PARSE-ERROR op line 21. Ik ben dus hobbyist, en het is geloof ik maar goed dat het mijn vak niet is! :(
ik kan me wel voorstellen dat het een beetje verwarrend is :) er zijn dus twee syntaxis voor if:
code:
1
2
3
4
5
6
7
8
if (conditie)
{
   ...
}
else
{
   ...
}

en
code:
1
2
3
4
5
if (conditie):
   ...
else:
   ...
endif;

die moet je niet door elkaar halen :)

zoals je ziet is de 2e compacter, maar de 1e is meestal overzichtelijker.

  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Nee, sorry.
Loopt vast op line 18 (dat is line 16 in jouw script, ik heb HTML tags toegevoegd natuurlijk)
Ik dank jullie hartelijk voor jullie hulp, ik ga morgen verder. Hopelijk lukt het dan.
groet! :*

Nobody knows nothing... some of us just know very little


  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Op dinsdag 13 november 2001 22:26 schreef Steam het volgende:
(dat is line 16 in jouw script.......)
? wiens ?

:)

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Volgens mij is die code van Yo-L gewoon goed hoor, zo zou ik het ook doen. De rest is allemaal maar vaag (endif :? ).

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Mir,
probeer het zelf eens zou ik zeggen.
ging over de alternatieve if-syntax

met
een ; achter een } moet zover ik weet nooit.
bedoelde ik dat het nooit moet (ik wist niet eens dat het correct was in PHP (in C bijvoorbeeld krijg je een syntax error)). het voorbeeld wat je geeft is dus wel correct. dit dus:
code:
1
2
3
4
if ($bBlaat) {    
    echo "Jemoetwat"; 
} 
echo "en nog wat";
Op dinsdag 13 november 2001 22:30 schreef Bigs het volgende:
Volgens mij is die code van Yo-L gewoon goed hoor, zo zou ik het ook doen. De rest is allemaal maar vaag (endif :? ).
http://php.nederland.net/manual/en/control-structures.alternative-syntax.php

[edit]wat een lang topic over iets simpels als if ;)

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

[b]Op dinsdag 13 november 2001 22:32 schreef marcusk een mooie brief naar mij
Ok, ach ik vind het voormezelf wat beter staan..

echo "iets"; moet wel (ja toch? :) (nu ga ik gewoon aan mezelf twijfelen))

dus hou ik het ook bij };



btw__
ipv [code ] te gebruiken zou ik [php ] gebruiken.
of doe je dit juist met opzet?

en nu lekker :Z
ciao

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 13 november 2001 22:32 schreef marcusk een mooie brief naar mij
lol :)
btw__
ipv [code ] te gebruiken zou ik [php ] gebruiken.
of doe je dit juist met opzet?
ja, die letters van php vind ik te klein.

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
if ($variable=="sjaak") {
echo"

<html>
<head>
<title> Tis maar een voorbeeldje</title>
<body>

blaat !

</body>
</html>
";

}else{

echo "
waarom moeilijk doen als het veel makkelijker kan!





blaat!
";

}

persoonlijk zou ik het nog heel anders doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
echo "
<html>
<head>
<title>werjktnhwerkljgt</title>
<body>
";

if ($blaat) {

asfjklhsdkg

}else{

asfnaldfna;lkdfnalkdf

}

echo "
</body>
</html>
";

ofzo... ;)

([qhq] [/qhq] maakt die letter's zo klein :( )

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op dinsdag 13 november 2001 22:46 schreef Mir het volgende:
Ok, ach ik vind het voormezelf wat beter staan..

echo "iets"; moet wel (ja toch? :) (nu ga ik gewoon aan mezelf twijfelen))
:{

korte uitleg:

Een ; staat voor "dit is het einde van mijn statement, dus voer maar uit."
Als je dan niks in dat statement hebt staan:
PHP:
1
2
3
4
5
<?
; // Ok \
; // ok  } 3 lege statements: de parser/compiler hoeft niets uit te voeren, maar is syntactisch wel correct.
; // ok /
?>

{ en } staan in dit verband voor: "De zooi die hier tussen staat kun je als 1 statement beschouwen".
(Wordt ook wel compound-statement genoemd).

Oftewel:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
if ( 1 )
   echo "Dit is 1 statement";
else
{
   echo "Dit zijn meerdere";
   echo "Statements, maar de { en de } zorgen ervoor";
   echo "Dat het else-keyword het als 1 statement ziet";
}
?>

Oftewel, een ; achter een } hoeft nooit (en mag soms zelfs niet) omdat de } al het einde van een compound-statement impliceert.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
if ( 1 )
{
   echo "sjaak";
};                  
else                // <--- PARSE ERROR! 2 statements tussen "if" en "else", nl 1 compound, en 1 "lege"

{
   echo "de bever";
};                  // <--- Geen probleem, je voert een "leeg" statement uit na het compound statement van "else"
?>

En imho is die alternative syntax niet zo netjes, als je hem niet consequent gebruikt. Consequentie is het belangrijkst imo

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Topicstarter
Ben ik weer.
Mijn laatste post had ik het over 'jouw script'. Ik bedoelde daarmee die van Yo-L. Pas toen ik gepost had zag ik dat er al weer heel wat was gedebatteerd in de tussentijd. Ik heb inmiddels wel alles geprobeerd, maar werken doet het niet, dus ik zal mijn ISP maar eens raadplegen.

Nobody knows nothing... some of us just know very little

Pagina: 1