Avatar billede Slettet bruger
20. juli 2005 - 22:05 Der er 11 kommentarer og
1 løsning

Dette script skifter ikke kategori - find fejlen for mig

Jeg har fundet dette script på web, og kunne godt bruge det - der er bare en fejl i koden så den ikke skifter kategori.
Den fejl kan jeg ikke finde.

Jeg lægger det op på 3my.frac.dk (hvis jeg er heldig at komme igennem)

Ellers er det her:
Det koster 'måske' lidt arbejde derfor vil jeg godt give 100 p

1)Jeg lavet 2 demo-doc som scriptet indlæser
  a) gemmes som 1Clematis.faq

Hvorfor dyrke clematis i potter og krukker ?
Det vil være et naturligt valg, hvis man kun har en meget lille have, en gårdhave, en terrasse eller en altan. Men har man en vinterhave eller havestue kan man få clematis i blomst to måneder tidligere end de udplantede i haven. Desuden kan de bruges til. udsmykning af trapper, repos'er, siddepladser, gange og indgangspartier.
  b) gemmes som 2Roser.faq

SÅDAN FÅR DU FLOTTE ROSER
JORDEN skal være varm, mindst 7 gr. og porøs, dyb lerblandet muldjord med god gennemluftning giver en god vandholdende evne, uden at den forbliver langvarig våd hvis der kommer kraftig regn. Lidt tung og lerholdig jord er bedre end en let og sandholdig.
Altså alsidigt sammensat med meget organisk materiale. tørvemuld, kompostjord, naturgødning, og findelt ler og benmel.

 
2)Den originale kode - på scriptet:

<?php
$err="";
$totfound=0;
if(!isset($idx)) $idx=0;
function QuestionHere($cnt,$Q)
{
    print "<b>$cnt. $Q</b><br>";
}

function AnswerHere($cnt,$A)
{
    print "$A <font size=1><br><br></font>";
}

//read all with .faq ext.
$currdir=getcwd();
$dir=@opendir($currdir);
if(!$dir) print "Error dir $currdir";
$aCategory=array();
$n=0;
while($file=@readdir($dir))
    {
    if(substr($file,-4)==".faq")
        {
        $aCategory[]=$file;
        //print substr($file,-4)." = $n. $aCategory[$n]<br>"; $n++;
        }
    }

sort($aCategory);
$nMaxCate=count($aCategory);

//Search
if(isset($searchtxt) && strlen($searchtxt)<3)
{
$err="Search at least 3 characters.";
$idx=-1;
$aFound=array();
}
elseif(isset($searchtxt) && $searchtxt!="")
{
$idx=-1;
$aFound=array();
for($a=0;$a<$nMaxCate;$a++)
    {
    $nFirst=0;
    $ccfile=$currdir."/".$aCategory[$a];
    $fp=@fopen($ccfile,"r");
    if(!@fp) {print "Error reading ".$currdir."/".$aCategory[$a]; exit;}
    $QorA=0;
    $cnt=1;
    $TempQ="";
    $okenter=0;
    while(!feof($fp))
        {
        $ln=fgets($fp,5000);
        if(trim($ln)!="")
            {

                if(stristr($ln,$searchtxt) || $okenter==1)
                {
                    if($nFirst==0)
                    {
                        $cCate=str_replace("_"," ",$aCategory[$a]);
                        $cCate=substr(substr($cCate,1),0,-4);
               
                        $aFound[]="@CATEGORY@$cCate";
                        $nFirst=1;
                    }

           
                    if($QorA==0) //Question
                        {
                        $QorA=1;
                        $okenter=1;
                        $totfound++;
                        }
                    else
                        {
                        $QorA=0;
                        if($okenter==0)
                            {
                            $totfound++;
                            $TempQ=str_replace($searchtxt,"<font color='000080'>$searchtxt</font>",$TempQ);
                            $aFound[]=$TempQ;
                            }
                        $okenter=0;
                        }
                    $ln=str_replace($searchtxt,"<font color='000080'>$searchtxt</font>",$ln);
                    $aFound[]=$ln;

                }
                else
                {
                    if($QorA==0) {$TempQ=$ln; $QorA=1;}
                    elseif($QorA==1) {$QorA=0; $TempQ="";}
                }
            }
   
        }
    }
}

?>


