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>
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.. ;)
Eti nyt toinen ~30 min lisää...
Kannattaa aina välillä tallentaa koodi johonkin erilleen, että jos menee jotain pieleen, niin palauttaa sen entisen...
lainaus:
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ä
joku voi kertoa vian?
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?
ei toimi vieläkään, kyllä se ne keksit pistää mutta ei lisää ääniä yhdelläkään
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ä.
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.
ei toimi vieläkään :(
ja nyt koko mbneti ei toimi :(
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...
lainaus:
eli muokkasin sen oman galluppini hajalle
No eikö kannattaisi tutkia mitä eroa muokatussa skriptissä on siihen mitä sinulla oli ennen muokkausta?
hyvä idea muuten..
<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
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.
Simo, kuka tuota koodaa? Sinä vai me? Kuka tuosta hyötyy..?
no.. korjaan sitten itte
Vois olla ihan hyvä&nopea ratkaisu ongelmaan :)
Kokeile nyt vielä muuttaa rivi
$yht=$yht+$pilko[1]; // tällaiseksi $yht=$yht+trim($pilko[1]);
sain nyt toimiin ihan omin avuin, kiitti kumminki
missä oli vikaa?
Aihe on jo aika vanha, joten et voi enää vastata siihen.