[php] variablen en forms

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
normaal controleer ik of een checkbox van een formulier is aangevinkt met deze code:

PHP:
1
2
3
4
5
6
7
<? 
if ($naam_van_checkbox){ 
// code als is aangevinkt 
} else { 
// code als niet is aangevinkt 
} 
?> 


Dit werkt altijd heel goed.
Maar nu heb ik een checkbox met de naam: 1 en een met de naam 2.

Nu wil ik controleren of deze bestaat met deze code:


PHP:
1
2
3
4
5
6
7
8
<? 
$welke=1; // declareren en opgeven welke box php moet controleren 
if ($welke){ 
// code als aangevinkt 
} else { 
// code als niet aangevinkt 
} 
?> 


Deze werkt echter niet, hoe kan ik ervoor zorgen dat deze wel werkt?
ik heb het al zo geprobeerd:
PHP:
1
2
3
if ($$welke){        // manier 1
if ($'$welke'){     // manier  2
if ($"$welke"){   // manier  3

En ook deze werken geen van allen.
google, search en php.net leverde bij mij niks op.

Acties:
  • 0 Henk 'm!

Verwijderd

Als ik het goed heb controleer je met if($iets) een boolean waarden, true in dit geval...en volgens mij werkt het dus zo niet. (maar ik ben maar een php noobje)
Dus ben je genoodzaakt hetvolgende te doen:
PHP:
1
2
3
4
5
if($waarde==1){
//iets
} else {
//iets anders
}

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Verwijderd schreef op 10 november 2002 @ 19:45:
Als ik het goed heb controleer je met if($iets) een boolean waarden, true in dit geval...en volgens mij werkt het dus zo niet. (maar ik ben maar een php noobje)
Dus ben je genoodzaakt hetvolgende te doen:
Dat werkt juist uitstekend,
met jouw voorbeeld, moet het veld een bepaalde waarde hebben,
maar de value kan in mijn geval altijd anders zijn(getal tussen 1 en 99999999999)
en die moet php allemaal controleren.
if ($variable) betekend niets meer dan: als de variable bestaat

edit:
niet zo snel editten :P

Acties:
  • 0 Henk 'm!

Verwijderd

Nee, if($variable) betekent: Als de waarde van $variable overeenkomt met true (dus alles wat niet false is, false is: false, 0, null, '', array()). Probeer dit eens:

PHP:
1
2
3
$foo = 'boe!';
$bar = 'foo';
echo($bbar);


Dat zou namelijk gewoon moeten werken, net zoals manier 1.

[ Voor 0% gewijzigd door Verwijderd op 10-11-2002 19:55 . Reden: PHP ipv code tags ]


Acties:
  • 0 Henk 'm!

Verwijderd

MWP schreef op 10 november 2002 @ 19:48:
[...]
if ($variable) betekend niets meer dan: als de variable bestaat
Verwijderd schreef op 10 november 2002 @ 19:54:
Nee, if($variable) betekent: Als de waarde van $variable overeenkomt met true (dus alles wat niet false is, false is: false, 0, null, '', array()).
:P
En ik ben nog wel php noob :)

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
[quote]Verwijderd schreef op 10 November 2002 @ 19:54:
Nee, if($variable) betekent: Als de waarde van $variable overeenkomt met true (dus alles wat niet false is, false is: false, 0, null, '', array()). Probeer dit eens:

PHP:
1
2
3
$foo = 'boe!';
$bar = 'foo';
echo($bbar);


waar haal jij opeens $bbar vandaan?
Je bedoelt zeker $bar?
Maar zelfs dan werkt het script niet

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Verwijderd schreef op 10 November 2002 @ 20:03:
[...]


[...]

:P
En ik ben nog wel php noob :)
ik ook hoor :Y)

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
zullen we hiervoor gewoon de functie isset() gebruiken:
http://www.php.net/isset

Acties:
  • 0 Henk 'm!

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

