Avatar billede lerduen Nybegynder
13. juni 2003 - 14:54 Der er 25 kommentarer og
1 løsning

checkbox, radio, field_validator - info vil ikke i databasen?

Hej folkens

resten af mit site virker, undtagen denne del?

Jeg er ikke sikker på hvordan jeg skal definere en field_validator når det drejer sig om data fra en "checkbox"- og en "radio"-form? Der ryger i hvert fald ikke noget i databasen? Problemet er sikkert begge steder men hvordan skal den se ud? Jeg tror jeg er tæt på?

Hvad med den tabel jeg har lavet er det nødvendigt med 2 tabeller når jeg kun vil have et svar fra mit "radio"- input?

Hele koden kan du se nedenfor:

På forhånd tak

Lerduen :-)
Avatar billede lerduen Nybegynder
13. juni 2003 - 14:55 #1
<?php
/*****
profile.php:
This file displays a profile modification form and allows users to update their member profile.

*****/

include_once("config.php");

/*
Skal databasens tabeller defineres anerledes?:
Behøves der en eller flere variable med input type="radio" når jeg kun vil have ET svar?

CREATE TABLE users (
id int(5) NOT NULL auto_increment,
login varchar(15) DEFAULT '0' ,
password varchar(15) DEFAULT '0' ,
email varchar(30) DEFAULT '0' ,
rname varchar(30) DEFAULT '0' ,
aim varchar(15) DEFAULT '0' ,
msn varchar(30) DEFAULT '0' ,
nyhed varchar(30) DEFAULT '0' ,
katalog varchar(30) DEFAULT '0' ,
svar_ja varchar(30) DEFAULT '0' ,
svar_nej varchar(30) DEFAULT '0' ,
PRIMARY KEY (id)
);

*/


// Check logged in already:
checkLoggedIn("yes");

// page title:
$title="Konkurrence!!!";

if($_POST["submit"]){

/* hvordan skal disse field_validators ændres ved checkbox og radio?

field_validator("email", $_POST["email"], "string", 4, 255);
field_validator("string", $_POST["rname"], "string", 4, 255);
field_validator("string", $_POST["aim"], "string", 4, 255);
field_validator("string", $_POST["msn"], "string", 4, 255);
field_validator("string", $_POST["nyhed"], "string", 4, 255);
field_validator("string", $_POST["katalog"], "string", 4, 255);
field_validator("string", $_POST["svar_ja"], "string", 4, 255);
field_validator("string", $_POST["svar_nej"], "string", 4, 255);

/*
Smid data i databasen
*/
// lav query/forespørgsel:
$query="UPDATE users SET email='$_POST[email]', rname='$_POST[rname]', aim='$_POST[aim]',

msn='$_POST[msn]', nyhed='$_POST[nyhed]', katalog='$_POST[katalog]', svar_ja='$_POST[svar_ja]',

svar_nej='$_POST[svar_nej]' WHERE login='$_SESSION[login]'";


$result=mysql_query($query, $link) or die("MySQL query $query failed.  Error if any: ".mysql_error());


$message="Tak, du deltager nu i konkurrencen";
redirect($message);
exit; // exit er nødvendig ellers vil html koden blive vist nedenunder

}

/*
Below here is HTML interposed with PHP.  This HTML is only output if
a. the form hasn't been submitted
b. the form was submitted but errors were detected
*/
?>
<html>
<head>
<title><?php print $title ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php doCSS()?>
</head>
<body>
<h1><?php print $title?></h1>
<?php
//Check if $message is set, and output it if it is:
if(!empty($messages)){
displayErrors($messages);
}

?>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<table>
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php print $_POST["email"] ?>"

maxlength="255"></td></tr>
<tr><td>For- og efternavn:</td><td><input type="text" name="rname" value="<?php print $_POST["rname"] ?>"

maxlength="255"></td></tr>
<tr><td>Gade og nummer</td><td><input type="text" name="aim" value="<?php print $_POST["aim"] ?>"

maxlength="255"></td></tr>
<tr><td>Postnummer og by:</td><td><input type="text" name="msn" value="<?php print $_POST["msn"] ?>"

maxlength="255"></td></tr>

<!----Denne del af formen kan jeg ikke få til at fungere. Data vil ikke lægge sig i tabellen---->

<tr><td>Modtag E-mail med nyheder og tilbud:</td><td><input type="checkbox" name="nyhed" value="<?php print

$_POST["nyhed"] ?>" maxlength="255"></td></tr>
<tr><td>Modtage ½ årligt katalog med posten:</td><td><input type="checkbox" name="katalog" value="<?php

print $_POST["katalog"] ?>" maxlength="255"></td></tr>
<tr><td>Ja, det er korrekt:</td><td><input type="radio" name="valg" value="<?php print $_POST["svar_ja"]

?>" maxlength="255"></td></tr>
<tr><td>Nej, det tror jeg ikke:</td><td><input type="radio" name="valg" value="<?php print

$_POST["svar_nej"] ?>" maxlength="255"></td></tr>

<tr><td>&nbsp;</td><td><input name="submit" type="submit" value="Deltag"></td></tr>
</table>
</form>
</body>
</html>
Avatar billede ohmish Nybegynder
13. juni 2003 - 15:21 #2
du bruger: <input type="radio" name="valg" value="<?php print $_POST["svar_ja"]?>" maxlength="255">

men man kan ikke printe en værdi ud i en checkbox..
men du kan se om den var valgt, og så bruge SELECTED.

Jeg har selv gjort sådan her:

Øverst på siden (ved din formbehandling) skriver du:

<?php
$valg = $_POST['valg'];
if ($valg=="ja" || !isset($valg)) { $check1 = "checked"; $check2=""; } elseif ($valg=="nej") { $check1=""; $check2="checked"; }
// put $valg i databasen.
?>

og i formen.

<input type="radio" name="valg" value="ja" <?php echo $check1; ?> border="0" >ja tak
<input type="radio" name="valg" value="nej" <?php echo $check2; ?> border="0">nej tak


Det er nok at have ét felt i databasen til "valg". så kan det være 1/0 eller ja/nej osv.
Avatar billede ohmish Nybegynder
13. juni 2003 - 15:23 #3
Hov.. jeg mente:

man kan ikke printe en værdi ud i en checkbox ELLER en radioknap...
men du kan se om den var valgt, og så bruge SELECTED eller CHECKED ud fra den bestemte knap.
Avatar billede lerduen Nybegynder
13. juni 2003 - 15:37 #4
Hvad med Field_validator? Den skal vel ændres?
Avatar billede lerduen Nybegynder
13. juni 2003 - 15:48 #5
Da jeg er herre hamrende grøn på php-området så må jeg bede om en anelse uddybning :-(

Sidst jeg fik svar fra dig ohmish brugte jeg en krig på at forstå hvad du mente, men da jeg endelig var med, så lykkedes det også at rette fejlen:-)

Denne gang er det dog lidt for avanceret. Kunne jeg evt. lokke dig til ændre koden?
Avatar billede ohmish Nybegynder
13. juni 2003 - 15:48 #6
Tabellen:

CREATE TABLE users (
id int(5) NOT NULL auto_increment,
login varchar(15) DEFAULT '0' ,
password varchar(15) DEFAULT '0' ,
email varchar(30) DEFAULT '0' ,
rname varchar(30) DEFAULT '0' ,
aim varchar(15) DEFAULT '0' ,
msn varchar(30) DEFAULT '0' ,
nyhed varchar(30) DEFAULT '0' ,
katalog varchar(30) DEFAULT '0' ,
svar varchar(4) DEFAULT '0'
PRIMARY KEY (id)
);


Du behøver slet ikke have noget mht. svar i validatoren. $svar vil altid være enten ja eller nej, så længe det er af radiotypen.

