Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

PHP if functie

Pagina: 1
Acties:

  • Arjan-901
  • Registratie: December 2012
  • Laatst online: 15-11-2023
Hallo,

Ik ben geen held met PHP maar heb wel een verandering nodig in een php scriptje:
Het script:
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
<?php
if ( is_user_logged_in() ) {
    if(!isset($_POST['change_league'])){

  //if the form has not been submitted yet, display the form
  echo "<form name='myform' action='' method='POST'>";
  //Get array of leagues
  $pool = new Football_Pool_Pool;
  $leagues = $pool->get_leagues(true);

  //Make a drop down
  echo "<select name='league'>";

    foreach($leagues as $league){
        echo "<option value='{$league['league_id']}'>{$league['league_name']}</option>";
    }
  echo "</select>";

  echo "<input type='submit' name='change_league' value='Submit'>";
  echo "</form>";

}else{

//If the form has been submitted, run the PHP function to update database
  $pool = new Football_Pool_Pool;
  $pool->update_league_for_user(get_current_user_id(), $_POST['league']);
  echo "Database updated!";
}
} else {
    echo 'Welcome, visitor!';
}
?>

Wat ik graag wil
Zodra in de instellingen van de gebruiker het leageau id gelijk is aan leageu id 1, dan moet dit script getoond worden zodat hij een andere leageau kan selecteren. Is het leageau id waarin de gebruiker zich bevind niet gelijk aan 1, dan moet het script niet weergegeven worden.

Kan iemand mij hierbij helpen hoe ik dit moet veranderen?

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

Met

PHP:
1
if(!isset($_POST['change_league'])) {


controleer je naar mijn idee alleen maar of er een waarde is ingevuld.
Heel simpel gezegt is het dan enkel daarna controlleren of die waarde ergens aan voldoet.

PHP:
1
2
3
4
5
6
7
$waarde = $_POST['change_league']

if ($waarde == '1') {
  // Doe iets
} else {
  // Doe iets anders
}

  • Kobus Post
  • Registratie: September 2010
  • Laatst online: 22-11 19:39
dan wrap je de code die je wilt laten zien als het leageau id gelijk is aan leageu id 1 in een if statement.

if (leageau_id == 1) {
//code....
}

No trees were harmed in the creation of this message, but several thousand electrons were mildly inconvenienced.


  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 21:13

Aganim

I have a cunning plan..

PHP:
1
2
3
4
5
6
7
8
9
<?php 
$waarde = $_POST['change_league'] 

if ($waarde == '1') { 
  // Doe iets 
} else { 
  // Doe iets anders 
} 
?>


Hmm, maar als er niets gepost is sta je ook te vergelijken tegen niets, wat je een Notice gaat opleveren als je error reporting aan gooit. Dan lijkt me een ternary operator iets netter, zodat je altijd een waarde hebt (zij het een lege) om mee te vergelijken:

PHP:
1
2
3
<?php
$waarde = (isset($_POST['change_league'])) ? $_POST['change_league'] : '';
?>

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

Anders verwoord is dat dus;

PHP:
1
2
3
4
5
if (isset($_POST['change_league'])) {
  $waarde = $_POST['change_league'];
} else {
 $waarde = '';
}


Maar uiteindelijk heb je dan een variabele $waarde met een inhoud of niet, maar dan gebeurt er verder nog niks, want je wilt met de inhoud van $waarde dan weer bepalen wat je volgende actie is.
En dan moet (kun) je alsnog een if statement maken zoals ik dan plaatste?

ben zelf ook niet helemaal thuis in php, maar wellicht leer ik hier ook wat van :)

@hieronder
Creepy schreef op woensdag 26 februari 2014 @ 20:41:
[...]

Natuurlijk. Maar wat had je zelf al bedacht en geprobeerd? Iets met een IF moet je toch zelf ook wel lukken lijkt me zo ;)
Ah, de 'google het maar gewoon' mentaliteit O-)

[ Voor 28% gewijzigd door BLACKfm op 26-02-2014 20:42 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:46

Creepy

Tactical Espionage Splatterer

Arjan-901 schreef op woensdag 26 februari 2014 @ 19:53:
Kan iemand mij hierbij helpen hoe ik dit moet veranderen?
Natuurlijk. Maar wat had je zelf al bedacht en geprobeerd? Iets met een IF moet je toch zelf ook wel lukken lijkt me zo ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 21:13

Aganim

I have a cunning plan..

@BLACKfm, dat zie je in dit geval goed. Het gaat een beetje off-topic, maar:

Als er geen '$_POST['change_league']' is (pagina is bijv. net aangeroepen), dan heb je niets om toe te wijzen aan $waarde en dus ook niets om tegen te vergelijken. De hele waarde '$_POST['change_league']'' bestaat immers simpelweg niet. Zet je error reporting op E_ALL, dan zal je hier ook een melding van krijgen. (Notice: Undefined index). Geen fatale fout, maar het is slordig en het maakt je debugging in een groter script zeker niet makkelijker.

Er zit een groot verschil tussen niets en een lege waarde (zoals de dubbele single qoutjes). Een lege waarde kan wél vergelijken worden, of afgevangen via empty(). Met niets.. kunnen we niets. ;) (behalve afvangen via isset(); )

