Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

[sitebuilding] foutmelding in cutenews

Voor de mensen die niet weten wat CuteNews is: het is een script om online nieuws toe te voegen aan je site. Je moet het wel eerst op je site installeren.

Goed, nu de foutmelding. Ik heb wat test nieuwsberichtjes gemaakt, en als ik dan op Full Story klik voor het volledige verhaal, krijg ik onder het nieuwsbericht de volgende melding:

Code: Selecteer alles

Warning: Division by zero in /usr/export/www/hosting/pdejongh/cutenews/inc/functions.inc.php on line 469
Na een beetje moeilijk doen, heb ik regel 469 gevonden. Nu denk ik te weten wat de fout is, maar omdat ik hier niet in wil rotzooien terwijl ik niet weet wat ik precies doe, leg ik het eerst hier even voor. Dit is het stukje broncode wat eromheen zit:

Code: Selecteer alles

function insertSmilies($insert_location, $break_location = FALSE, $admincp = FALSE, $wysiwyg = FALSE)

{

global $config_http_script_dir, $config_smilies;

$smilies = explode(",", $config_smilies);

foreach($smilies as $smile)

{

$i++; $smile = trim($smile);

  if($admincp){

if($wysiwyg){

//

   $advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />";

  //

 $output .= "<a href=# onclick=\"java script:InsertIntoArea('$insert_location','$advanced_smile'); return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";

   $output .= "<a href=# onclick=\"document.getElementById('$insert_location').contentWindow.document.execCommand('InsertImage', false, '$config_http_script_dir/data/emoticons/$smile.gif'); return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";

}

else{ $output .= "<a href=# onclick=\"java script:document.getElementById('$insert_location').value += ' :$smile:'; return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>"; }

  }else{

$output .= "<a href=\"java script:insertext(':$smile:','$insert_location')\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";

  }

if($i%$break_location == 0 and $break_location)

{

$output .= "<br />";

}else{ $output .= " "; }

}

return $output;

}
Nu vermoed ik dat de fout in deze regel zit:

Code: Selecteer alles

if($i%$break_location == 0 and $break_location)
Er staat namelijk geen ; achter.

Maar omdat ik dus niet wil gaan rotzooien in iets wat ik toch al maar half tot niet snap, leg ik het eerst even hier voor. Is mijn gedachte goed, of weet iemand wat de fout wél is?
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...
Nvt
Artikelen: 0

Re: [sitebuilding] foutmelding in cutenews

PdeJongh schreef:Nu vermoed ik dat de fout in deze regel zit:

<!--c1-->

Code: Selecteer alles


if ( logische uitlating)

{

    opdracht ;

}

Dus dan hoeft daar ook geen ; te staan.

Nogmaals ik heb geen verstand van dat taaltje, maar als het een deling door nul is en de plaats welke je aangegeven

hebt is goed, dan gok ik dat: $i%$break_location == 0 betekend: i modulo break_location.

Tevens gok ik dat break_location dan op een bepaald moment 0 is waardoor je die deling door 0 krijgt.
Nvt
Artikelen: 0

Re: [sitebuilding] foutmelding in cutenews

Nog een gissing :D

Boven in de code staat dit:

function insertSmilies($insert_location, $break_location = FALSE, $admincp = FALSE, $wysiwyg = FALSE)

$break_location = false.

false in een waarde uitgedrukt is normaal 0. Dus het zou goed kunnen dat daar staat: i modulo 0.

Ik zal het je nog sterker vertellen, volgens mij is dat stukje code onnodig interessant doen.

$break_location = FALSE (staat boven in).

if($i%$break_location == 0 and $break_location) // dit is logisch And waardoor de evaluatie altijd op FALSE uitkomt.

Ben benieuwd of iem. weet wat er aan de hand is
Gebruikersavatar
Ger
Artikelen: 0
Berichten: 17.676
Lid geworden op: di 18 okt 2005, 09:51

Re: [sitebuilding] foutmelding in cutenews

Ik snap niet waarom dit gecomment staat:

Code: Selecteer alles

//

   $advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />";

  //

 $output .= "<a href=# onclick=\"java script:InsertIntoArea
Heb je dat zelf gedaan of niet?

Je kan eens proberen om die comments (twee slashes aan het begin van de regel) weg te halen. Als iets gecomment staat dan doet de browser er niets mee.

Verder altijd handig om te weten: Had je dit probleem direct na de schone installatie of nadat je zelf eea hebt gewijzigd? En in dat geval: wat heb je gedaan vlak voordat het probleem optrad?

Heb je trouwens een scripteditor of bekijk je het in kladblok? Een scripteditor (zoals bijvoorbeeld de open source Crimson Editor) is handig bij dit soort problemen omdat die automatisch aangeeft of een stukje code goed is of niet. Indien het goed is krijgt het een bepaalde kleur (zoals bijvoorbeeld comments die groen worden). Geeft je meteen een overzicht.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

Re: [sitebuilding] foutmelding in cutenews

Ger schreef:Ik snap niet waarom dit gecomment staat:

Code: Selecteer alles

//

   $advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />";

  //

 $output .= "<a href=# onclick=\"java script:InsertIntoArea
Heb je dat zelf gedaan of niet?
Ik het zelf niets in het bestand zitten doen, omdat ik het dan alleen maar erger maak.
Je kan eens proberen om die comments (twee slashes aan het begin van de regel) weg te halen. Als iets gecomment staat dan doet de browser er niets mee.
Zal het zometeen eens proberen :D
Verder altijd handig om te weten: Had je dit probleem direct na de schone installatie of nadat je zelf eea hebt gewijzigd? En in dat geval: wat heb je gedaan vlak voordat het probleem optrad?
Ik heb na de installatie niets veranderd.
Heb je trouwens een scripteditor of bekijk je het in kladblok? Een scripteditor (zoals bijvoorbeeld de open source Crimson Editor) is handig bij dit soort problemen omdat die automatisch aangeeft of een stukje code goed is of niet. Indien het goed is krijgt het een bepaalde kleur (zoals bijvoorbeeld comments die groen worden). Geeft je meteen een overzicht.
Ik gebruik gewoon kladblok, maar zal wel eens zoeken naar dat programma :D
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...
Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

Re: [sitebuilding] foutmelding in cutenews

Ger schreef:Ik snap niet waarom dit gecomment staat:

Code: Selecteer alles

//					   $advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />";

  //					 $output .= "<a href=# onclick=\"java script:InsertIntoArea
Heb je dat zelf gedaan of niet?

Je kan eens proberen om die comments (twee slashes aan het begin van de regel) weg te halen. Als iets gecomment staat dan doet de browser er niets mee.
Het het getest, maar haalt niks uit. Resultaat blijft hetzelfde, namelijk die foutmelding. Ik ga even op zoek naar dat programma en hopelijk kan ik daar dan de precieze fout uithalen.
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...
Gebruikersavatar
DePurpereWolf
Artikelen: 0
Berichten: 9.240
Lid geworden op: wo 12 mar 2003, 19:44

Re: [sitebuilding] foutmelding in cutenews

Ik gebruik al sinds jaar en dag ConTEXT editor, ook erg goed, en je kan er alles in editten. Load maar eens heel snel down.

Ik heb inderdaad ook moeite met

Code: Selecteer alles

if($i%$break_location == 0 and $break_location)
Als immers break_location false is, dan lijkt mij dat de modulo operatie niet kan werken.

Ik had liever iets gezien als

if ($break_location == true and $i%$break_location == 0)

Volgens mij word het namelijk van links naar rechts bekeken.

Je kan er ook twee if's van maken, helemaal veilig.

if ($break_location == true)

{ if ($i%$break_location == 0)

{ expression }

}
Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

Re: [sitebuilding] foutmelding in cutenews

Het openen in Crimson Editor levert de volgende kleurencontrole op (zelfde stuk als hierboven):
function insertSmilies($insert_location, $break_location = FALSE, $admincp = FALSE, $wysiwyg = FALSE)

