[PHP] Rest van tabel wordt genegeerd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, ik zit met een probleem, Ik zal jullie eerst even de code laten zien:
PHP:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php 
if($_POST['Product2'] == 'Webhosting'){

echo
'<table border=/"0/" cellspacing=/"0/" cellpadding=/"0/">
  <tr>
    <td width=/"62/">Producten</td>
    <td width=/"293/">Periode</td>
    <td width=/"293/">Prijs</td>
  </tr>
  <tr>
    <td>
    Web'.$_POST['WebPakket2'].'</td>
    <td>
    ';if($_POST['LooptijdDomein2'] == 'Per jaar'){
    echo '1 jaar';}'</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>'; 
}else{
echo '<table border=/"0/" cellspacing=/"0/" cellpadding=/"0/">
  <tr>
    <td width=/"62/">Producten</td>
    <td width=/"293/">&nbsp;</td>
    <td width=/"293/">Prijs</td>
  </tr>
  <tr>
    <td>
    Gameserver&nbsp;'.$_POST['Game2'].'</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>'; }
?>


Het probleem zit hier
PHP:
1
2
    ';if($_POST['LooptijdDomein2'] == 'Per jaar'){
    echo '1 jaar';}

Want als LooptijdDomein2, Per jaar is, wordt 1 jaar wel weergegeven, maar de rest van de table, die dus na de if komt, wordt genegeerd... resultaat: een table die er niet uit ziet. Heeft iemand een oplossing?

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Dat komt omdat je geen juiste php gebruikt. Een semicolon sluit een regel af. Op regel 15, 16 en 29 wordt je echo dus al vroegtijdig afgebroken. Leer eerst eens even wat php zou ik zeggen ;)

Je kan nu twee dingen doen:
PHP:
1
2
3
4
5
6
if($iets == $iets_anders)
   $tussen_stuk = "dit komt ertussen";
else
   $tussen_stuk = "anders dit";

echo "Hoi, ".$tussen_stuk.", dit is het laatste deel";

Je kan echter een if/else constructie zoals hierboven vervangen door een kortere variant:
PHP:
1
$tussen_stuk = ($iets == $iets_anders)?"dit komt ertussen":"anders dit";
Dat heeft tot gevolg dat je nu nog twee manieren hebt om het op te lossen. Nog steeds buiten je echo halen:
PHP:
1
2
3
$tussen_stuk = ($iets == $iets_anders)?"dit komt ertussen":"anders dit";

echo "Hoi, ".$tussen_stuk.", dit is het laatste deel";
Maar je kan het er nu ook tussenin zetten:
PHP:
1
echo "Hoi, ".($iets == $iets_anders)?"dit komt ertussen":"anders dit".", dit is het laatste deel";
:)

Maar nogmaals: ga eerst eens wat beter php leren, je escaped namelijk nu ook op een verkeerde manier:
PHP:
1
2
3
echo "dit is met dubbele quotes, enkele zoals ' kan je gewoon gebruiken";
echo "echter moet je dubbele quotes wel escapen: \" anders sluit je de string af";
echo 'bij enkele quotes is dit natuurlijk precies andersom, " kan wel, maar enkele ( \' ) moet je escapen';

[ Voor 78% gewijzigd door mithras op 01-05-2007 21:47 ]


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Waarom doe je overal /" ? Escapen is niet nodig voor " als je je string in 'single quotes' hebt. En dan nog, de escape code zou \" moeten zijn... :)

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Je vergeet daarna een echo/print om de string na de if weer te geven.

escapen moet overigens met een \ ipv een / en is niet nodig tussen ' uitgezonderd voor de ' (en de \, maar die is afaik niet verplicht om te escapen).

Acties:
  • 0 Henk 'm!

  • DaRKie
  • Registratie: December 2001
  • Laatst online: 16-09 16:18
Je semicolons staan juist hoor (je codestyle is wel niet netjes maar ok :))
Je probleem zit indd waar jij zegt dat het zit:
PHP:
1
2
 ';if($_POST['LooptijdDomein2'] == 'Per jaar'){ 
    echo '1 jaar';}'</td> ...


je doet een if, als die true is, doe je een echo, je sluit de if af met een haakje en dan wil je de rest van de table uitprinten ... maar je vergeet wel het echo commando voor je laatste string te plaatsen, dus:

PHP:
1
2
3
4
5
 ';
if($_POST['LooptijdDomein2'] == 'Per jaar'){ 
    echo '1 jaar';
} 
echo '</td> ....

Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Kijk eens naar smarty zou ik zeggen, maakt je php en je html een stuk duidelijker..
En dan voorkom je zulke fouten

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik Adobe Dreamweaver,

@mithras, je hebt wel gelijk, mijn php was crappy, nu gefixed, ik ben ook nog maar een beginner PHP...

Uiteindelijk fixede Darkie's manier mijn probleem, bedankt :)
Pagina: 1