Functie return in echo("")

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Raoul van Hal

Raoul van Hal

07/09/2012 23:36:34
Quote Anchor link
Ik probeer een functie aan te roepen die ik zelf gemaakt heb in een echo. De bedoeling is dat als de variable minumum prijs niet overeenkomt met de maximum prijs dat de minimun prijs returned wordt en wordt weergegeven. Komen ze wel overeen dan moet er een NULL waarde terug komen.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
function check_price(){
    
        if (($rij["minimum_price"]) != ($rij["maximum_price"])) {
           return ($rij["minimum_price"]);
           } else {
            return NULL;  
        }
}

de echo is als volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>

");
Gewijzigd op 07/09/2012 23:49:20 door Raoul van Hal
 
PHP hulp

PHP hulp

26/11/2024 15:39:20
 
Ozzie PHP

Ozzie PHP

07/09/2012 23:40:55
Quote Anchor link
Wil je je code aub even tussen code tags zetten:

[code]

[/code]
 
Flip --

Flip --

07/09/2012 23:43:27
Quote Anchor link
$rij is niet beschikbaar in de scope van je functie.

function check_price($rij) {}

check_price($rij);
Gewijzigd op 07/09/2012 23:45:00 door Flip --
 
Raoul van Hal

Raoul van Hal

07/09/2012 23:51:13
Quote Anchor link
@ ozzie sorry, heb het aangepast

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
 
Ozzie PHP

Ozzie PHP

07/09/2012 23:55:46
Quote Anchor link
Je moet rij meegeven aan de functie inderdaad.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div id="box">
    <div id="picture">
        <a href="<?php echo $rij["link"]; ?>" class="lytebox" data-title="<?php echo $rij["title"]; ?>">

Zoals je ziet hoef je nu niet alles te escapen en leest het een stuk prettiger.
 
Raoul van Hal

Raoul van Hal

08/09/2012 00:02:45
Quote Anchor link
Hi Ozzie,

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)
PHP script in nieuw venster Selecteer het PHP script
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
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>

");
};



Toevoeging op 08/09/2012 00:04:11:

in eerste instantie echo'de ik trouwens elke line... woops :p
 
Ozzie PHP

Ozzie PHP

08/09/2012 00:08:26
Quote Anchor link
Inderdaad, die while kun je gewoon afsluiten en dan in php verder:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while ($rij = mysql_fetch_array($result)){
  ?>

  hier je html
  <?php
}
?>


"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
 
Wouter J

Wouter J

08/09/2012 00:11:50
Quote Anchor link
Tevens raad ik je, mocht je op deze manier gaan werken, de shorthand versie aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while ($rij = ...) :
?>

    hier je html
<?php
endwhile
?>


Dit kan ook met if (.. elseif .. else) statements, for(each) loops, ect.
 
Raoul van Hal

Raoul van Hal

08/09/2012 00:17:36
Quote Anchor link
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!
 
Ozzie PHP

Ozzie PHP

08/09/2012 00:23:18
Quote Anchor link
Wouter J op 08/09/2012 00:11:50:
Tevens raad ik je, mocht je op deze manier gaan werken, de shorthand versie aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while ($rij = ...) :
?>

    hier je html
<?php
endwhile
?>

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
 
Wouter J

Wouter J

08/09/2012 09:36:19
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php while ($rij = ...) { ?>
    <?php if ('bar' == $rij['foo']) { ?>
        <h1>Hier de HTML</h1>
    <?php } ?>
<?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 shorthand alternative syntax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php while ($rij = ...) : ?>
    <?php if ('bar' == $rij['foo']) : ?>
        <h1>Hier de HTML</h1>
    <?php endif ?>
<?php endwhile ?>

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
 
Ozzie PHP

Ozzie PHP

08/09/2012 12:38:45
Quote Anchor link
Ik zou het dan persoonlijk zo doen :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
while ($rij = ...) {
  if ('bar' == $rij['foo']) {
    ?>

    <h1>Hier de HTML</h1>
    <?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.
 
Wouter J

Wouter J

08/09/2012 15:48:36
Quote Anchor link
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.
 
Raoul van Hal

Raoul van Hal

08/09/2012 22:26:00
Quote Anchor link
Hmm okay, bedankt voor de tip!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.