<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>FAQ</title>
<STYLE type="text/css">
<!--
A { text-decoration:none; color: #0000cc }
-->
</STYLE>

<style fprolloverstyle>A:hover {color: #cc0000;}</style>

</head>

<body>
<center>
<table border="0" width="750" style="font-family: Arial; font-size: 10pt" cellspacing="0" cellpadding="5">
  <tr>
    <td width="100%" bgcolor="#000080">
      <p align="center"><font color="#FFFFFF" size="4"><b>FAQ</b></font></td>
  </tr>
  <tr>
    <td width="100%">
      <p align="center"><b>Categories :</b><br>&nbsp;

<?php
for($a=0;$a<$nMaxCate;$a++)
{
$cCate=str_replace("_","<font color=#ffffff>_</font>",$aCategory[$a]);
$cCate=substr(substr($cCate,1),0,-4);
$$cCate=strtoupper($file);

if($a==$idx) {print "[<b><font color='#008080'>$cCate</font></b>] &nbsp;"; $cSelectedCate=$cCate;}
else print "[<a href='faq.php?idx=$a'>$cCate</a>] &nbsp;";
}
?>

</p>
    </td>
  </tr>
  <tr>
    <td width="100%">
<form method="POST" action="faq.php">

      <p align="center"><b>Search :</b>
        <input type="text" name="searchtxt" size="20" style="font-family: Arial; font-size: 8pt">
      <input type="submit" value="Go" name="Search" style="font-family: Arial; font-size: 8pt">
      </form>
      </p>
    </td>
  </tr>
  <tr>
    <td width="100%">
      <hr width="95%" size="1" color="#777777">


<?php
if($idx>=0)
{
print "<font size='3' color='#008080'><b>$cSelectedCate<br><br></b></font>";

$fp=@fopen($aCategory[$idx],"r");
if(!$fp) {print "Error reading ".$currdir."/".$aCategory[$a]; exit;}
$QorA=0;
$cnt=1;
while(!feof($fp))
    {
    $ln=fgets($fp,500);
    if(trim($ln)!="")
        {
        if($QorA==0) {QuestionHere($cnt,$ln); $QorA=1;}
        else {AnswerHere($cnt,$ln); $QorA=0; $cnt++;}
        }
    }
}
else
{ // SEARCH MODULE
$nMaxFound=count($aFound);

if($nMaxFound==0)
{
if($err!="") print "<br><font color='cc0000'>$err</font>";
else print "No search found for <b>$searchtxt</b>";
}

else
    {
    print "<font color=#000080 size=3>Search \"<b>$searchtxt</b>\", found <b>$totfound</b> topics.<br></font>";
    $cnt=1;
    $QorA=0;
    for($a=0;$a<$nMaxFound;$a++)
        {
        if(substr($aFound[$a],0,10)=="@CATEGORY@")
            {
            $cSelectedCate=substr($aFound[$a],10);
            print "<br><font size='3' color='#008080'><b>$cSelectedCate<br></b></font>";   
            $QorA=0;       
            }
        else
            {
            if($QorA==0) {QuestionHere($cnt,$aFound[$a]); $QorA=1;}
            else {AnswerHere($cnt,$aFound[$a]); $QorA=0; $cnt++;}
            }       
        }

    }
}
?>

<br><br><font size=1>Powered by <a href='http://smallcapitalbusiness.com'>SmallCapitalBusiness.com</a></font>
</td>
  </tr>
</table>

</body>

</html>
Avatar billede Slettet bruger
20. juli 2005 - 22:26 #1
Nu virker det efter upload til frac - jeg kan ikke give nogen forklaring hvorfor - kan det være min localhost-opsætning ? - for når jeg kører det localt virker katagoriskift ikke
Avatar billede erikjacobsen Ekspert
21. juli 2005 - 00:20 #2
Jah, du skal ikke bruge $idx men derimod $_GET['idx']  - det første ser du kun i ældgamle, uduelige scripts. Hold dig fra dem.
Avatar billede Slettet bruger
21. juli 2005 - 10:46 #3
Nu er jeg endnu ikke den store PHP-smed, har rettet alle $idx til $_GET['idx'], og så virker det også på localhost, og må nok forsøge at finde noget doc. så jeg kan forstå hvad der foregår.

Ved validering får jeg 15 fejl, har erstattet de første 4 linier med:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

.....
Line 7, column 11: character "$" not allowed in prolog

print "<b>$cnt. $Q</b><br>";

.....
Line 22, column 1: character "{" not allowed in prolog

{

.....
Line 37, column 0: character "$" not allowed in prolog

$_GET['idx']=-1;

.....
Line 50, column 1: character "$" not allowed in prolog

$QorA=0;

......
Line 65, column 6: character "$" not allowed in prolog

$cCate=substr(substr($cCate,1),0,-4);

......
Line 81, column 6: character "i" not allowed in prolog

if($okenter==0)

......
Line 90, column 5: character "$" not allowed in prolog

$aFound[]=$ln;

......

nu ved jeg ikke hvad 'prolog' er og kan ikke finde det i de sparsomme bøger jeg har.

.......

Kan dette doc tilrettes så det opfylder 'dagens' standard ?
Avatar billede Slettet bruger
21. juli 2005 - 22:29 #4
Det var det - ingen svar, og jeg ved at erik ikke modtager p
Avatar billede erikjacobsen Ekspert
22. juli 2005 - 00:20 #5
Var det fordi havde lavet en .html fil i stedet for en .php - eller lagt den på en server, der ikke forstod PHP?
Avatar billede Slettet bruger
22. juli 2005 - 09:28 #6
Jeg ved ikke om det er rigtigt, men har konstateret:

Jeg bruger TSW-webcoder, deri er indbygget en HTML-validator, og ved validering med den får jeg ovennævnte fejl,som alle stammer fra PHP-coden.

Jeg lagde så siden op på frac.dk, og ved validering med link hertil, blev alle ovennævnte fejl udeladt.

Jeg konkluderer så, at jeg ikke kan validerer doc. indeholdende PHP fra min localhost-serveropsætning.

Men hvad så med PHP-coden, er der ingen 'fejlfinder' til den ?

Jeg er ny,så kundskaberne på området HTML/PHP i samme doc er ikke ret store, giver jeg doc xxx.html virker det ikke, hvorimod xxx.php gør.

Samme gør sig gældende hvis jeg skal include et script.

Men TSW-webcoder laver mange sjove ting for mig, men skal dog ikke sige det er programmet der er årsag til det hele.

Men tak for interessen - dit indlæg 21/07-2005 00:20:49 hjalp mig lidt videre.
Avatar billede erikjacobsen Ekspert
22. juli 2005 - 10:16 #7
Ja, du kan ikke validere PHP kode, kun den HTML, der kommer ud af at udføre PHP-koden.
Jeg kender ikke TSW-webcoder, men måske kan den sættes op til også at udføre PHP-koden, hvis du fx har Apache/PHP på din egen maskine.

Der er ingen validator for PHP - men du får fejlbeskeder når du udfører PHP-koden.
Avatar billede Slettet bruger
22. juli 2005 - 10:34 #8
TSW-webcoder kan preview doc indeholdende php-code via localhost, jeg har install Apache/PHP, men den forsøger også at validerer PHP-code, hvilket var årsagen til dette spm-indlæg, som det fremgår af de fejlmeldinger jeg fik (21/07-2005 10:46:18)

Jeg har købt Stones WebWriter, som også skulle kunne servermapping, men jeg kan ikke få den til det og ved forespørgsel til Steen Hjelmstad, får man ingen svar, har interesserer sig åbenbart kun for sin SummaSumarum.
Avatar billede erikjacobsen Ekspert
22. juli 2005 - 12:06 #9
Øv så - jeg kender slet ikke de 2 produkter.
Avatar billede Slettet bruger
22. juli 2005 - 12:20 #10
Må jeg tillade mig at spørge om hvilken webcoder du bruger/anbefaler
Avatar billede erikjacobsen Ekspert
22. juli 2005 - 12:28 #11
Jo da, men det hjælper nok ikke så meget. Jeg bruger noget der svarer til Notesblok i Windows, altså en almindelig text-editor.
Avatar billede Slettet bruger
22. juli 2005 - 13:08 #12
Jeg ville have gættet på det, bruger mest selv de <tags> der findes i ovennævnte programmer, men jeg har også NoteTabLight versionen og den bruger jeg i stedet for Win-Noteblok, der er indbygget HTML-koder

Men tak for conversation
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