De tussenstap van opslaan in een variabele kan voordelen hebben, bijvoorbeeld wanneer je eerst nog wat bewerkingen wilt doen op je POST waarde. (bijvoorbeeld escaping dmv. htmlentities, mysqli_real_escape_string, etc).

Zo is..

PHP:
1
2
3
4
5
<?php
$waarde = (isset($_POST['blabla'])) ? (mysqli_real_escape_string($_POST['blabla']) : '';

ietsDoen($waarde);
?>


..overzichtelijker en efficiënter (als je de post data meerdere keren nodig hebt) dan bijv steeds:

PHP:
1
2
3
4
5
6
<?php
if(isset($_POST['blabla']))
   ietsDoen(mysqli_real_escape_string($_POST['blabla']));
else
  ietsDoen();
?>


(Je mag de accolades in een If statement weglaten als je maar 1 regel hoeft uit te voeren)

In het voorbeeld van de TS kan het korter:

PHP:
1
2
3
<?php
   if(isset($_POST['change_league']) && $_POST['change_league'] == 1){ 
?>

  • Arjan-901
  • Registratie: December 2012
  • Laatst online: 15-11-2023
Ik probeer wat jullie zeggen, maar het werkt niet. Moet niet eerst opgevraagd worden in welke leageau de speler is ingedeeld en dat dan wordt vergeleken of dit gelijk is aan id 1?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dat hangt ervanaf: is dat hoe jij wil dat het werkt?

'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.


  • Arjan-901
  • Registratie: December 2012
  • Laatst online: 15-11-2023
NMe schreef op woensdag 26 februari 2014 @ 22:29:
Dat hangt ervanaf: is dat hoe jij wil dat het werkt?
ik ben een noobie, ik zou het niet weten. nu werkt het in ieder geval niet.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dat is naast je topicstart al de tweede keer in dit topic dat je je gebrek aan kennis gebruikt als excuus om zelf niet na te denken. ;)

Wat wil je zelf dat er gebeurt en onder welke voorwaarde? Die voorwaarde schrijf je uit als if, wat je wil dat er gebeurt komt binnen die if te staan. Wat begrijp je daar niet aan?

'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.


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

Arjan-901 schreef op woensdag 26 februari 2014 @ 22:28:
Ik probeer wat jullie zeggen, maar het werkt niet. Moet niet eerst opgevraagd worden in welke leageau de speler is ingedeeld en dat dan wordt vergeleken of dit gelijk is aan id 1?
Je vraag het op middels die post, want je haalt die gegevens blijkbaar uit een formulier. Als het niet uit een formulier komt dan haal je het uit een database of cookie, of waar je het dan ook opslaat.

Wellicht is de bronvraag 'waar komt je informatie vandaan en hoe wordt deze aangeboden' een goed punt om mee te beginnen.

[ Voor 11% gewijzigd door BLACKfm op 27-02-2014 11:50 ]


  • Arjan-901
  • Registratie: December 2012
  • Laatst online: 15-11-2023
het id moet opgevraagd worden vanuit de database, in welke leageu zit hij of zij nu. is dit gelijk aan id 1 dan moet het script getoond worden, anders niet. Dat zou ik graag voor elkaar willen krijgen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

En wat lukt je daar nou niet aan? Wat doe je nou met het advies dat je al gehad hebt?

'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.


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

In normale mensentaal is dat iets als

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// maak verbinding met database
 $host = 'ipadres';
 $wachtwoord = 'password' ;
 $user = 'persoon';

$qry = 'Maak verbinding met de database via $host . $wachtwoord . $user';
$haal_uit_cookie = 'je moet weten wie de gebruiker is om de juiste info op te vragen';

$waarde = Haal middels $qry de waarde van 'leugue' uit 'tabel' van gebruiker $haal_uit_cookie;

if ($waarde == '1') {  
  // Doe iets  
} else {  
  // Doe iets anders  
}


Een vraag voordat je hier uberhaupt aan begint is, heb je wel een database waar de gegevens in staan? En wat voor vorm is dit, de meest voor de hand liggende zou dan MySQL zijn.

[ Voor 32% gewijzigd door BLACKfm op 27-02-2014 17:21 ]


  • Artaex
  • Registratie: Oktober 2011
  • Laatst online: 30-08 16:14
@BLACKfm ik wil niet veel zeggen, maar informatie in cookies opslaan is allang achterhaald. PHP Sessions zijn hiervoor bestemd.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Nogal een statement. De keuze tussen sessies en cookies is behoorlijk situatie-afhankelijk en cookies zijn zeker niet per definitie een slecht plan.

'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.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Artaex schreef op vrijdag 28 februari 2014 @ 11:32:
@BLACKfm ik wil niet veel zeggen, maar informatie in cookies opslaan is allang achterhaald. PHP Sessions zijn hiervoor bestemd.
Hoe denk je dat sessions (meestal) werken? ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Gevoelige informatie opslaan in cookies is een slecht idee. Voor de rest zijn cookies veel handiger (en beter te controleren) dan sessies. Denk maar aan frontend caches en javascript.

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

Pagina: 1