Functie return in echo("")
Ik vermoed dat ik iets in de functie fout heb maar kan het niet vinden. Is waarschijnlijk iets super simpels...
De functie die wordt aangeroepen heet check_price()
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
function check_price(){
if (($rij["minimum_price"]) != ($rij["maximum_price"])) {
return ($rij["minimum_price"]);
} else {
return NULL;
}
}
if (($rij["minimum_price"]) != ($rij["maximum_price"])) {
return ($rij["minimum_price"]);
} else {
return NULL;
}
}
de echo is als volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
echo ("
<div id=\"box\">
<div id = \"picture\">
<a href =\"".$rij["link"] . "\" class=\"lytebox\" data-title=\"". $rij["title"] ."\" >
<img src=\"". $rij["img_medium"] . "\" width=\"150\" height=\"150\" >
</a>
</div>
<DIV ID =\"category\">
<p>".$rij["title"] ."</p>
</DIV>
<div id=\"description\">
<a href=\"".$rij["img_medium"]."\"class=\"lytebox\" data-title=\"".nl2br($rij["title"]) . "\" data-description=\"". nl2br($rij["description"]). "\">Klik hier voor een beschrijving</a>
</div>
<div id=\"oldprice\">
<p>" . [b]check_price() [/b]. "</p>
</div>
<div id=\"newprice\">
<p> " .$rij["maximum_price"]."</p>
</div>
</div>
");
<div id=\"box\">
<div id = \"picture\">
<a href =\"".$rij["link"] . "\" class=\"lytebox\" data-title=\"". $rij["title"] ."\" >
<img src=\"". $rij["img_medium"] . "\" width=\"150\" height=\"150\" >
</a>
</div>
<DIV ID =\"category\">
<p>".$rij["title"] ."</p>
</DIV>
<div id=\"description\">
<a href=\"".$rij["img_medium"]."\"class=\"lytebox\" data-title=\"".nl2br($rij["title"]) . "\" data-description=\"". nl2br($rij["description"]). "\">Klik hier voor een beschrijving</a>
</div>
<div id=\"oldprice\">
<p>" . [b]check_price() [/b]. "</p>
</div>
<div id=\"newprice\">
<p> " .$rij["maximum_price"]."</p>
</div>
</div>
");
Gewijzigd op 07/09/2012 23:49:20 door Raoul van Hal
[code]
[/code]
Okay, flip dus ik moet de $rij array meegeven met de functie. Ik dacht ergens gelezen te hebben dat alle variables global waren in PHP. Ik ga et eens testen.
Edit: okay, het werkt. Bedankt! Eigenlijk ook logisch, maar goed...
Gewijzigd op 07/09/2012 23:53:23 door Raoul van Hal
Je maakt het jezelf veel makkelijker door gewoon html te schrijven en de waardes / functie-aanroepen tussen php tags te plaatsen, in plaats van dat je alles echoot zoals je nu doet.
Voorbeeld van de eerste 3 regels:
Code (php)
Zoals je ziet hoef je nu niet alles te escapen en leest het een stuk prettiger.
Dit stuk code komt uit een while loop. Of kan je tussende loop door PHP tags eindigen, html schrijven die dan ook mee repeat wordt en daar waar nodig php tags invoegen?
Code (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
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
while ($rij = mysql_fetch_array($result)){
echo ("
<div id=\"box\">
<div id = \"picture\">
<a href =\"".$rij["link"] . "\" class=\"lytebox\" data-title=\"". $rij["title"] ."\" >
<img src=\"". $rij["img_medium"] . "\" width=\"150\" height=\"150\" >
</a>
</div>
<DIV ID =\"category\">
<p>".$rij["title"] ."</p>
</DIV>
<div id=\"description\">
<a href=\"".$rij["img_medium"]."\"class=\"lytebox\" data-title=\"".nl2br($rij["title"]) . "\" data-description=\"". nl2br($rij["description"]). "\">Klik hier voor een beschrijving</a>
</div>
<div id=\"oldprice\">
<p>" . check_price($rij) . "</p>
</div>
<div id=\"newprice\">
<p> " .$rij["maximum_price"]."</p>
</div>
</div>
");
};
echo ("
<div id=\"box\">
<div id = \"picture\">
<a href =\"".$rij["link"] . "\" class=\"lytebox\" data-title=\"". $rij["title"] ."\" >
<img src=\"". $rij["img_medium"] . "\" width=\"150\" height=\"150\" >
</a>
</div>
<DIV ID =\"category\">
<p>".$rij["title"] ."</p>
</DIV>
<div id=\"description\">
<a href=\"".$rij["img_medium"]."\"class=\"lytebox\" data-title=\"".nl2br($rij["title"]) . "\" data-description=\"". nl2br($rij["description"]). "\">Klik hier voor een beschrijving</a>
</div>
<div id=\"oldprice\">
<p>" . check_price($rij) . "</p>
</div>
<div id=\"newprice\">
<p> " .$rij["maximum_price"]."</p>
</div>
</div>
");
};
Toevoeging op 08/09/2012 00:04:11:
in eerste instantie echo'de ik trouwens elke line... woops :p
"in eerste instantie echo'de ik trouwens elke line... woops :p"
Al doende leert men ;-)
Succes :-)
Gewijzigd op 08/09/2012 00:08:55 door Ozzie PHP
Dit kan ook met if (.. elseif .. else) statements, for(each) loops, ect.
okay, tis voor mij alweer lang geleden dat ik php deed... jaartje of 8. Wel nog VBA in combinatie met Access gedaan dus programmeer logica zit er wel in. Dit zijn in ieder geval goed bruikbare tips!
Wouter J op 08/09/2012 00:11:50:
Tevens raad ik je, mocht je op deze manier gaan werken, de shorthand versie aan:
Waarom dat Wouter? Hier klik geef je nog aan dat je brackets prefereert?
Offtopic:
Hoe is het met je boekje? Ik had nog gereageerd in je topic maar geen reactie meer van jou?
Gewijzigd op 08/09/2012 00:24:12 door Ozzie PHP
Quote:
Hier klik geef je nog aan dat je brackets prefereert?
Brackets over het gebruik van geen brackets, niet over het gebruik van deze shorthand methode.
En waarom dan niet?
Als je deze code hebt:
Code (php)
Dan is het, vooral als je HTML code lang is, compleet onduidelijk bij welke die } hoort. Is dat nou van de while of van de if??
Daarom gebruik je de
Code (php)
Je kan hier nu meteen zien welke bij de if hoort en welke bij de while, het zorgt dus voor een stukje overzicht.
Offtopic:
Sorry dat ik niet reageer, vandaag had ik een deadline voor een website en daar heb ik 2 dagen heel hard aan gewerkt, was dus even weggezakt. Misschien dat ik nu of vanavond nog wat tijd vind
Gewijzigd op 08/09/2012 09:37:23 door Wouter J
Code (php)
Toevoeging op 08/09/2012 12:39:52:
Zoals je ziet staan de brackets nu op dezelfde hoogte als het begin van de while / if statement.
Raoul, nog even een tip. Je gebruikt echo("") en return(""). Dan lijkt het net of deze functies zijn, maar dat is niet zo. Het zijn de zogenaamde language constructs en het is aan te raden daar geen haakjes bij te gebruiken, dan heb je een mooi verschil in je code.
Hmm okay, bedankt voor de tip!