Avatar billede spasserbent Nybegynder
20. april 2002 - 18:04 Der er 11 kommentarer

finpusning af mit første script

Jeg har nu fået taget mig sammen til at lave mit første brugbare PHP-script. (små lommeregnere mm. tæller ikke som brugbare)
Men fordi det som sagt er mit først script vil jeg blive glad for hvis i ville kigge lidt på det, og fortælle mig hvad der er dårlig kodeskik, hvordan man kunne lave koden lidt mere elegant, og andre ting som er gode at vide ;)
*************************************
Skulle måske lige tilføje at, det er en afstemning som jeg har (prøvet at) lave.
*************************************
<?php

$db = mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("poll", $db)or die(mysql_error());

$info = mysql_query("SELECT id, spm, svar_1, svar_2, svar_3, svar_4, svar_5, svar_6, svar_7, svar_8, stem_1, stem_2, stem_3, stem_4, stem_5, stem_6, stem_7, stem_8 FROM poll WHERE id = '1'") or die(mysql_error());
$data = mysql_fetch_array($info);
# t = antal svarmuligheder
# stemmer_total = antal stemmer
$i = 2;
while ("$data[$i]" != "") {
  $k = $i + 8;
  $stemmer_total = $stemmer_total + $data[$k];
  $i++;
  $t = $i -2;
}

if ($stemt) {
    $stemt_2 = $stemt + 9;
    $data[$stemt_2]++;
    $felt = "stem_" . "$stemt";
    mysql_query("UPDATE poll SET $felt = '$data[$stemt_2]' WHERE id = '1' ");
    $mode = "har_stemt2";
    setcookie("mode", $mode,time()+2592000);
}

?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Afstemnngsscript</title>
</head>
<body>
<?php

if ($mode == "har_stemt2") {

echo "
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100\">";
$i = 1;
while ($i <= $t) {
    $k = $i + 9;
    $procent[$i] = $data[$k] / $stemmer_total * 100;
    $kort_procent[$i] = round($procent[$i], 0);
    echo "
    <tr>";
    echo "
    <td bgcolor=\"#6699FF\"><img border=\"0\" src=\"grafik/poll2.gif\" width=\"$kort_procent[$i]\" height=\"10\"></td>";
    echo "
    </tr>";
    #Mellemrumstabel
    echo "
    <tr>";
    echo "
    <td height=\"5\"></td>";
    echo "
    </tr>";
    $i++;
}
echo "
</table><br>";

}else {

echo "$data[1]";
echo "<form action=\"$PHP_SELF\" method=\"post\">";
$i = 1;
while ($i <= $t) {
    $f = $i + 1;
    echo "<input type=\"radio\" name=\"stemt\" value=\"$i\"> $data[$f]<br>";
    $i++;
}
echo "<br><input type=\"submit\" value=\"Stem\">";
echo "</form>";
}
?>
</body>
</html>
Avatar billede him Nybegynder
20. april 2002 - 18:09 #1
du skal lige huske at der skal stå \" i stedet for kun " i en echo!
Avatar billede spasserbent Nybegynder
20. april 2002 - 18:14 #2
skummelt.....
havde selvfølgelig også sat dem, (for scripet virker, jeg søger bare lidt tips til forbedringer af koden) men de er forsvundet på den ene eller anden måde (?)
Avatar billede hono Nybegynder
20. april 2002 - 18:15 #3
spasserbent >> Jeg havde samme problem forleden her på E. Den fjerne åbenbart ens skråstreger :)

Hono
Avatar billede whatever Nybegynder
20. april 2002 - 18:16 #4
Eksperten fjerner backslash'er (\)
Avatar billede spasserbent Nybegynder
20. april 2002 - 18:17 #5
http://www.friserverplads.dk/dansken/poll.txt <- her er den rigtige kode. Undlader at poste den her på eksperten.
Avatar billede jakoba Nybegynder
20. april 2002 - 18:27 #6
din indrukning under
    while ("$data[$i]" != "") {
er kun på 2 blanktegn, alle andre steder bruger du fire.

hvorfor sætte "-tegn omkring $data[$i] i linien ovenfor?

jeg har vaner fra andre sprog of finder det ulækkert med linieskift skreveet i strenge som:
    echo "
    <tr>";
    echo "
    <td height="5"></td>";
    echo "
    </tr>";
ville så langt foretrække:
    echo "\n    <tr>";
    echo "\n    <td height="5"></td>";
    echo "\n    </tr>";

mvh JakobA
Avatar billede spasserbent Nybegynder
20. april 2002 - 18:35 #7
jakoba<< takker.
jeg tænkte faktisk på om man ikke kunne bruge \n eller noget andet, men vidste ikke hvordan :D
Avatar billede jensgram Nybegynder
20. april 2002 - 19:22 #8
Jeg ville omskrive en del til:

$i = 2;
while ($data[$i] != "") {
    $k = $i + 8;
    $stemmer_total += $data[$k];
    $i++;
    $t = $i - 2;
}
Avatar billede jensgram Nybegynder
20. april 2002 - 19:24 #9
Der fik jeg så ikke skrevet så meget, som jeg ville ;)

... du kan se, hvor det skal indsættes. Det er, efter min mening, en pænere/enklere måde at skrive det på. Indrykning på 2 spaces er vist allerede nævnt!?

Jens Gram - www.jensgram.dk
Avatar billede Slettet bruger
20. april 2002 - 19:28 #10
Hvorfor ikke bruge funktioner? Nu gider jeg ikke skrive hele din kode om, men inddel i passende funktioner. Ala:

# Funktion der opretter forbindelse til databasen
databaseConnect();

# Hvis man har stemt opdater database og sæt cookie
if ($stem)
  setData($foo);

# Hent og beregn poll data
$data = getData();

# HTML output
displayData($data);
Avatar billede Slettet bruger
27. juni 2002 - 17:14 #11
Luk spørgsmålet.
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