bare smid $_POST['svar'] ind i svar-feltet i databasen.
Avatar billede ohmish Nybegynder
13. juni 2003 - 15:50 #7
hehe.. sorry :)
Avatar billede lerduen Nybegynder
13. juni 2003 - 15:53 #8
i dit eksempel med $valg = $_POST['valg']; skal jeg så ændre tabellen i databasen til valg varchar(30) DEFAULT '0' ,
?
Avatar billede lerduen Nybegynder
13. juni 2003 - 15:54 #9
jah, okay så passerede spg og svar vist hinanden :-)
Avatar billede ohmish Nybegynder
13. juni 2003 - 15:55 #10
jeg retter lige det hele til
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:00 #11
det er sgu fornemt :-)

Jeg er meget spændt da det er sidste hånd på værket mht. den tekniske del.

Resten er finpudsning og ren html :-)
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:03 #12
så kan jeg jo passende bruge tiden fornuftigt og ændre tabellen som du har beskrevet og slette Field_validator
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:11 #13
Så er databasen rettet til, der manglede dog lige et komma før phpadmin vil æde den :-)
Avatar billede ohmish Nybegynder
13. juni 2003 - 16:18 #14
Sådan.. du ska lige rette databasen igen.
håber det hele virker.

<?php
/*****
profile.php:
This file displays a profile modification form and allows users to update their member profile.

*****/

include_once("config.php");

/*
Skal databasens tabeller defineres anerledes?:
Behøves der en eller flere variable med input type="radio" når jeg kun vil have ET svar?

CREATE TABLE users (
id int(5) NOT NULL auto_increment,
login varchar(15) DEFAULT '0' ,
password varchar(15) DEFAULT '0' ,
email varchar(30) DEFAULT '0' ,
rname varchar(30) DEFAULT '0' ,
aim varchar(15) DEFAULT '0' ,
msn varchar(30) DEFAULT '0' ,
nyhed varchar(4) DEFAULT '0' ,
katalog varchar(4) DEFAULT '0' ,
svar varchar(4) DEFAULT '0'

PRIMARY KEY (id)
);


*/


// Check logged in already:
checkLoggedIn("yes");

// page title:
$title="Konkurrence!!!";

if($_POST["submit"]){

$valg = $_POST['valg'];
if ($valg=="ja" || !isset($valg)) { $valg1 = "checked"; $valg2=""; } elseif ($valg=="nej") { $valg1=""; $valg2="checked"; }

$nyhed = $_POST['nyhed'];
if ($nyhed=="ja") { $nyhedcheck = "checked"; } else { $nyhed="nej"; $nyhedcheck = ""; }

$katalog = $_POST['katalog'];
if ($katalog=="ja") { $katalogcheck = "checked"; } else { $katalog="nej"; $katalogcheck = ""; }

field_validator("email", $_POST["email"], "string", 4, 255);
field_validator("string", $_POST["rname"], "string", 4, 255);
field_validator("string", $_POST["aim"], "string", 4, 255);
field_validator("string", $_POST["msn"], "string", 4, 255);

/*
Smid data i databasen
*/
// lav query/forespørgsel:
$query="UPDATE users SET email='$_POST[email]', rname='$_POST[rname]', aim='$_POST[aim]',
msn='$_POST[msn]', nyhed='$nyhed', katalog='$katalog', svar='$_POST[svar]' WHERE login='$_SESSION[login]'";

$result=mysql_query($query, $link) or die("MySQL query $query failed.  Error if any: ".mysql_error());


$message="Tak, du deltager nu i konkurrencen";
redirect($message);
exit; // exit er nødvendig ellers vil html koden blive vist nedenunder

}

/*
Below here is HTML interposed with PHP.  This HTML is only output if
a. the form hasn't been submitted
b. the form was submitted but errors were detected
*/
?>
<html>
<head>
<title><?php print $title ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php doCSS()?>
</head>
<body>
<h1><?php print $title?></h1>
<?php
//Check if $message is set, and output it if it is:
if(!empty($messages)){
displayErrors($messages);
}

?>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<table>
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php print $_POST["email"] ?>"

maxlength="255"></td></tr>
<tr><td>For- og efternavn:</td><td><input type="text" name="rname" value="<?php print $_POST["rname"] ?>"

