Avatar billede jens12 Nybegynder
14. april 2006 - 12:26 Der er 13 kommentarer og
1 løsning

Afstemning virker ikke ordenligt Hjælp

Jeg kan ikke få min afstemning til at virke...Den vil ikke indsætte i mysql dben,når man vælger et svar mulighed.Den viser bare mulighederne igen,uanset hvad for en mulighed man vælger..
Mvh:
Jens
Først mysl db :
--
-- Struktur-dump for tabellen `afstem`
--

CREATE TABLE `afstem` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(50) NOT NULL default '',
  `svar1` varchar(255) NOT NULL default '',
  `svar2` varchar(255) NOT NULL default '',
  `svar3` varchar(255) NOT NULL default '',
  `svar4` varchar(255) NOT NULL default '',
  `svar5` varchar(255) NOT NULL default '',
  `svar6` varchar(255) NOT NULL default '',
  `svar7` varchar(255) NOT NULL default '',
  `svar8` varchar(255) NOT NULL default '',
  `svar9` varchar(255) NOT NULL default '',
  `svar10` varchar(255) NOT NULL default '',
  `status` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Data dump for tabellen `afstem`
--

INSERT INTO `afstem` VALUES (2, '''Hvad synes du om siden?', 'God', 'Der mangler noget', 'Dårlig', '', '', '', '', '', '', '', 'Open');

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `afstem_svar`
--

CREATE TABLE `afstem_svar` (
  `id` int(11) NOT NULL auto_increment,
  `spmid` int(11) NOT NULL default '0',
  `brugernavn` varchar(18) NOT NULL default '',
  `ip` varchar(255) NOT NULL default '',
  `tid` tinytext NOT NULL,
  `spm` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;


Her er min kode:
<?


if($user && $adgang) {
include("connect.php");
$query = mysql_query("SELECT * FROM afstem WHERE id = '2' ORDER BY id DESC") or die(mysql_error());
$r = mysql_fetch_array($query);
$result = mysql_query("SELECT * FROM afstem_svar WHERE brugernavn = '".$user."'");
if(isset($post) &&  mysql_num_rows($result) == "0"){
$ip = $_SERVER[REMOTE_ADDR];
$tid = date("d/m-y H:i:s");
$test = mysql_query("INSERT INTO afstem_svar (spmid, brugernavn, spm, tid, ip)" . "VALUES ('2','$user','$post','$tid','$ip')") or die(mysql_error());
}


$result = mysql_query("SELECT * FROM afstem_svar WHERE brugernavn = '".$user."'");

if(mysql_num_rows($result) == "0"){

?>

    <form action="forside.php" name="afstem" method="POST">
    <table border="0" cellpadding="0" cellspacing="0" class="afstem">
    <tr>
      <td colspan="2"><? echo"$r[title]";?></td>
    </tr>
    <?
    if ($r["svar1"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="1" cheked name="1">
    </td>
    <td>
    <?=$r["svar1"]?>
    </td>
    <?
    }
    if ($r["svar2"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="2" name="1">
    </td>
    <td>
    <?=$r["svar2"]?>
    </td>
    <?
    }
    if ($r["svar3"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="3" name="1">
    </td>
    <td>
    <?=$r["svar3"]?>
    </td>
    <?
    }
    if ($r["svar4"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="4" name="1">
    </td>
    <td>
    <?=$r["svar4"]?>
    </td>
    <?
    }
    if ($r["svar5"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="5" name="1">
    </td>
    <td>
    <?=$r["svar5"]?>
    </td>
    <?
    }
    if ($r["svar6"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="6" name="1">
    </td>
    <td>
    <?=$r["svar6"]?>
    </td>
    <?
    }
    if ($r["svar7"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="7" name="1">
    </td>
    <td>
    <?=$r["svar7"]?>
    </td>
    <?
    }
    if ($r["svar8"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="8" name="1">
    </td>
    <td>
    <?=$r["svar8"]?>
    </td>
    <?
    }
    if ($r["svar9"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="9" name="1">
    </td>
    <td>
    <?=$r["svar9"]?>
    </td>
    <?
    }
    if ($r["svar10"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="10" name="1">
    </td>
    <td>
    <?=$r["svar10"]?>
    </td>
    <?
    }
    ?>
    <tr>
      <td></td>
      <td><input type="submit" value="Stem"></td>
    </tr>
    </table>

    </form>

<?
}else{
?>
<table border="1" cellpadding="0" bordercolor="#666666" cellspacing="0" style="border-collapse: collapse" width="100%">
  <tr>
    <td colspan="1"></td>
  </tr>

<?
$result = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2'");
$antal_stem = mysql_num_rows($result);
$tal = "1";
while($tal <= 10){
    $tal1 = $tal++;
if ($r["$tal1"] != ""){
$spm = "$tal1";

$q = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2' AND spm = '$spm'");
$spm1 = mysql_num_rows($q);
$spmsvar = $spm1 / $antal_stem * 100;
?>
  <tr>
    <td width="100%"><?=$r["$tal1"]?></td>
  </tr>
  <tr>
    <td width="100%"><table bgcolor="#d00000" border="1" bordercolor="#666666" cellspacing="0" cellpadding="0" height="10" width="<? echo "$spmsvar"; ?>%"><tr><td></td></tr></table><? echo "$spmsvar"; ?>%</td>
  </tr>
<?
}

?>


<? } }?>
</table>

<? } else { ?>
<font color="red"><b>Du er ikke logget ind!<br><br></b>
Du skal være logget ind for at stemme!</font>
<?
}
?>
Avatar billede mysli Nybegynder
16. april 2006 - 01:29 #1
Hvor får du $user og $adgang fra?

Kan ikke se, du sætter $post nogen steder, derfor vil denne linie

if(isset($post) &&  mysql_num_rows($result) == "0"){

ikke gå igennem, da isset($post) vil retunere false
Avatar billede jens12 Nybegynder
16. april 2006 - 11:44 #2
$user og $adgang får jeg fra session af...
Kunne du skrive scriptet om?
Avatar billede duejensen Nybegynder
16. april 2006 - 11:46 #3
Tror problemet er noget helt andet.

Gætter på at $user, $adgang og $post er blevet sat andetsteds, ellers giver det jo ikke mening.

Men jeg tror også at problemet ligger i

if(isset($post) &&  mysql_num_rows($result) == "0"){

resultatet fra mysql_num_rows er et tal, og der skal ikke sammenlignes med "0", men kun med 0, så der burde nok stå:

if(isset($post) &&  mysql_num_rows($result) == 0){
Avatar billede jens12 Nybegynder
16. april 2006 - 12:02 #4
Okay...Nu har jeg ændret det du skrev men det hjalp ikke på problemmet...
Avatar billede jens12 Nybegynder
16. april 2006 - 12:11 #5
Nu har jeg ændret scriptet til :
<?


if($user && $adgang) {

include("connect.php");
$query = mysql_query("SELECT * FROM afstem WHERE id = '2' ORDER BY id DESC") or die(mysql_error());
$r = mysql_fetch_array($query);
$result = mysql_query("SELECT * FROM afstem_svar WHERE brugernavn = '".$user."'");
if(isset($post) &&  mysql_num_rows($result) == 0){
$ip = $_SERVER[REMOTE_ADDR];
$tid = date("d/m-y H:i:s");
$test = mysql_query("INSERT INTO afstem_svar (spmid, brugernavn,ip,tid,spm)" . "VALUES ('2','".$user."','$ip','$tid','$post')") or die(mysql_error());
}


$result = mysql_query("SELECT * FROM afstem_svar WHERE brugernavn = '".$user."'");

if(mysql_num_rows($result) == "0"){

?>

    <form action="forside.php" name="afstem" method="POST">
    <table border="0" cellpadding="0" cellspacing="0" class="afstem">
    <tr>
      <td colspan="2"><? echo"$r[title]";?></td>
    </tr>
    <?
    if ($r["svar1"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="1" cheked name="1">
    </td>
    <td>
    <?=$r["svar1"]?>
    </td>
    <?
    }
    if ($r["svar2"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="2" name="1">
    </td>
    <td>
    <?=$r["svar2"]?>
    </td>
    <?
    }
    if ($r["svar3"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="3" name="1">
    </td>
    <td>
    <?=$r["svar3"]?>
    </td>
    <?
    }
    if ($r["svar4"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="4" name="1">
    </td>
    <td>
    <?=$r["svar4"]?>
    </td>
    <?
    }
    if ($r["svar5"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="5" name="1">
    </td>
    <td>
    <?=$r["svar5"]?>
    </td>
    <?
    }
    if ($r["svar6"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="6" name="1">
    </td>
    <td>
    <?=$r["svar6"]?>
    </td>
    <?
    }
    if ($r["svar7"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="7" name="1">
    </td>
    <td>
    <?=$r["svar7"]?>
    </td>
    <?
    }
    if ($r["svar8"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="8" name="1">
    </td>
    <td>
    <?=$r["svar8"]?>
    </td>
    <?
    }
    if ($r["svar9"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="9" name="1">
    </td>
    <td>
    <?=$r["svar9"]?>
    </td>
    <?
    }
    if ($r["svar10"] != ""){
    ?>
    <tr>
      <td>
    <input type="radio" value="10" name="1">
    </td>
    <td>
    <?=$r["svar10"]?>
    </td>
    <?
    }
    ?>
    <tr>
      <td></td>
      <td><input type="submit" value="Stem"></td>
    </tr>
    </table>

    </form>

<?
}else{
?>
<table border="1" cellpadding="0" bordercolor="#666666" cellspacing="0" style="border-collapse: collapse" width="100%">
  <tr>
    <td colspan="1"></td>
  </tr>

<?
$result = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2'");
$antal_stem = mysql_num_rows($result);
$tal = "1";
while($tal <= 10){
    $tal1 = $tal++;
if ($r["$tal1"] != ""){
$spm = "$tal1";

$q = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2' AND spm = '$spm'");
$spm1 = mysql_num_rows($q);
$spmsvar = $spm1 / $antal_stem * 100;
?>
  <tr>
    <td width="100%"><?=$r["$tal1"]?></td>
  </tr>
  <tr>
    <td width="100%"><table bgcolor="#d00000" border="1" bordercolor="#666666" cellspacing="0" cellpadding="0" height="10" width="<? echo "$spmsvar"; ?>%"><tr><td></td></tr></table><? echo "$spmsvar"; ?>%</td>
  </tr>
<?
}

?>


<? } }?>
</table>

<? } else { ?>
<font color="red"><b>Du er ikke logget ind!<br><br></b>
Du skal være logget ind for at stemme!</font>
<?
}
?>
Avatar billede duejensen Nybegynder
16. april 2006 - 12:38 #6
Ok, har nu prøvet det lidt selv.

Jeg havde de samme problemer - indtil jeg indsatte linien (aller øverst)

    $post=$_POST['1'];

Og, så må jeg tage min kommentar om "0" eller 0 tilbage - det giver ingen forskel, da php automatisk konverterer til strengformat inden sammenligning.
Dog er det overflødigt at sammenligne strenge, så behold bare 0 (uden " ).


Nu vi er ved det, har du angivet "cheked" ved den første radiobutton, du mente sikkert "checked".
Avatar billede jens12 Nybegynder
16. april 2006 - 12:46 #7
okay...Jeg prøver lige at rette fejlene...
Avatar billede jens12 Nybegynder
16. april 2006 - 12:54 #8
Nu virkede det sku:D men imellemtiden er der også kommet et nyt problem..Den udskriver 4 procent udregninger! altså en udregning for spørgsmålets titel og svarmulighederne.. Underligt:S
Og den udskriver ikke rigtigt..Hvis jeg nu har en afstemning på disse valgmuligheder:
Hvad synes du om siden ?
God
Der mangler noget
Dårlig
og jeg vælger dårlig så viser den 100& ud ved der mangler noget!
Håber du forstår ellers kan jeg give et link til et billede..
Mvh:
Jens
Avatar billede jens12 Nybegynder
16. april 2006 - 12:59 #9
Hvad synes du om siden? er titelen på spørgsmålet *
og 100& skal rettes til 100%*
Avatar billede duejensen Nybegynder
16. april 2006 - 13:38 #10
Prøv at erstatte den nederste del af scriptet med følgende:

<table border="1" cellpadding="0" bordercolor="#666666" cellspacing="0" style="border-collapse: collapse" width="100%">
  <tr>
    <td colspan="1"><? echo"$r[title]";?></td>
  </tr>

<?
$result = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2'");
$antal_stem = mysql_num_rows($result);
$tal = "1";
while($tal <= 10){

    $tal1=$tal;

    if ($r["svar" .$tal1] != "")
    {
        $spm = "$tal1";

        $q = mysql_query("SELECT * FROM afstem_svar WHERE spmid = '2' AND spm = '$spm'");
        $spm1 = mysql_num_rows($q);
        $spmsvar = $spm1 / $antal_stem * 100;
?>
  <tr>
    <td width="100%"><?=$r["svar" .$tal1] ?></td>
  </tr>
  <tr>
    <td width="100%"><table bgcolor="#d00000" border="1" bordercolor="#666666" cellspacing="0" cellpadding="0" height="10" width="<? echo "$spmsvar"; ?>%"><tr><td></td></tr></table><? echo "$spmsvar"; ?>%</td>
  </tr>
<?

  }
$tal++;

  }
   
}
?>
</table>

<? } else { ?>
<font color="red"><b>Du er ikke logget ind!<br><br></b>
Du skal være logget ind for at stemme!</font>
<?
}
?>
Avatar billede jens12 Nybegynder
16. april 2006 - 13:46 #11
Det virker:D 1000 tak:D men kan du lave sån at den ikke kan vise for eksempel: 66.6666666667% altså så den bare skrive 67%?? altså sån at den afrunder
Avatar billede duejensen Nybegynder
16. april 2006 - 13:50 #12
Linier hvor du udregner procent, ændrer du blot fra

  $spmsvar = $spm1 / $antal_stem * 100;
til
  $spmsvar = round($spm1 / $antal_stem * 100);
Avatar billede jens12 Nybegynder
16. april 2006 - 13:53 #13
1000 tak:D !
Avatar billede jens12 Nybegynder
16. april 2006 - 13:53 #14
det virker;)
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