PHP/MYSQL: if / else in while lus

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een while lus die adressen uit een mysql database haalt. Nu wil ik dat er af en toe bij een bepaald zoekwoord, (bijvoorbeeld: ' schilder'). Daarna geeft hij dus een lijst adressen tot 10 per pagina. In deze while lus zit de functie "reclamebanner" deze functie heeft de volgende code:

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
28
29
30
31
<?php

    function reclamebanner ($zoek) {

        if ($zoek == "schilder"){ //het zoekwoord
        
            $bannergeweest = 0;
            
            while($bannergeweest == 0 ){
            
                //if($bannergeweest == 1){
                //  echo "<br>";
                //  echo "de banner is al geweest";
                //  echo "<br>";
                //}
            
                if($bannergeweest == 0){
                    $welofniet = rand(1,3);
                    if ($welofniet == 1) {
                    echo ?> [img]"banners/banner1.gif"[/img]<br> <?
                    echo "Hier is een reclamebanner";
                    echo "<br>";
                    $bannergeweest = $bannergeweest + 1;
                    }
                }
            
            }

        }
    }
?>


Nu werkt het niet helemaal zoals ik zou willen. De code werkt wel maar het is mijn bedoeling dat er maar maximaal 1 keer per pagina een reclamebanner komt te staan. Met de random functie probeer ik ervoor te zorgen dat hij niet altijd bovenaan staat maar ook soms tussen plek 1 en 2 of 3 en 4 etc etc..

Hoop dat iemand het begrijpt.

Acties:
  • 0 Henk 'm!

Verwijderd

Bij elke aanroep verander je $bannergeweest in 0...

Doe het dus zo:

PHP:
1
2
3
4
5
6
7
$bannergeweest = 0;

function reclamebanner ($zoek) {
  global $bannergeweest;

  // de rest gewoon hetzelfde
}
Nu wil ik dat er af en toe bij een bepaald zoekwoord, (bijvoorbeeld: ' schilder').
Hier moet vermoedelijk nog iets achter van een banner tonen

Dit kan beter met een ads management systeem als phpadsnew, maar goed.
echo ?> [img]"banners/banner1.gif"[/img]<br> <?
Dit slaat ook nergens op...

[ Voor 52% gewijzigd door Verwijderd op 09-02-2006 14:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Super! thanx het werkt nu. maar nu ben ik wel benieuwd wat global doet. want dat wist ik nog niet..

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 09 februari 2006 @ 14:11:
Super! thanx het werkt nu. maar nu ben ik wel benieuwd wat global doet. want dat wist ik nog niet..
Op jouw manier definieer je bij elke aanroep die variabele opnieuw. Als je hem globaal (global) maakt, wordt hij alleen op 0 gezet bij het aanroepen van het php-script. Bij het veranderen van die waarde in de functie 'onthoudt' hij dat bij de daaropvolgende aanroep :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oh de banner moet je nog niet op letten hoor. want dat ga ik nu verder uitwerken. ik moest eerst het systeem hebben voor een random banner bij een bepaald zoekwoord.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat phpadsnew systeem waar je het over hebt is dat open source??

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 09 februari 2006 @ 14:20:
dat phpadsnew systeem waar je het over hebt is dat open source??
Is idd gratis te downloaden :)

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Het is niet netjes om HTML in je functie te echo'en, en zeker niet door 't php block af te sluiten (dmv ?>).
Met de functie kan je beter wat returnen, en dan in je normale script de echo doen, of het php block sluiten.

En ook vreemd, je doet:
PHP:
1
2
3
4
$bannergeweest  = 0;
while ($bannergeweest == 0) {
/* code */
}


Is dit niet oneindig?
Want opzich is $bannergeweest == 0 ALTIJD true :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ziet er inderdaad goed uit maar kun jij het ook aanpassen aan je eigen systeem. Dus ik ik bijvoorbeeld de functie reclamebanner combineer met het systeem. Want ik wil namelijk reclamebanners van schilderbedrijven alleen als men in deze branche zoekt zodat deze schilder daar profeit van heeft.

Dus dat je het naar elkaar laat luisteren of iets dergelijks.

Acties:
  • 0 Henk 'm!

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 17-09 22:12

apNia

Schreeuwen en Nibbits eten!

Wat is er in het algemeen lelijk aan HTML binnen PHP code tonen door te exitten via ?>

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

ZroBioNe: Nee, want de code past $bannergeweest aan. Een do..while was hier idd beter op z'n plek geweest, alhoewel de code in z'n huidige vorm al helemaal geen loop nodig heeft omdat altijd exact 1 keer geïtereerd wordt, en $bannergeweest daarna 1 is.

[ Voor 4% gewijzigd door .oisyn op 09-02-2006 14:29 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

ZroBioNe schreef op donderdag 09 februari 2006 @ 14:23:
Het is niet netjes om HTML in je functie te echo'en, en zeker niet door 't php block af te sluiten (dmv ?>).
Met de functie kan je beter wat returnen, en dan in je normale script de echo doen, of het php block sluiten.

En ook vreemd, je doet:
PHP:
1
2
3
4
$bannergeweest  = 0;
while ($bannergeweest == 0) {
/* code */
}


Is dit niet oneindig?
Want opzich is $bannergeweest == 0 ALTIJD true :?
Nee, want er komt daarna een if op $bannergeweest ==0 -> daar wordt hij verhoogd :)

/me mept .oisyn

De code slaat idd nergens op...
ziet er inderdaad goed uit maar kun jij het ook aanpassen aan je eigen systeem. Dus ik ik bijvoorbeeld de functie reclamebanner combineer met het systeem. Want ik wil namelijk reclamebanners van schilderbedrijven alleen als men in deze branche zoekt zodat deze schilder daar profeit van heeft.

Dus dat je het naar elkaar laat luisteren of iets dergelijks.
Lees de tutorial van phpAdsNew even... Dit is inderdaad wel mogelijk.

[ Voor 30% gewijzigd door Verwijderd op 09-02-2006 14:31 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

ZroBioNe schreef op donderdag 09 februari 2006 @ 14:23:
En ook vreemd, je doet:
PHP:
1
//snip


Is dit niet oneindig?
Want opzich is $bannergeweest == 0 ALTIJD true :?
Kijk eens goed naar regel 23? ;)

Maar die if op regel 17 is dan weer wel heel overbodig. Zolang je in die while zit kun je er wel zeker van zijn dat $bannergeweest 0 is, anders zat je daar niet in. Trouwens, met deze code hoeft de banner ook niet per se te verschijnen...ik zou zoiets doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
define('MAXPOSITIE', 4)

$positie = rand(1, MAXPOSITIE) - 1;
$bannerGeweest = false;
for ($i = 0; !$bannerGeweest; $i++) {
  if ($i == $positie) {
    $bannerGeweest = true;
    echo 'hier komt je banner';
  }
  //vergeet niet hier andere dingen te echoën, want anders doet deze functie vrij weinig
}


Verder, bsdesign, ik zie hier al een heel aantal kleine vraagjes die je makkelijk zelf op had kunnen lossen door Google te gebruiken. Als je hier een term tegenkomt die je niet kent, probeer die dan eerst zelf op te zoeken voordat je ernaar vraagt. ;)

[ Voor 8% gewijzigd door NMe op 09-02-2006 14:34 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het nu zo:

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
<?php

    $bannergeweest = 0; 

    function reclamebanner ($zoek) {
        
        global $bannergeweest;

        if ($zoek == "schilder"){ //het zoekwoord
                                
                 if($bannergeweest == 1){
                    echo "<br>";
                    echo "de banner is al geweest";
                    echo "<br>";
                }
            
                if($bannergeweest == 0){
                    $welofniet = rand(1,3);
                    if ($welofniet == 1) {
                    echo ?> [img]"banners/banner1.gif"[/img]<br> <?
                    echo "Hier is een reclamebanner";
                    echo "<br>";
                    $bannergeweest = $bannergeweest + 1;
                    }
                }
            
        }
    }
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Die echo uit regel 20 is overbodig... Tevens hoeft de banner idd niet getoond te worden nu.

[ Voor 43% gewijzigd door Verwijderd op 09-02-2006 14:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
even voor alle duidelijkeheid nog, Ik maag website's in adobe golive en als ik php dan niet afsluit dmv. ?> <? krijg ik de banner niet als plaatje te zien. Dit wil ik wel graag want in deze pagina staan nog andere functies en zo scroll ik makkelijk naar de juiste functie dmv visiueel beeld anders geeft golive alleen maar een klein paars php blokje weer.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 09 februari 2006 @ 14:40:
even voor alle duidelijkeheid nog, Ik maag website's in adobe golive en als ik php dan niet afsluit dmv. ?> <? krijg ik de banner niet als plaatje te zien. Dit wil ik wel graag want in deze pagina staan nog andere functies en zo scroll ik makkelijk naar de juiste functie dmv visiueel beeld anders geeft golive alleen maar een klein paars php blokje weer.
Dat is ook geen probleem, maar de afsluittags echo-en slaat nergens op :) Als je die echo weghaalt, werkt het ook namelijk...

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Ok ok, daar had ik dus overheen gelezen B)

Acties:
  • 0 Henk 'm!

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 17-09 22:12

apNia

Schreeuwen en Nibbits eten!

apNia schreef op donderdag 09 februari 2006 @ 14:28:
Wat is er in het algemeen lelijk aan HTML binnen PHP code tonen door te exitten via ?>
iemand?

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
In het algemeen is het niet lelijk, maar in een functie staat het gewoon niet netjes

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

apNia: Dat is an sich niet lelijk, het gaat meer om de scheiding van presentatie- en andere logica. Het zou dus mooier zijn als je een .php bestand hebt waarin je variabele genereerd waarin staat óf er een banner getoond moet worden en zoja waar die vandaan komt, en dan in een template achtig .php bestand dat eruitpoept. Waar je best kan exitten met behulp van ?> [html] <? .

DM!

Pagina: 1