[PHP] Waarde uitlezen uit radio buttons... probleem!

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
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
    $fullname = mysql_result($result,0,"full_name");
    echo "<h2>Rechten aanpassen van $fullname:</h2>";
    echo "<p>Mag de gebruiker in het gebruikersbeheer?<br><br>";

    echo "<form method='post' action='rechten.php'>";

    $max_register = "1";

    for($i1=0;$i1<=$max_register;$i1++) {  
        if ($i1 == "0") {
            $naam1 = "Geen toegang.";
        }
        else if ($i1 == "1") {
            $naam1 = "Wel toegang.";
        }
    
    echo"<input type=radio method=get name=rights value=$i1 ";  
        if($i1 == $register_rights){  
            echo"checked";
             
        }  
        echo">$naam1";
        echo"<br>";  
    }
    echo "<form>";
    $new_register = $_POST['rights'];
    echo "Register: ",$new_register;
?>


Ik heb de volgende code. Het probleem is hier dat de variabele "$new_register" leeg blijft, terwijl er eigenlijk de waarde van de radio button in zou moet komen te staan.

Er komen via dit stukje code 2 radio keuzerondjes, en als de eerste is aangevinkt moet de waarde van $new_register 0 zijn, wanneer de 2e is aangevinkt moet deze waarde 1 zijn.

Ook als ik "print_r($_POST);" afdruk, staat er een leeg array. Weet iemand misschien wat het probleem hier kan zijn? Ik heb al zitten zoeken op google en got, maar volgens mij is de code gewoon goed. Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Is het formulier wel verstuurd? Volgens deze code niet in ieder geval.

Verder doe je concatenatie van strings in PHP met een .
dus:
PHP:
28
echo "Register: ".$new_register;


Je sluit ook je <form> niet af op regel 26. De code zou ik als ik jou was in ieder geval nog even goed nakijken :)

edit:
Kleine toevoeging... :)

[ Voor 37% gewijzigd door RupS op 12-11-2003 09:17 ]


Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Die echo heb ik aangepast, geen verschil.

Maar over dat formulier. Ik moet dus een submit button of iets dergelijks maken voordat die variabelen worden geset? Ik dacht dat ze nu ook gewoon werden geset...

edit:
Owh hehe, klein foutje met dat form :p

[ Voor 12% gewijzigd door shorty op 12-11-2003 09:19 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

En het FORM afsluiten? Er staat nu op het einde <form> dit zou moeten zijn </form> :)
Of is dat alleen een typfout in je post hier?

___ Edit ___

Ja je moet een submit maken, en hier ook daadwerkelijk op klikken voor de vars geset worden. :) Anders kan je net zo goed in je PHP code gelijk de waarde toezeggen. :)
Of met javascript een onLoad(); gebruiken om te submitten, maar dat gebeurd pas na je php klaar is...

[ Voor 56% gewijzigd door OkkE op 12-11-2003 09:20 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:29

crisp

Devver

Pixelated

verder sluit je je form niet af en heb je een method=get in je input staan die daar niet hoort.
Ik hoop ook niet dat dit je volledige pagina is, want dan mist er wel meer...

[ Voor 31% gewijzigd door crisp op 12-11-2003 09:20 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Het form niet afgesloten was een typefout. Die method get heb ik weg gehaald, dacht dat ik die daar neer moest zetten omdat de waarde die in de radio buttons komt wordt uitgelezen uit een mysql database.

Is niet m'n volledige pagina nee, alleen het stuk waar ik "denk" dat het verkeerd gaat.

[ Voor 19% gewijzigd door shorty op 12-11-2003 09:21 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Dit is een globaal idee hoe je het zou kunnen doen :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
if ( empty ( $_POST['foo'] ) ) {
?>

<form method=post action=thispage.php>
<input type=ratio name=foo value=bar>
<input type=submit>
</form>

<?
} else {

print "Value of foo is: " . $_POST['foo'];

}
?>


___ Edit ____

PHP:
1
echo"<input type=radio method=get name=rights value=$i1 ";


Deze regel zal mis gaan wanneer de variabele $i1 een string met spaties bevat. En Ook die "method" daar snap ik niet... Ik zou het veranderen in:

PHP:
1
echo '<input type="radio" name="rights" value="' . $i1 '"';

__ Edit: Binnen de '-s word idd $i1 niet vervangen, lomp.. zo moet het dus.

[ Voor 64% gewijzigd door OkkE op 12-11-2003 09:51 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 17:37

Koffie

Koffiebierbrouwer

Braaimeneer

* Koffie is dan wel geen goede coder ofzo :P
Maar in het begin heb je het over POST, en dan weer over GET.
Maar negens zie ik een submit :?

Of snap ik het ff helemaal niet ? :P

=[edit]=
Anders ram je ff op F5 voordat je replyd :P

[ Voor 14% gewijzigd door Koffie op 12-11-2003 09:33 ]

Tijd voor een nieuwe sig..


Acties:
  • 0 Henk 'm!

  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 29-05 01:29
[quote]ThAcRoW schreef op 12 november 2003 @ 09:06:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    $max_register = "1";

    for($i1=0;$i1<=$max_register;$i1++) {  
        if ($i1 == "0") {
            $naam1 = "Geen toegang.";
        }
        else if ($i1 == "1") {
            $naam1 = "Wel toegang.";
        }
    
    echo"<input type=radio method=get name=rights value=$i1 ";  
        if($i1 == $register_rights){  
            echo"checked";
             
        }  
?>

Dan heb ik hier toch sterke twijfels over het nut hiervan hoor.
Je hebt een variabele $i1, die hoog je op tot $max_register (in dit geval krijgt $i1 de waardes 0 en 1.. Hoe nuttig :X ) en de waarde van $i1 gebruik je weer om wat radiobuttons te setten?

ennuh, $register_rights staat nergens gedeclareerd?

Anyways, die hele for-loop is vrij nutteloos, want tegen het einde van de loop is $i1 gelijk aan 1 en heeft $naam1 altijd de waarde "wel toegang".

Je hebt wat denkfoutjes in je for-loop zitten.

Ik neem aan dat $max_register een aantal... rechten? ofzo moet voorstellen... en dat er ergens een variabele is $i1 (is dat je loop-iterator? je gebruikt het nogal voor wat meer dingen.. in het kan best zijn dat je die $i1 kwijt bent buiten je for-loop.. scope enzo. Wil je die $i1 verder gebruiken in je script zal je die toch eerst moeten declareren).

PHP:
1
2
3
4
5
$i1=0
for ($i1;$i1<$max_register;$i1++)
{
...
}


en dan kan je $i1 verderop in je script nog gebruiken, het nut daravan ontgaat me echter omdat deze altijd na afloop van je for-loop $max_register als waarde zal hebben (tenzij je ergens in je for-loop een break; zet, dus voortijdig afbreekt. En dan ontgaat het nut mij nog steeds.

PHP:
1
2
3
4
5
6
7
8
$i1 = $result->rechten;
switch ($i1)
{
case 0: $naam1 = "Geen toegang"; break;
case 1: $naam1 = "Admin toegang"; break;
case 2: $naam1 = "Post toegang"; break;
default: $naam1 = "Geen toegang";
}


Misschien dat je zoiets zou willen? Verder, een beetje verdieping in je for-loops, while-loops, switch-statements, if-then-else constructies, ergo: algemene programmeer kennis, zou geen kwaad kunnen (ow, en ook de scope van je variabelen... )

[ Voor 5% gewijzigd door cavey op 12-11-2003 09:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ik denk dat ie meer een maximaal aantal users wil instellen... alleen is dit niet de manier om het te doen... en sowieso niet met een for-next loop :X

Bonvendien kan je ook de echo over meer regels laten lopen... dit maakt het geheel weer een stuk leesbarer... dus:

code:
1
2
3
4
5
6
7
echo' 
           <Br>
           <br>
           <form>
              <input bla bla bla>
               ...
            </form>';

natuurlijk moet je de echo afsluiten als je gegevens nodig hebt van je database ofzo...

[ Voor 65% gewijzigd door Verwijderd op 12-11-2003 09:52 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

OkkE schreef op 12 november 2003 @ 09:24:
PHP:
1
echo '<input type="radio" name="rights" value="$i1"';
Je hebt gelijk dat de TS enorm ranzige html aan het maken is, maar dit stukje werkt natuurlijk niet he ;)/ Binnen de '-s wordt de $i1 niet vervangen ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Bedankt voor jullie hulp tot zover!

Die $max_register gebruik ik om het aantal keuzerondjes aan te geven. Bij dit recht zijn er toevallig maar 2 nodig (dus de waarde is 1), maar bij sommige rechten zijn er 5 nodig, vandaar.

$register_rights staat wel gedeclareerd, maar in een stuk code daarboven. Ik zal een wat completere code posten onderaan deze reply.

$naam1 heeft gtegen het einde van de for loop niet altijd de waarde "wel toegang", maar de waarde die uit de mysql database wordt gehaald.

Een stuk completer 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
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
    $check = "SELECT * FROM user1 ORDER BY username DESC LIMIT 99";
    $result = mysql_query($check) or die(mysql_error());
    $num_rows = mysql_num_rows($result);
    $teller = $num_rows;
        
    while($teller > 0) {
        $teller = $teller - 1;
        //echo $teller;
        $gebruikersnaam = mysql_result($result,$teller,"username");
        $fullname = mysql_result($result,$teller,"full_name");

        echo "<strong>";
        echo "<a href=/rechten1.php?username=$gebruikersnaam>$gebruikersnaam</a>";
        echo "</strong>";
        echo " (".$fullname.")"; 
        echo "<br>";
    }

    $username = $_GET [ 'username' ];
    $check = "SELECT * FROM user1 WHERE username = '".$_GET [ 'username' ]."'";
    $result = mysql_query($check) or die(mysql_error());
    $num_rows = mysql_num_rows($result);
    $teller = $num_rows;    

    if (!($username)) { 
        die(' ');
    }
    else {  

        $check_register = "SELECT waarde FROM rechten_register WHERE username = '".$username."'";
        $result_register = mysql_query($check_register) or die(mysql_error());
        $register_rights = mysql_result($result_register,0,"waarde");
    
        $check_resultaten = "SELECT waarde FROM rechten_search WHERE username = '".$username."'";
        $result_resultaten = mysql_query($check_resultaten) or die(mysql_error());
        $resultaten_rights = mysql_result($result_resultaten,0,"waarde");
    }

    echo "</p>";

    $fullname = mysql_result($result,0,"full_name");
    echo "<h2>Rechten aanpassen van $fullname:</h2>";
    echo "<p>Mag de gebruiker in het gebruikersbeheer?<br><br>";

    echo "<form method='post' action='rechten1.php'>";

    $max_register = "1";
    $i1 = "0";
    for($i1;$i1<=$max_register;$i1++) {  
        if ($i1 == "0") {
            $naam1 = "Geen toegang.";
        }
        else if ($i1 == "1") {
            $naam1 = "Wel toegang.";
        }
    
        echo '<input type="radio" name="rights" value="$i1"';
  
        if($i1 == $register_rights){  
            echo"checked";
             
        }  
        echo">$naam1";
        echo"<br>";  
    }
 
    echo "<p>Welke resultaten mag de gebruiker zien?<br><br>";

    if ( empty ( $_POST['rights'] ) ) { 

?> 

<input type=submit> 
</form> 

<?php 
    } else { 
        print "Waarde van rights is: " . $_POST['rights']; 
    } 
?> 

</p>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Verwijderd schreef op 12 november 2003 @ 09:43:
ik denk dat ie meer een maximaal aantal users wil instellen... alleen is dit niet de manier om het te doen... en sowieso niet met een for-next loop :X

Bonvendien kan je ook de echo over meer regels laten lopen... dit maakt het geheel weer een stuk leesbarer...

natuurlijk moet je de echo afsluiten als je gegevens nodig hebt van je database ofzo...
Jep, idd. Kan allemaal nog een stuk netter denk ik maar ik heb d'r al zoveel in zitten veranderen dat het er niet meer uit ziet :)

[ Voor 16% gewijzigd door shorty op 12-11-2003 09:59 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Heb ik ook eens met een site gehad, en toen (door een crash) was ik de hele code kwijt en moest alles opnieuw schrijven... koste wel wat tijd, maar daarna zag de code tenminste er redelijk uit en zo kan je alles ook beter onderhouden :)

Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Jep klopt. Maar m'n eerste doel is dat alles werkt i.v.m. tijdsnood. Daarna kan ik het netjes gaan maken maar heeft niet de hoogste prioriteit op dit moment.

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Nette code voorkomt vaak ook errors. En het opsporen van fouten (debuggen) gaat stukken sneller met nette code. Plus dat het extra werk is om nu bagger code te schrijven en dit later netjes te maken.

Netjes != Geoptimaliseerd

Anyways, ik zie gelijk in regels 4 en 5 al iets nutteloos; je doet eigenlijk dit:

code:
1
2
A = 1 + 1
B = A
Terwijl je dan net zo goed gelijk dit kan doen:

code:
1
B = 1 + 1

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Hmm probleem opgelost. Het probleem was dat wanneer ik op de submit klikte, hij de variabele $username vergat, die ik meegaf in de link. Heb nu dit toegevoegd:

PHP:
1
echo "<form method='post' action='rechten1.php?username=$username'>";


Is er niet een makkelijkere manier om alle variabelen mee te nemen als er gesubmit is?

Acties:
  • 0 Henk 'm!

Verwijderd

ja, dat kan... je gebruikt <input hidden name="username" value=$username> ofzo... moet uiteraard tussen <form></form> staan... dat werkt iig :)
Pagina: 1