MWP schreef op 10 november 2002 @ 19:40:
PHP:
1
2
3
4
5
6
7
8
<? 
$welke=1; // declareren en opgeven welke box php moet controleren 
if ($welke){ 
// code als aangevinkt 
} else { 
// code als niet aangevinkt 
} 
?> 
Je geeft hier je variabele $welke de waarde 1. Dit is een numeriek waarde.
Als je hem de waarde wilt geven van je CheckBox zul je waarschijnlijk het volgende moeten doen (niet getest)

$welke = $1;

overigens vindt ik 1 en 2 geen mooie namen voor een checkbox..

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
wasigh schreef op 10 november 2002 @ 20:13:
[...]

Je geeft hier je variabele $welke de waarde 1. Dit is een numeriek waarde.
Als je hem de waarde wilt geven van je CheckBox zul je waarschijnlijk het volgende moeten doen (niet getest)

$welke = $1;

overigens vindt ik 1 en 2 geen mooie namen voor een checkbox..
klopt, het zijn geen mooi namen maar daar gaat het mij niet om.
hij moet controleren of iemand een bepaalde nieuwsbrief wil ontvangen, en als het vinkje aanstaat, moet hij deze in een database aanvinken.
maar helaas, jouw methode werkt niet :-(

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Wat d88 jullie daranaast van $_POST[] & $_GET[]. Dit is blubber PHP! :(

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

PHP:
1
2
3
4
if (isset($_POST['mycheckbox']))
{
    // checkbox checked
}


Register globals is vies daar hebben we nu de superglobals $_GET, $_POST, etc voor. Beetje basic PHP dit niet?

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Bosmonster schreef op 10 November 2002 @ 20:24:
PHP:
1
2
3
4
if (isset($_POST['mycheckbox']))
{
    // checkbox checked
}


Register globals is vies daar hebben we nu de superglobals $_GET, $_POST, etc voor. Beetje basic PHP dit niet?
kan wel zijn, maar daarmee is het probleem nog niet opgelost }:O :P

Acties:
  • 0 Henk 'm!

Verwijderd

$1 kan en mag niet :)

Een variabele moet met een letter of een underscore (_) beginnen, dus; $_1

PHP:
1
2
3
4
5
6
7
8
if(isset($_GET['var_naam']))
{
    // TRUE
}
else
{
    // FALSE
}


Moet gewoon werken hoor...

[ Voor 0% gewijzigd door Verwijderd op 10-11-2002 20:28 . Reden: Typefoutje ]


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Verwijderd schreef op 10 november 2002 @ 20:28:
$1 kan en mag niet :)

Een variabele moet met een letter of een underscore (_) beginnen, dus; $_1

PHP:
1
2
3
4
5
6
7
8
if(isset($_GET['var_naam']))
{
    // TRUE
}
else
{
    // FALSE
}


Moet gewoon werken hoor...
daar ben ik (gelukkig) 10 minuten geleden ook achtergekomen, maar hij werkt nog steeds niet :(.
Nu ziet ie er zo uit:
PHP:
1
2
3
4
$wat = $recorda->naam;
if (isset($_POST['$wat'])){
// code
}

(dit is btw tevens de uitwerking die ik jullie nog niet had gestuurd)

[ Voor 0% gewijzigd door MWP op 10-11-2002 20:35 . Reden: oeps! ]


Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Bedoel je dat je een <INPUT TYPE="checkbox" NAME="1"> heb, en wil zien of die aanstaat?

PHP:
1
2
3
4
5
if (isset($_REQUEST['1'])){
        // Checkbox genaamd 1 staat aan
}else{
        //checkbox genaamd 1 staat uit
}

[ Voor 0% gewijzigd door Cipri op 10-11-2002 20:36 . Reden: php ipv code tags :) ]

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Cipri schreef op 10 November 2002 @ 20:31:
PHP:
1
2
3
4
5
if (isset($_REQUEST['1'])){
        // Checkbox genaamd 1 staat aan
}else{
        //checkbox genaamd 1 staat uit
}
Nope, sorry, maar ook dit werkt niet, maar het gaat erom dat hij het vanuit een variable controleerd,
dus niet checkbox1, maar checkbox $nr

Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Wat heb je nou precies? Is beetje vaag voor mij wat et probleem nou precies is :)
Geef eens wat meer info, of een stukje HTML code waar die checkboxes uit gesubmit worden:)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

PHP:
1
2
3
$nr = 1;
$checkname = 'checkbox' . $nr;
echo $_REQUEST[$checkname];

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Cipri schreef op 10 November 2002 @ 20:37:
Wat heb je nou precies? Is beetje vaag voor mij wat et probleem nou precies is :)
Geef eens wat meer info, of een stukje HTML code waar die checkboxes uit gesubmit worden:)
goed, hier de volledige code(inclusief uitwerking)(schrik niet voor de 'basic' manier, en sorry als de lay-out wordt verstoord :P)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
<?
session_start();
$toegang="023";
// require_once("./veilig/check.php");
?>
<html>

<head>
<meta http-equiv="Content-Language" content="nl">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kies hieronder welke nieuwsbrieven jij wenst te ontvangen</title>
</head>
<body>
<?
if ($nieuwsbrief){
print "Bijwerken..<p>";
mysql_connect();
mysql_select_db("users");
$nieuwsbrieven = mysql_query("select * from nieuwsbrief");
$huidig=0;
while ($recorda = mysql_fetch_object($nieuwsbrieven)) { 
print "$recorda->id<br>";
$gebruiker = mysql_query("select * from users where naam='$username'");
$recordb = mysql_fetch_object($gebruiker);
print "$recordb->id | $recordb->nieuwsbrief<br>";
print "$huidig<br>";
$huidig=$recordb->nieuwsbrief;
$controle = $recorda->id;
print "controle: $controle";
$wat = $recorda->naam;
print $wat;
if ($_REQUEST['$recorda->naam']){
print "Ja!<p>";
$huidig = "$huidig$recorda->id";
$sql = "update users set nieuwsbrief=$huidig where naam='$username'";
mysql_query($sql);
}
}
}
?>
<p>Haal het vinkje weg voor de nieuwsbrieven die niet meer wenst te ontvangen, zet een nieuw vinkje voor degene die je wél wilt ontvangen,<br>
 Dit kun je altijd veranderen.
 <?

mysql_connect();
mysql_select_db("users");
$gebruiker = mysql_query("select nieuwsbrief from users where naam='$username'");
$record = mysql_fetch_object($gebruiker);
$brieven=$record->nieuwsbrief;
$nieuwsbrieven = mysql_query("select * from nieuwsbrief");
if (mysql_num_rows($nieuwsbrieven)==0){
print "Er zijn geen nieuwsbrieven beschikbaar";
} else {
print "<form method=\"post\">";
while ($record = mysql_fetch_object($nieuwsbrieven)) { 
      $pos = strrpos($brieven, $record->id);
      if (is_integer($pos)){
      $checked="checked";
      }
      echo "<input type=\"checkbox\" value=\"$record->id\" name=\"$record->naam\" $checked >$record->naam<br>    $record->omschrijving<hr>"; 
      $checked="";
      } 
   echo "<input type=\"submit\" value=\"bijwerken\" name=\"nieuwsbrief\">";
}
?>

Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Ik zie staan onderaan dit:
PHP:
1
      echo "<input type=\"checkbox\" value=\"$record->id\" name=\"$record->naam\" ...

Dat zou de name op $record->naam zetten, maar wat is dat?
Voeg anders deze code eens toe om te kijken wat ie precies submit:
PHP:
1
2
3
print("<PRE>");
print_r($_REQUEST);
print("</PRE>");

en paste de output daarvan eens, dan zie je zo hoe de variabelen heten die je kan opvragen :)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
sorry.. dit bericht hoort hier niet :)

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Array
(
[PHPSESSID] => **censuur**
[MWPXP_media_player] => 1
[Algemeen] => 2
[nieuwsbrief] => bijwerken
)
ik heb in het echte script zie ik nu "letters" gebruikt en geen "cijfers" zie ik nu opeens.(sorry voor de dubbelpost :'()

Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Ahhh, got it nu, je wil uit alle variabelen die gepost zijn de briefen hebben :)
PHP:
1
2
3
4
5
6
$nieuwbrieven = array();
foreach ($_REQUEST as $briefnaam => $value){
    if (is_numeric($value)){
      $nieuwsbrieven[] = $briefnaam;
    }
}

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Cipri schreef op 10 november 2002 @ 20:56:
Ahhh, got it nu, je wil uit alle variabelen die gepost zijn de briefen hebben :)
PHP:
1
2
3
4
5
6
$nieuwbrieven = array();
foreach ($_REQUEST as $briefnaam => $value){
    if (is_numeric($value)){
      $nieuwsbrieven[] = $briefnaam;
    }
}
erm.. kan je dit script misschien even toelichten, want zó goed ben ik nog niet in php :)

Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Hij leest elk element in dat de client opstuurt($_REQUEST), noemt de naam die erbij hoorde $briefnaam, en de waarde van die variabele $value.
Vervolgens kijkt ie of de waarde een nummertje is(is_numeric), en zoja, dan stopt ie de briefnaam in een lijstje.
Na afloop heb je dus ook een $nieuwsbrieven met daarin alle geselecteerde namen :)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin


Acties:
  • 0 Henk 'm!

Verwijderd

Alle nieuwsbrieven een nummer geven en dan zo in je form zetten
<input type="checkbox" value="1" name="nieuwsbrieven[]">
<input type="checkbox" value="2" name="nieuwsbrieven[]">
<input type="checkbox" value="3" name="nieuwsbrieven[]">
<input type="checkbox" value="4" name="nieuwsbrieven[]">

En dan heb je een $_POST['nieuwsbrieven'] wat een array is met alle aangevinkte nieuwsbrieven

Acties:
  • 0 Henk 'm!

  • MWP
  • Registratie: Maart 2001
  • Laatst online: 16-09 10:43
Cipri schreef op 10 November 2002 @ 21:05:
Hij leest elk element in dat de client opstuurt($_REQUEST), noemt de naam die erbij hoorde $briefnaam, en de waarde van die variabele $value.
Vervolgens kijkt ie of de waarde een nummertje is(is_numeric), en zoja, dan stopt ie de briefnaam in een lijstje.
Na afloop heb je dus ook een $nieuwsbrieven met daarin alle geselecteerde namen :)
Héél erg bedankt, het is nu precies zo geworden als het moest worden, nadat ik je scriptje nog wat heb bijgewerkt:
PHP:
1
2
3
4
5
6
7
foreach ($_REQUEST as $recorda->naam => $value){ 
    if (is_numeric($value)){ 
      $huidig="$huidig$value";
      $sql = "update users SET nieuwsbrief='$huidig' where naam='$username'";
      mysql_query($sql);
    } 
}
Verwijderd schreef op 10 November 2002 @ 21:05:
Alle nieuwsbrieven een nummer geven en dan zo in je form zetten
<input type="checkbox" value="1" name="nieuwsbrieven[]">
<input type="checkbox" value="2" name="nieuwsbrieven[]">
<input type="checkbox" value="3" name="nieuwsbrieven[]">
<input type="checkbox" value="4" name="nieuwsbrieven[]">

En dan heb je een $_POST['nieuwsbrieven'] wat een array is met alle aangevinkte nieuwsbrieven
ermm.. dat snap ik niet helemaal.. maargoed, hij doet het, en dat is het belangrijkste :)

Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Wat dj_delta schreef is een simpelere manier om te gebruiken als je een X aantal checkboxen heb.
je krijgt dan uiteindelijk een variabele/array met daarin alle gesubmitte waardes :)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin

Pagina: 1