{
global $config_http_script_dir, $config_smilies;
$smilies = explode(",", $config_smilies);
foreach($smilies as $smile)

{

$i++; $smile = trim($smile);
if($admincp){
if($wysiwyg{
//
$advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />";

// $output .= "<a href=# onclick=\"java script:InsertIntoArea('$insert_location','$advanced_smile'); return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";
$output .= "<a href=# onclick=\"document.getElementById('$insert_location').contentWindow.document.execCommand('InsertImage', false, '$config_http_script_dir/data/emoticons/$smile.gif'); return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";
}

else{ $output .= "<a href=# onclick=\"java script:document.getElementById('$insert_location').value += ' :$smile:'; return false;\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>"; }
}else{
$output .= "<a href=\"java script:insertext(':$smile:','$insert_location')\"><img style=\"border: none;\" alt=\"$smile\" src=\"$config_http_script_dir/data/emoticons/$smile.gif\" /></a>";
}
if($i%$break_location == 0 and $break_location)

{
$output .= "<br />";
}else{ $output .= " "; }
}
return $output;
}
Pff, wat een werk. Heb het zoveel mogelijk geprobeerd goed te zetten zoals het stuk hierboven, dus hoop dat er een beetje doorheen te lezen valt.

Ziet iemand de fout?
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...
Gebruikersavatar
Ger
Artikelen: 0
Berichten: 17.676
Lid geworden op: di 18 okt 2005, 09:51

Re: [sitebuilding] foutmelding in cutenews

Haha, dát had nou ook weer gehoeven. :D

Ik ga er vanuit dat iedereen die kennis heeft van PHP ook wel een scripteditor zal hebben en dan is het een kwestie van copy-paste. De tip van Crimson Editor was puur voor jou in de toekomst. :D

Maar goed, het is weer bezigheidstherapie voor je, en je hebt nu een leuke scripteditor op je computer staan. :D
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
Nvt
Artikelen: 0

Re: [sitebuilding] foutmelding in cutenews

Heb je ook al geprobeerd om $break_location = FALSE te veranderen in $break_location = TRUE?
Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

Re: [sitebuilding] foutmelding in cutenews

Haha, dát had nou ook weer gehoeven. :D
Een mens moet wat doen :D
Heb je ook al geprobeerd om $break_location = FALSE te veranderen in $break_location = TRUE?
Helaas, helpt ook niet :D
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: [sitebuilding] foutmelding in cutenews

DePurpereWolf schreef:Als immers break_location false is, dan lijkt mij dat de modulo operatie niet kan werken.

Ik had liever iets gezien als

if ($break_location == true and $i%$break_location == 0)

Volgens mij word het namelijk van links naar rechts bekeken.
Eigelijk maakt het geen zak uit voor de uitkomst, alleen maar om een beetje CPU kracht te besparen, en je zal normaal nog steeds dezelfde foutmelding krijgen. Maar ik weet niet of PHP lazy evaluation toepast. C++ e.d. doen dat zeker wel.

Nuja de fout:

$i%$break_location kan natuurlijk nooit iets degelijks opleveren. $break_location is een bool die namelijk de waarde heeft TRUE (1) of FALSE (0). Bij TRUE zou je eigelijk achter elke letter een <br> plaatsen, en bij FALSE krijg je natuurlijk een deling door 0.

Dus de code die daar gebruikt wordt is gewoon heel raar.

Wat zeker geen problemen zal opleveren is iets in dit genre:

Code: Selecteer alles

	if($i%$break_location == 0 and $break_location)

{

$output .= "<br />";

}else{ $output .= " "; }
Vervangen door:

Code: Selecteer alles

if($break_location) {

 if($break_location>1 && $i%$break_location == 0) $output .= "<br />";

 else $output .= " ";

}

else{ $output .= " "; }
Nvt
Artikelen: 0

Re: [sitebuilding] foutmelding in cutenews

Misschien kan je proberen om alles tussen die functie, commentaar te maken.

Tussen de begin accolade en eind accolade alles voorzien van twee slashen: //

Met uizondering van het return statemanent:

return $output;

daar maak je van

return null; of return " ";

Dan wordt er niets uitgevoerd in die functie en er wordt iets zinnigs terug gegeven

aan de aanroep van die functie.

Want: else{ $output .= " "; }, staat onder in de code.
Gebruikersavatar
PdeJongh
Artikelen: 0
Berichten: 2.005
Lid geworden op: wo 06 dec 2006, 21:31

Re: [sitebuilding] foutmelding in cutenews

Cycloon schreef:Nuja de fout:

$i%$break_location kan natuurlijk nooit iets degelijks opleveren. $break_location is een bool die namelijk de waarde heeft TRUE (1) of FALSE (0). Bij TRUE zou je eigelijk achter elke letter een <br> plaatsen, en bij FALSE krijg je natuurlijk een deling door 0.

Dus de code die daar gebruikt wordt is gewoon heel raar.

Wat zeker geen problemen zal opleveren is iets in dit genre:

Code: Selecteer alles

	if($i%$break_location == 0 and $break_location)

{

$output .= "<br />";

}else{ $output .= " "; }
Vervangen door:

Code: Selecteer alles

if($break_location) {

 if($break_location>1 && $i%$break_location == 0) $output .= "<br />";

 else $output .= " ";

}

else{ $output .= " "; }
Je bent geweldig!!! Nu is het probleem opgelost pi.gif
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

Terug naar “Informatica en programmeren”