Avatar billede pfp Nybegynder
15. februar 2002 - 17:01 Der er 24 kommentarer og
1 løsning

Gem resultat i txt-fil?

Hejsa

Jeg skal lave et meget simpelt afstemningssystem i PHP. Jeg har tre links som her:

Stem.asp?valg=1
Stem.asp?valg=2
Stem.asp?valg=3

Hvordan gør jeg sådan at hvis der bliver klikket Stem.asp?valg=1 stiger tallet i 1.txt med i og hvis der bliver klikket Stem.asp?valg=2 så stiger tallet med 1 i 2.txt osv osv.

Håber i forstår spm.

/pfp


Avatar billede snigermunken Nybegynder
15. februar 2002 - 17:04 #1
Stem.asp sikker på du lavet det i php?
Avatar billede pfp Nybegynder
15. februar 2002 - 17:05 #2
Ups gammel vane :-) der skulle selvfølgelig have stået stem.php
Avatar billede snigermunken Nybegynder
15. februar 2002 - 17:08 #3
if ($valg =="1"){
læg en til valg 1
} else if ($valg =="2"){
læg en til valg 2
} else if ($valg =="3"){
læg en til valg 3
}
Avatar billede pfp Nybegynder
15. februar 2002 - 17:11 #4
ja ok så meget havde jeg næsten regnet ud...men også kun næsten. Hvordan får jeg kontakt til txt-filen og lægger en til?
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:12 #5
<?
if ($stem) {
  $fil = fopen("1.txt", "w+");
  $antal = fgets($fil);
  $stemmer = $stemmer + 1;
  fputs($fil, $stemmer);
  fclose($fil);
}
?>

skulle virke, men er ikke testet :-)
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:13 #6
rettelse...

$fil = fopen("1.txt", "w+");

til:

$fil = fopen("$valg.txt", "w+");
Avatar billede snigermunken Nybegynder
15. februar 2002 - 17:14 #7
$fil = fopen("1.txt", "r");
$stemmer = fgets($fil, 1096);
fclose($fil);
$stem = "$stemmer++";
$fil = fopen("1.txt", "w");
fwrite($fil, $stem);
fclose($fil);

til at lægge en til txt filen, håber det virker har ikke brugt txt filer i meget lang tid.
Avatar billede pfp Nybegynder
15. februar 2002 - 17:21 #8
Der bliver ikke lagt noget til i nogen af jeres eksempler? Men jeg får heller ingen fejl
Avatar billede pfp Nybegynder
15. februar 2002 - 17:23 #9
Hvis der er nogen af jer der har et andet simpelt afstemningscript er det også fint med mig.
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:26 #10
hmmm, har du også husket at chmode tekstfilerne?
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:28 #11
det kunne også være du lige skulle skrive 0 i tekstfilerne
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:29 #12
doh ...
stemmer = $antal + 1;
Avatar billede mikle_dk Nybegynder
15. februar 2002 - 17:30 #13
Du kan os lige lave to if sætninger... så hvis brugeren prøver at skrive f.eks. ?valg=banan eller andet... der ville give problemer!

noget i den her stil
<?
if($valg)
{
    if($valg == "1" || $valg == "2" || $valg == "3")
    {
    echo "Gyldigt stemme id";
    }
        else
        {
        echo "Ugyldigt stemme id";
        }
}
?>
Avatar billede mikle_dk Nybegynder
15. februar 2002 - 17:30 #14
hmm det blev kun en
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:30 #15
altså:
<?
if ($stem) {
  $fil = fopen("$valg.txt", "w+");
  $antal = fgets($fil);
  $stemmer = $antal + 1;
  fputs($fil, $stemmer);
  fclose($fil);
}
?>
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 17:40 #16
utroligt som jeg kan vrøvle. Det lang tid siden jeg har brugt tekstfiler. Men denne skulle virke:

<?php
$fil = fopen("$valg.txt","r");
$stemmer = fgets($fil, 1024);
fclose($fil);
$stemmer = $stemmer + 1;
$fil = fopen("$valg.txt","w");
fputs($fil, $stemmer);
fclose($fil);
?>


og hvis du vil skrive resultaterne ud senere kan du bare bruge:
<?
echo "1eren har fået antal stemmer:";
readfile("1.txt");
?>
Avatar billede tipsen Nybegynder
15. februar 2002 - 18:41 #17
Her er så den lidt kortere udgave, så man kan nøjes med at åbne og lukke én fil!

<?php
  $fil = fopen("$valg.txt","w");
  $stemmer = fgets($fil, 1024);
  $stemmer++;
  rewind($fp);
  fputs($fil, $stemmer);
  fclose($fil);
?>
Avatar billede tipsen Nybegynder
15. februar 2002 - 18:42 #18
og ved nærmere eftertanke den helt korte...

<?php
  $fil = fopen("$valg.txt","w");
  $stemmer = fgets($fil);
  rewind($fp);
  fputs($fil, ++$stemmer);
  fclose($fil);
?>
Avatar billede tipsen Nybegynder
15. februar 2002 - 18:43 #19
...ups... - det skulle selvfølgelig være rewind($fil) i ovenstående
Avatar billede tipsen Nybegynder
15. februar 2002 - 18:45 #20
...ups^2... og det skulle selvfølgelig være w+ i stedet for w!
Avatar billede pfp Nybegynder
15. februar 2002 - 18:48 #21
gizmo-gizmo -> Dit virker fint. Kan du lave sådan, at man kun kan stemme en gang? Evt. med cookie?
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 18:59 #22
Weee:

Sæt dette ind i koden:
setcookie("pollsystem","jeg har sq stemt"); //smider lige en kage


så kan man bruge det fx:

<?
$kage = $HTTP_COOKIE_VARS["pollsystem"]; //snupper lige kagen
if ($kage) {
  echo "du har desværre stemt fister, men du kan da klikke her for at se resultatet";
}
?>
Avatar billede pfp Nybegynder
15. februar 2002 - 19:06 #23
ok, det ser lovende ud. Jeg er mest vant i ASP, der er der noget der hedder Response.Redirect "test.asp" fx, hvad hedder det i php?
Avatar billede gizmo-gizmo Nybegynder
15. februar 2002 - 19:15 #24
nu kender jeg ikke asp, men det kunne se ud som om:

header("location: test.php");
Avatar billede wfarm Nybegynder
16. februar 2002 - 15:03 #25
Efter som det her nok ikke er en konkurrence i at have flest text filer, vil jeg da lige påpege:

// ikke testet på nogen måde!!!

if ($HTTP_COOKIE_VARS["pollsystem"];) {
  echo "du har desværre stemt fister, men du kan da klikke her for at se resultatet";
}
else {
  $fil = "foo.txt";
  $stemmer = file($fil);
  $valg = $valg - 1;
  $stemer[$valg]++;
  $stemmer = implode("", $stemmer;
  $fp = fopen($fil)
  fputs($fil, $stemer);
  fclose($fp);
setcookie("pollsystem","jeg har sq stemt");
}

Som sagt er det ikke testet.. Meeeen..
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