/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
php + mysql + checkboxes
Fra : Jacob d'Andrade


Dato : 12-03-09 09:41

Hej Ng

Jeg sidder og fumler med at lave et par php sider, hvor jeg henter nogle
data ud fra en database og præsentere et antal check boxes alt efter hvor
mange poster der nu bliver hentet ud.

Min nuværende kode i t1.php ser således ud:

<?
include("../config.php");
$sql = "select * from contactgroups order by name asc";
$result = mysql_query($sql, $conn) or die (mysql_error());

print "<FORM METHOD=POST ACTION=t2.php>";
while ($grarr = mysql_fetch_array($result)){
$groups = $grarr['name'];
print "<INPUT NAME=$groups TYPE=Checkbox> $groups";
print "<br>";
}


print "<INPUT TYPE=SUBMIT>";
print "</FORM>";
?>

Overstående printer fint alle mine data ud med hver sin checkbox til.

Dataene ser sådan her ud
Admins
Netadmins
Driveadmins

Hver har så en box, og man skal kunne checke alle dem af man ønsker.

Min nuværende SLAM kode i t2.php ser således ud:

<?
include("../config.php");
$sql = "select * from contactgroups order by name asc";
$result = mysql_query($sql, $conn) or die (mysql_error());
while ($grarr = mysql_fetch_array($result)){
$groups = $grarr['name'];

if ($_POST[$groups] == $groups){
print "valgt: $groups<br>";
}
}

?>

Men der sker intet: og dette kommer i loggen:
[Thu Mar 12 08:46:24 2009] [error] [client 1.2.3.4] PHP Notice: Undefined
index: driveadmins in /var/www/html/t2.php on line 8, referer:
http://testsrv/t1.php

Jeg er klar over at koden kunne være meget kønnere og simplere, men jeg er
ikke den store PHP haj ... endnu

Håber der er et par venlige sjæle der kan hjælpe lidt.

Mvh Jacob



 
 
Johan Holst Nielsen (12-03-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 12-03-09 10:13

Jacob d'Andrade wrote:
> if ($_POST[$groups] == $groups){
> print "valgt: $groups<br>";
> }

Prøv blot


if(!empty($_POST[$groups])) {
echo "valgt: ".$groups."<br />";
}

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Johan Holst Nielsen (12-03-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 12-03-09 10:14

Johan Holst Nielsen wrote:
> Jacob d'Andrade wrote:
>> if ($_POST[$groups] == $groups){
>> print "valgt: $groups<br>";
>> }
>
> Prøv blot
>
>
> if(!empty($_POST[$groups])) {
> echo "valgt: ".$groups."<br />";
> }

Rent praksis burde man nok bruge

if(isset($_POST[$groups])) {

iøvrigt ;) Sorry.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (12-03-2009)
Kommentar
Fra : Dan Storm


Dato : 12-03-09 10:22

Johan Holst Nielsen skrev:
> if(!empty($_POST[$groups])) {
> echo "valgt: ".$groups."<br />";
> }

Med den HTML formular han har lavet vil ovenstående give notices i hans
log og hans condition vil aldrig blive mødt.

Hans checkboxe har ingen værdi.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Johan Holst Nielsen (12-03-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 12-03-09 10:33

Dan Storm wrote:
> Johan Holst Nielsen skrev:
>> if(!empty($_POST[$groups])) {
>> echo "valgt: ".$groups."<br />";
>> }
>
> Med den HTML formular han har lavet vil ovenstående give notices i hans
> log og hans condition vil aldrig blive mødt.
>
> Hans checkboxe har ingen værdi.

Nu har jeg ikke testet - men den smider vel blot en '' værdi med så?
Ændrede også mit svar - et par minutter senere - til at køre en isset i
stedet for empty - da det også er mere korrekt at tjekke hvorvidt
værdien er sat - end at den er tøm.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (12-03-2009)
Kommentar
Fra : Dan Storm


Dato : 12-03-09 10:47

Johan Holst Nielsen skrev:
> Nu har jeg ikke testet - men den smider vel blot en '' værdi med så?

Det skulle man mene, ja. Jeg har ikke selv testet det, men synes at
logikken i det virkede meget fornuftig. ;)

> Ændrede også mit svar - et par minutter senere - til at køre en isset i
> stedet for empty - da det også er mere korrekt at tjekke hvorvidt
> værdien er sat - end at den er tøm.

Ganske enig :)

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Dan Storm (12-03-2009)
Kommentar
Fra : Dan Storm


Dato : 12-03-09 10:21

Jacob d'Andrade skrev:
> Min nuværende kode i t1.php ser således ud:

Ja, kønt er det ikke... :)

> <?
> [SNIP KODE]
> ?>

Prøv det her i t1.php
<?
include("../config.php");
$sql = "select * from contactgroups order by name asc";
$result = mysql_query($sql, $conn) or die (mysql_error());