maxlength="255"></td></tr>
<tr><td>Gade og nummer</td><td><input type="text" name="aim" value="<?php print $_POST["aim"] ?>"

maxlength="255"></td></tr>
<tr><td>Postnummer og by:</td><td><input type="text" name="msn" value="<?php print $_POST["msn"] ?>"

maxlength="255"></td></tr>



<!----Denne del af formen kan jeg ikke få til at fungere. Data vil ikke lægge sig i tabellen---->

<tr><td>Modtag E-mail med nyheder og tilbud:</td><td><input type="checkbox" <?php echo $nyhedcheck; ?> name="nyhed" value="ja"></td></tr>
<tr><td>Modtage ½ årligt katalog med posten:</td><td><input type="checkbox" <?php echo $katalogcheck; ?> name="katalog" value="ja"></td></tr>
<tr><td>Ja, det er korrekt:</td><td><input type="radio" <?php echo $valg1; ?> name="valg" value="ja"></td></tr>
<tr><td>Nej, det tror jeg ikke:</td><td><input type="radio" <?php echo $valg2; ?> name="valg" value="nej"></td></tr>

<tr><td>&nbsp;</td><td><input name="submit" type="submit" value="Deltag"></td></tr>
</table>
</form>
</body>
</html>
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:19 #15
he he... du trækker spændingen ud ;-)
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:20 #16
tester lige med det samme ... øjeblik
Avatar billede ohmish Nybegynder
13. juni 2003 - 16:22 #17
hva har du i config.php udover database forbindelse ?
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:26 #18
Delvist succes...
Nu kommer svarene på om man vil have nyhedsbrev og tilsendt et katalog i hvert fald databasen..kanon

Men der er ikke nogen svar på konkurrencen?
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:31 #19
***********config.php*************
<?php
include_once("functions.php");

session_register("login");
session_register("password");
session_register("loggedIn");

$messages=array();

$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="simpleauth";

connectToDB();
?>
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:33 #20
Henter lige nogle smøger og en cola er tilbage om fem minutter...

Hvordan har du lært dig selv alt det her????
Avatar billede lerduen Nybegynder
13. juni 2003 - 16:47 #21
Så er løsningen i hus... skulle bare lige rette name="valg" til name="svar" ...
Meget fint at du ikke forære det hele væk, så jeg lærer at tænke selv :-)

MANGE tak for hjælpen
Avatar billede ohmish Nybegynder
13. juni 2003 - 16:49 #22
aaah...

ret til:

/*
Smid data i databasen
*/
// lav query/forespørgsel:
$query="UPDATE users SET email='$_POST[email]', rname='$_POST[rname]', aim='$_POST[aim]',
msn='$_POST[msn]', nyhed='$nyhed', katalog='$katalog', svar='$valg' WHERE login='$_SESSION[login]'";

$result=mysql_query($query, $link) or die("MySQL query $query failed.  Error if any: ".mysql_error());

jamen det er noget alle lærer efterhånden, hvis man bruger meget tid på det. søg, leg, vær stædig, søg, leg. Læs alle artikler der har med php at gøre (også det tørre), og afprøv det evt.
Avatar billede ohmish Nybegynder
13. juni 2003 - 16:50 #23
præcis! du fandt fejlen. :)
selv tak.
Avatar billede lerduen Nybegynder
13. juni 2003 - 17:11 #24
Er der nogen forskel på om jeg har rettet fejlen på din eller min måde? Jeg er ikke helt på højde med om den ene løsning er bedre end den anden ... her snakker jeg om de ovenstående tre kommentarer
Avatar billede ohmish Nybegynder
13. juni 2003 - 17:26 #25
tjaaa.. det bedste er vel at holde navnet ens overalt inkl. i databasen.

så undgår man forvirring og mistet overblik over koden.

lige nu er navnet "valg" mest brugt.. så ret "svar" til "valg" hvor du kan.
Avatar billede lerduen Nybegynder
13. juni 2003 - 17:35 #26
succesoplevelse :-)

takker atter engang for hjælpen

mvh.
Lerduen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester