Avatar billede fbb Nybegynder
22. maj 2004 - 13:27 Der er 32 kommentarer og
1 løsning

Afstemning (radio knap)

Hej, jeg skal lave noget ala et hot or not system.

Jeg kan bare ikke helt finde ud af hvordan jeg laver min "radio" ting. altså hvordan min form skal se ud, så når man klikker på (Det tal der det ud fra) så sender den det.) Altså så man ikke skal klikke på "send".. Men det gør den auto.

så hvis i kan hjælp så er i meget velkommen ;)
Avatar billede dennismp Nybegynder
22. maj 2004 - 13:29 #1
Prøv i javascript :-)
Avatar billede dennismp Nybegynder
22. maj 2004 - 13:30 #2
men det er noget i stil med:

<input type="radio" onClick="this.form.submit()" name.. value ..>
Avatar billede fbb Nybegynder
22. maj 2004 - 13:42 #3
hmm, bare fordi jeg skal jo også have det til at smide det i database bagefter..
Avatar billede jammerlab Nybegynder
22. maj 2004 - 14:19 #4
<input type="radio" onClick="this.form.submit()" name="vote" value="1">
<input type="radio" onClick="this.form.submit()" name="vote" value="2">
<input type="radio" onClick="this.form.submit()" name="vote" value="3">

osv...

og den variabel du så skal smide i din database er så bare $vote
Avatar billede fbb Nybegynder
22. maj 2004 - 14:25 #5
ok kigger lige på det senere skal lige i IKEA! ;D
Avatar billede dennismp Nybegynder
22. maj 2004 - 14:27 #6
talker: det er jo det samme som jeg skrev ?

fbb:
<form method="post" action="vote.php">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">
<input type="radio" onClick="this.form.submit()" name="vote" value="2">
<input type="radio" onClick="this.form.submit()" name="vote" value="3">
</form>

i din vote.php:

if( isset($_POST['vote']) ) {
  $vote = $_POST['vote'];
  og gem vote i databasen
}

Ligesom man normalt gør, når man arbejder med forms.
Avatar billede jammerlab Nybegynder
22. maj 2004 - 14:29 #7
dennismp> ja? Ville bare gøre dit svar lidt mere tydeligt for ham da han ikke forstod det? Du behøver ikke gå amok lille ven jeg prøver ikke at tage noget kredit for dit svar...
Avatar billede fbb Nybegynder
22. maj 2004 - 19:09 #8
Jeg har forsøgt mig lidt, men kan ikke rigtigt få det til at virke, den updater ikke + min header går kun til vis.php når man klikker på et tal.
mit kode + dump!
<?
require_once('db.php');
$res = mysql_query("SELECT * FROM numsegejlgalleri where id ='$id'");
while ($row = mysql_fetch_array($res)) {
echo'<img border="0" src="galleri/'.$row[file_name].'"> vote: '.$row[vote].'';

if( isset($_POST['vote']) ) {
  $vote2 = $_POST['vote'];
  $vote2 = $row[vote] + $vote2;
  mysql_query("UPDATE numsegejlgalleri set vote = '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}
}
?>
<form method="post" action="vis.php">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
CREATE TABLE `numsegejlgalleri` (
  `id` int(11) NOT NULL auto_increment,
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `file_name` varchar(200) NOT NULL default '',
  `tekst` longtext NOT NULL,
  `hits` int(11) NOT NULL default '0',
  `vote` int(11) default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
Avatar billede dennismp Nybegynder
23. maj 2004 - 02:40 #9
Hvor får du $id fra ?
Avatar billede dennismp Nybegynder
23. maj 2004 - 02:40 #10
Prøv evt at ændre dine mysql_query() så du får
mysql_query(..) or die(mysql_error());
Avatar billede fbb Nybegynder
23. maj 2004 - 08:29 #11
id for jeg fra ?id=mit id nr

Den hiver også fint id ud
Har sat ) or die(mysql_error()); på, men da den ikke komme med nogle fejl så hjælper den jo ikke. du kan se det her; http://www.frederikbb.dk/numsegejl1/vis.php?id=1
Avatar billede dennismp Nybegynder
23. maj 2004 - 10:30 #12
Ah, nu ved jeg hvad der er galt :-) (tror jeg)

Når du submitter via din form, får du jo ikke sent det aktuelle id med. Prøv:

<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
Avatar billede fbb Nybegynder
23. maj 2004 - 19:38 #13
ok, nu ligger den til og det hele, men den skriver:
Warning: Cannot modify header information - headers already sent by (output started at /web/www.frederikbb.dk/www/numsegejl1/vis.php:5) in /web/www.frederikbb.dk/www/numsegejl1/vis.php on line 11
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:09 #14
<?
require_once('db.php');
if( isset($_POST['vote']) ) {
  $vote2 = $_POST['vote'];
  $vote2 = $row[vote] + $vote2;
  mysql_query("UPDATE numsegejlgalleri set vote = '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}
$res = mysql_query("SELECT * FROM numsegejlgalleri where id ='$id'");
while ($row = mysql_fetch_array($res)) {
echo'<img border="0" src="galleri/'.$row[file_name].'"> vote: '.$row[vote].'';
}
?>
<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:16 #15
Jeg har flyttet if() sætningen op over while()'en..
Avatar billede fbb Nybegynder
23. maj 2004 - 21:57 #16
ok, så skal min location, så lige hive get med gør den ikke!!
Avatar billede fbb Nybegynder
23. maj 2004 - 21:59 #17
altså id, kommer ikke med :(
Avatar billede dennismp Nybegynder
23. maj 2004 - 22:21 #18
Hvis $id indeholder id'et, så prøv:
  header("Location: vis.php?id=$id");
Avatar billede fbb Nybegynder
23. maj 2004 - 22:24 #19
hmm, den ligger ikke det nye tal til:
$vote2 = $row[vote] + $vote2;
Dan den jo ikke kan få fat i row..!
Avatar billede dennismp Nybegynder
23. maj 2004 - 22:33 #20
Hvorfor ikke bare:
$vote2 = $_POST['vote'];
  mysql_query("UPDATE numsegejlgalleri set vote = vote + '$vote2' where id = '$id'");
Avatar billede fbb Nybegynder
23. maj 2004 - 22:36 #21
nice så virker det..

Kom til at tænkte på, der skal være sætte cookies på Så man kun kan stemme en gang pr dag. skal jeg lave et nyt spm, eller kan du hjælpe mig her..?
Avatar billede dennismp Nybegynder
23. maj 2004 - 22:45 #22
Lad os bare forsætte her..

her er et lille eksempel, så du kan komme igang:
http://dennis.moellegaard.dk/v4/php/cookie.php?source=1

Denne opretter en cookie der lever i en time. (3600 sekunder).. Din skal nok leve lidt længere :)
Avatar billede fbb Nybegynder
23. maj 2004 - 22:48 #23
hmm hvor skal jeg sætte mit kode ind, har aldrig arbejdet med cookie før.
Avatar billede dennismp Nybegynder
23. maj 2004 - 22:58 #24
En cookie skal du sætte før du laver out almindelig output, ellers får du en fejl.

Fx:
if( isset($_POST['vote']) ) {
  setcookie("voted",'enværdi',time()+(3600*24*31)); // Cirka en måned.
  $vote2 = $_POST['vote'];
  $vote2 = $row[vote] + $vote2;
  mysql_query("UPDATE numsegejlgalleri set vote = '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}

Så kan du bare skrive:
if( isset($_COOKIE['voted']) ) {
  // brugeren har stemt..
}

Hvordan har du tænkt på at det skal virke mht cookies?
Avatar billede fbb Nybegynder
23. maj 2004 - 23:02 #25
ok, har tænk på at når man har stemt så skal form ikke være der så skal der bare stå Du har stemt og hvis man ikke har stemt skal den bare vise form
Avatar billede dennismp Nybegynder
23. maj 2004 - 23:06 #26
noget i den her stil (utestet)

<?php
if( isset($_POST['vote']) ) {
  setcookie("voted",'enværdi',time()+(3600*24*31)); // Cirka en måned.
  $vote2 = $_POST['vote'];
  $vote2 = $row[vote] + $vote2;
  mysql_query("UPDATE numsegejlgalleri set vote = '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}

$res = mysql_query("SELECT * FROM numsegejlgalleri where id ='$id'");
while ($row = mysql_fetch_array($res)) {
echo'<img border="0" src="galleri/'.$row[file_name].'"> vote: '.$row[vote].'';
}

if( isset( $_POST['vote'] ) || isset( $_COOKIE['voted']) ) {
?>
<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
<?php } else { ?>
Du har allerede stemt.
<?php } ?>
Avatar billede fbb Nybegynder
23. maj 2004 - 23:15 #27
<?php
require_once('db.php');
if( isset($_POST['vote']) ) {
  setcookie("voted",'enværdi',time()+(3600*24*31)); // Cirka en måned.
  $vote2 = $_POST['vote'];
  mysql_query("UPDATE numsegejlgalleri set vote = vote + '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}

$res = mysql_query("SELECT * FROM numsegejlgalleri where id ='$id'");
while ($row = mysql_fetch_array($res)) {
echo'<img border="0" src="galleri/'.$row[file_name].'"> vote: '.$row[vote].'';
}

if( isset( $_POST['vote'] ) || isset( $_COOKIE['voted']) ) {
?>
<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
<?php } else { ?>
Du har allerede stemt.
<?php } ?>


Den skriver du har allder..... før man har stemt.
Avatar billede dennismp Nybegynder
23. maj 2004 - 23:22 #28
<?php
require_once('db.php');
if( isset($_POST['vote']) ) {
  setcookie("voted",$id,time()+(3600*24*31)); // Cirka en måned.
  $vote2 = $_POST['vote'];
  mysql_query("UPDATE numsegejlgalleri set vote = vote + '$vote2' where id = '$id'");
  header("Location: vis.php?id=".$_GET[vote]."");
}

$res = mysql_query("SELECT * FROM numsegejlgalleri where id ='$id'");
while ($row = mysql_fetch_array($res)) {
echo'<img border="0" src="galleri/'.$row[file_name].'"> vote: '.$row[vote].'';
}

if( isset( $_POST['vote'] ) || ( isset( $_COOKIE['voted']) && $_COOKIE['voted'] == $id )  ) {
?>
<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
<?php } else { ?>
Du har allerede stemt.
<?php } ?>
Avatar billede fbb Nybegynder
23. maj 2004 - 23:25 #29
Den skriver det endnu.. At man har stemt uden at man har gjort det!
Avatar billede dennismp Nybegynder
23. maj 2004 - 23:31 #30
Belastende :-)

prøv at sætte ind (bare i bunden af scriptet)
print "<pre>";
print_r($_POST);
print_r($_COOKIE);
print "</pre>";
Avatar billede fbb Nybegynder
23. maj 2004 - 23:32 #31
Array
(
)
Array
(
)
Avatar billede dennismp Nybegynder
23. maj 2004 - 23:52 #32
Jeg er vist træt - det ksal jo self være lige omvendt.

if( isset( $_POST['vote'] ) || ( isset( $_COOKIE['voted']) && $_COOKIE['voted'] == $id )  ) {
?>
Du har allerede stemt.
<?php } else { ?>
<form method="post" action="vis.php">
<input type="hidden" name="id" value="<?=$id?>">
<input type="radio" onClick="this.form.submit()" name="vote" value="1">1
<input type="radio" onClick="this.form.submit()" name="vote" value="2">2
<input type="radio" onClick="this.form.submit()" name="vote" value="3">3
<input type="radio" onClick="this.form.submit()" name="vote" value="4">4
<input type="radio" onClick="this.form.submit()" name="vote" value="5">5
<input type="radio" onClick="this.form.submit()" name="vote" value="6">6
<input type="radio" onClick="this.form.submit()" name="vote" value="7">7
<input type="radio" onClick="this.form.submit()" name="vote" value="8">8
<input type="radio" onClick="this.form.submit()" name="vote" value="9">9
<input type="radio" onClick="this.form.submit()" name="vote" value="10">10
</form>
<?php } ?>
Avatar billede fbb Nybegynder
23. maj 2004 - 23:56 #33
så var den der.. mange tak ;D
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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