print "<form method=\"pos\t" action=\"t2.php\">";
   while ($grarr = mysql_fetch_array($result))
   {
      $groups = $grarr["name"];
      print "<input type=\"checkbox\" NAME=\"groups[".$groups."]\"
value=\"true\"> ".$groups;
      print "<br>";
   }
print "<input type=\"submit\" name="submit">";
print "</form>";
?>

> Overstående printer fint alle mine data ud med hver sin checkbox til.
>
> Min nuværende SLAM kode i t2.php ser således ud:
>
> <?
> [SNIP KODE]
> ?>

t2.php kan så se således ud:

<?
include("../config.php");

$groups = $_POST["groups"];
if(count($groups) > 0)
{
   foreach($groups as $value)
      echo $value."<br />";
}
?>

> Men der sker intet: og dette kommer i loggen:
> [Thu Mar 12 08:46:24 2009] [error] [client 1.2.3.4] PHP Notice:
> Undefined index: driveadmins in /var/www/html/t2.php on line 8,
> referer: http://testsrv/t1.php

Linie 8: if ($_POST[$groups] == $groups){
Den kommer fordi du har et index der ikke er sat i dit POST array.

Hvis du f.eks. ikke har checket gruppen Netadmins af, forsøger du
alligevel at tilgå indexet $_POST["Netadmins"] og deror får du en PHP
notice i din log.
Samtidig har du ikke, i din form, angivet værdien af dine posts og
derfor vil din kondition aldrig blive sand, selvom indexet eksisterer.

Mit forslag for t2.php afviger markant fra din oprindelige løsning.


> Jeg er klar over at koden kunne være meget kønnere og simplere

Jaeh, der er da lige nogle ting du skal forbedre. :) Men jeg ville nok
starte med at få styr på min HTML inden jeg fortsatte med PHP'en.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Jacob d'Andrade (13-03-2009)
Kommentar
Fra : Jacob d'Andrade


Dato : 13-03-09 07:47


"Dan Storm" <shadyz_REMOVETHIS_@err0r.dk> skrev i meddelelsen
news:49b8d3f1$0$15887$edfadb0f@dtext01.news.tele.dk...
> Jacob d'Andrade skrev:
>> Min nuværende kode i t1.php ser således ud:
>
> Ja, kønt er det ikke... :)

Nej, men øvelse gør forhåbenligt mester


>
>> <?
>> [SNIP KODE]
>> ?>
>
> Prøv det her i t1.php
> <?
> include("../config.php");
> $sql = "select * from contactgroups order by name asc";
> $result = mysql_query($sql, $conn) or die (mysql_error());
>
> print "<form method=\"pos\t" action=\"t2.php\">";
> while ($grarr = mysql_fetch_array($result))
> {
> $groups = $grarr["name"];
> print "<input type=\"checkbox\" NAME=\"groups[".$groups."]\"
> value=\"true\"> ".$groups;
> print "<br>";
> }
> print "<input type=\"submit\" name="submit">";
> print "</form>";
> ?>
>
>> Overstående printer fint alle mine data ud med hver sin checkbox til.
>>
>> Min nuværende SLAM kode i t2.php ser således ud:
>>
>> <?
>> [SNIP KODE]
>> ?>
>
> t2.php kan så se således ud:
>
> <?
> include("../config.php");
>
> $groups = $_POST["groups"];
> if(count($groups) > 0)
> {
> foreach($groups as $value)
> echo $value."<br />";
> }
> ?>
>
>> Men der sker intet: og dette kommer i loggen:
>> [Thu Mar 12 08:46:24 2009] [error] [client 1.2.3.4] PHP Notice:
>> Undefined index: driveadmins in /var/www/html/t2.php on line 8, referer:
>> http://testsrv/t1.php
>
> Linie 8: if ($_POST[$groups] == $groups){
> Den kommer fordi du har et index der ikke er sat i dit POST array.
>
> Hvis du f.eks. ikke har checket gruppen Netadmins af, forsøger du
> alligevel at tilgå indexet $_POST["Netadmins"] og deror får du en PHP
> notice i din log.
> Samtidig har du ikke, i din form, angivet værdien af dine posts og derfor
> vil din kondition aldrig blive sand, selvom indexet eksisterer.
>
> Mit forslag for t2.php afviger markant fra din oprindelige løsning.
>
>
>> Jeg er klar over at koden kunne være meget kønnere og simplere
>
> Jaeh, der er da lige nogle ting du skal forbedre. :) Men jeg ville nok
> starte med at få styr på min HTML inden jeg fortsatte med PHP'en.
>
>
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
> People who claim they don't let little things bother
> them have never slept in a room with a single mosquito.

Jeg takker rigtig mange gange for jeres hjælp, det løste problemet

Mvh Jacob


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste