Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: gallup

Sivun loppuun

snakari [03.10.2002 14:24:30]

#

eli muokkasin sen oman galluppini hajalle, eli nyt se ei laske vastauksia, jaksaako joku ettiä vian. itte en löytäny vaikka etin ~30 min.

<td width="200" height="7" valign="top">
<?php
$tiedosto="tiedosto";
$f=@file($tiedosto);
if (!$vastaus)
{
  if ($HTTP_COOKIE_VARS["gallup"]!==trim($f[0]))
  {
   # tulostetaan kysymykset
   echo '<b>'. stripslashes(trim($f[0])) .'</b><br>';
   for($rivi=1; $rivi<count($f); $rivi++)
   {
       $pilko=explode("|", trim($f[$rivi]));
       echo '<a href="index.php?vastaus='. $rivi .'">'. stripslashes($pilko[0]) .'</a><br>';
   }
  }
  else
  {
    # tulostetaan vastaukset
    echo '<b>'. stripslashes(trim($f[0])) .'</b><br>';
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      $yht=$yht+$pilko[1];
    }
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      echo stripslashes($pilko[0]) .' ('. @intval($pilko[1]/$yht*100) .'%)<br><img src="piste.gif" width="'. @intval($pilko[1]/$yht*159+1) .'" height="3" border="1"><br>';
    }
    echo 'vastauksia yhteensä '. $yht;
  }
}
if ($vastaus)
{
  if ($vastaus>count($f) or $vastaus<1 or $HTTP_COOKIE_VARS["gallup"]==trim($f[0]))
  {
    # tulostetaan vastaukset
    echo '<b>'. stripslashes(trim($f[0])) .'</b><br>';
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      $yht=$yht+$pilko[1];
    }
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      echo stripslashes($pilko[0]) .' ('. @intval($pilko[1]/$yht*100) .'%)<br><img src="piste.gif" width="'. @intval($pilko[1]/$yht*159+1) .'" height="3" border="1"><br>';
    }
    echo 'vastauksia yhteensä '. $yht;
  }
  else
  {
      # lisätään 1 vastaukseen
      $lis=explode("|", trim($f[$vastaus]));
      if ($lis[1]) { $lis[1]++; }
      else { $lis[1]=1; }
      $f[$vastaus]=$lis[0] ."|". $lis[1] ."\n";
      $filu=fopen($tiedosto,"w");
      foreach ($f as $rivi)
      {
      fwrite($filu, $rivi);
      }
      fclose ($filu);
      setcookie("gallup",trim($f[0]),time()+9999999);
      header ("Location: index.php");
  }
}
?>
</td>

thefox [03.10.2002 14:32:33]

#

if ($HTTP_COOKIE_VARS["gallup"]!==trim($f[0]))

Mikäs tuo rivi on? Tarkoitatko '!='?

# tulostetaan vastaukset

Ensinnäkin, käytä mieluummin C++-kommentointitapaa, näyttää kivemmalta ;) Toisekseen, tee funktio tulosta_vastaukset(), näyttää myöskin kivemmalta, kutsutaanhan sitä sentään kahteen kertaan.

Mistä tulikin mieleen Laaksoselle sellainen ehdotus että ehkä tuohon kooditagiin voisi lisätä sellaisen systeemin että vasemmassa laidassa näkyisi rivinumerot :)

Ja vielä loppuun sellainen asia että tuollaisesta koodista virheiden etsiminen on todellista tuskaa. Sisennysten koko vaihtelee, välilyöntiä käytetty miten sattuu, muuttujien nimet ovat mitä ovat jne.. ;)

Antti [03.10.2002 14:32:57]

#

Eti nyt toinen ~30 min lisää...

Vilikki [03.10.2002 14:43:17]

#

Kannattaa aina välillä tallentaa koodi johonkin erilleen, että jos menee jotain pieleen, niin palauttaa sen entisen...

snakari [03.10.2002 15:15:29]

#

lainaus:

if ($HTTP_COOKIE_VARS["gallup"]!==trim($f[0]))

Mikäs tuo rivi on? Tarkoitatko '!='?

eli siis jos keksit ei oo kyseisen rivin mukaiset, niin sitten kysytään kysymystä.

sen funktion voisin ehkäpä tehä

snakari [03.10.2002 15:53:52]

#

joku voi kertoa vian?

trinit [03.10.2002 16:42:26]

#

Kuten fawkz jo kirjoittikin, erisuurikuin merkki ei ole !== vaan != ja toiseksi mitä tarkoitat "ei laske vastauksia" ? Eli eikö tuossa puolessa välin koodia oleva "if ($vastaus)" -ehtolauseke toteudu?

snakari [03.10.2002 17:00:54]

#

ei toimi vieläkään, kyllä se ne keksit pistää mutta ei lisää ääniä yhdelläkään

Antti Laaksonen [03.10.2002 18:15:05]

#

Kerro nyt ihmeessä, millä rivillä virhe tulee, ja mitä virheilmoituksessa lukee. Ja jos kyseessä on looginen virhe, tuskin kukaan sitä noin pitkästä koodista rupeaa etsimään.

lainaus:

Mistä tulikin mieleen Laaksoselle sellainen ehdotus että ehkä tuohon kooditagiin voisi lisätä sellaisen systeemin että vasemmassa laidassa näkyisi rivinumerot :)

Tälle olisi usein käyttöä, mutta se samalla sekavoittaisi koodilistausta aikalailla. Jos joku hyvä toteutustapa löytyy, ominaisuus on toki mahdollista lisätä.

trinit [03.10.2002 19:23:11]

#

lainaus:

ei toimi vieläkään, kyllä se ne keksit pistää mutta ei lisää ääniä yhdelläkään

Kokeilepa muuttaa rivi:

if ($lis[1]) { $lis[1]++; }

// muotoon:
if ($lis[1]) { ++$lis[1]; }

Varmaksi en mene sanomaan auttaako, mutta itselläni oli joskus vastaavanlaisia ongelmia ja tuollaisella sen korjasin. Kyse on siis PHP:n pre-increment ja post-increment toiminnoista.

snakari [03.10.2002 20:52:43]

#

ei toimi vieläkään :(

snakari [03.10.2002 20:57:12]

#

ja nyt koko mbneti ei toimi :(

trinit [04.10.2002 11:45:12]

#

lainaus:

ei toimi vieläkään :(

Kerro jo nyt hieman tarkemmin, miten skriptisi oikein toimii tällä hetkellä? Tuleeko virheilmoituksia, tallentuuko siihen tiedostoon mitään tietoa? Voisit myös kokeilla ottaa @-merkit pois funktioiden (@file, @intval jne.) edestä jotta näet antavatko ne virheilmoituksia...

mikko [04.10.2002 11:47:59]

#

lainaus:

eli muokkasin sen oman galluppini hajalle

No eikö kannattaisi tutkia mitä eroa muokatussa skriptissä on siihen mitä sinulla oli ennen muokkausta?

snakari [04.10.2002 14:38:33]

#

hyvä idea muuten..

snakari [04.10.2002 18:22:01]

#

<td width="200" height="7" valign="top">
<?php
$tiedosto="";
$f=@file($tiedosto);
if (!$vastaus)
{
  if ($HTTP_COOKIE_VARS["gallup"]!=trim($f[0]))
  {
   # tulostetaan kysymykset
   echo '<b>'. stripslashes(trim($f[0])) .'</b><br>';
   for($rivi=1; $rivi<count($f); $rivi++)
   {
       $pilko=explode("|", trim($f[$rivi]));
       echo '<a href="index.php?vastaus='. $rivi .'">'. stripslashes($pilko[0]) .'</a><br>';
   }
  }
  else
  {
    nayta();
  }
}
if ($vastaus)
{
  if ($vastaus>count($f) or $vastaus<1 or $HTTP_COOKIE_VARS["gallup"]==trim($f[0]))
  {
    nayta();
  }
  else
  {
      # lisätään 1 vastaukseen
      $lis=explode("|", trim($f[$vastaus]));
      if ($lis[1]) { $lis[1]++; }
      else { $lis[1]=1; }
      $f[$vastaus]=$lis[0] ."|". $lis[1] ."\n";
      $filu=fopen($tiedosto,"w");
      foreach ($f as $rivi)
      {
      fwrite($filu, $rivi);
      }
      fclose ($filu);
      setcookie("gallup",trim($f[0]),time()+9999999);
      header ("Location: index.php");
  }
}

function nayta () {
    $f=@file($tiedosto);
    # tulostetaan vastaukset
    echo '<b>'. stripslashes(trim($f[0])) .'</b><br>';
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      $yht=$yht+$pilko[1];
    }
    for ($rivi=1; $rivi<count($f); $rivi++)
    {
      $pilko=explode("|", trim($f[$rivi]));
      echo stripslashes($pilko[0]) .' ('. @intval($pilko[1]/$yht*100) .'%)<br><img src="piste.gif" width="'. @intval($pilko[1]/$yht*159+1) .'" height="3" border="1"><br>';
    }
    echo 'vastauksia yhteensä '. $yht;
}
?>
</td>

tossa olis tän hetkinen koodi, ja se tulostaa vaan "vastauksia yhteensä" ja ois kivaa jos joku jaksais korjata

HtH [04.10.2002 19:29:58]

#

No hyvä ihme, oma vikasihan se vain on kun et varmuuskopioita tarpeeksi usein tehnyt. Kovin harva rupeaa tuollaisesta monen kymmenen rivin pituisesta koodista yhtä pientä virhettä etsimään.

mikko [04.10.2002 19:54:02]

#

Simo, kuka tuota koodaa? Sinä vai me? Kuka tuosta hyötyy..?

snakari [04.10.2002 19:58:54]

#

no.. korjaan sitten itte

mikko [04.10.2002 20:02:05]

#

Vois olla ihan hyvä&nopea ratkaisu ongelmaan :)

trinit [05.10.2002 10:46:27]

#

Kokeile nyt vielä muuttaa rivi

$yht=$yht+$pilko[1];

// tällaiseksi
$yht=$yht+trim($pilko[1]);

snakari [05.10.2002 11:31:45]

#

sain nyt toimiin ihan omin avuin, kiitti kumminki

Tumpi [13.10.2002 18:56:30]

#

missä oli vikaa?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta