Avatar billede plazm Nybegynder
21. november 2003 - 22:15 Der er 21 kommentarer og
3 løsninger

Fejlfinding i script

Hey Jeg giver 200 point til den der først kan sige mig for jeg er kommet til at fjerne en { eller } så den siger parse error :)

<?php
session_start();
if(isset($_SESSION['Login'])) {
?>
<br>
<table width="80%">
<tr>
<td>
<?

$months = Array('','Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','October','November','December');
$days = Array('Søn','Man','Tir','Ons','Tor','Fre','Lør');
$totalDays = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$currMonth = $_GET['maaned'];
$currYear = $_GET['aar'];

if(!$currYear) { $currYear = date("Y"); }
if(!$currMonth) { $currMonth = date("n"); }
if(!$currDay) { $currDay = date("j"); }

if (date("L", mktime(0,0,0,$currMonth,1,$currYear)))
    {
    $totalDays[2] = 29;   
    }

$prevMonth = $currMonth-1;
$prevYear = $currYear;

if ($prevMonth < 1)
    {
    $prevMonth=12;
    $prevYear--;
    }   

$nextMonth = $currMonth+1;
$nextYear = $currYear;

if ($nextMonth > 12)
    {
    $nextMonth=1;
    $nextYear++;
    }   

$firstDayOfMonth = date("w", mktime(0,0,0,$currMonth,1,$currYear));
?>
<table border="0" cellpadding="2" cellspacing="5" style="border: solid 1px" bordercolor="#000000">
<tr>
<td><a href="index.php?p=admin/kalender&maaned=<? echo $prevMonth; ?>&aar=<? echo $prevYear; ?>"><font face="Arial" size="-2">&lt;&lt;</font></a></td>
<td colspan="5" align="CENTER"><font face="Arial" size="-1"><b><? echo $months[$currMonth] . " " . $currYear; ?></b></font></td>
<td><a href="index.php?p=admin/kalender&maaned=<? echo $nextMonth; ?>&aar=<? echo $nextYear; ?>"><font face="Arial" size="-2">&gt;&gt;</font></font></a></td>
</tr>

<tr>
<?
for ($x=0; $x<7; $x++)
{
echo '<td bordercolor="ffffff">
    <div align="center"><font color="#000066"><b><font face="Arial" size="-2">
        ' . substr($days[$x],0,3) . '
      </font></b></font></div>
  </td>';
}
?>
</tr>

<tr>
<?
for ($x=1; $x<=$firstDayOfMonth; $x++)
{
$rowCount++;
?>
<td bordercolor=ffffff><br></td>
<?
}

$dayCount=1;
while ($dayCount <= $totalDays[$currMonth])
{
    if ($rowCount % 7 == 0)
    {
    echo "</tr>\n<tr>\n";
    }

if ($dayCount == date("j") && $currYear == date("Y") && $currMonth == date("n"))
{
?>


<?
mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $dayCount . "' and Maaned = '" . $currMonth . "'");
if(mysql_fetch_array($mysql)) {
?>
<td align=center bgcolor=#CCCCFF><a href="index.php?p=admin/kalender&dag=<? echo $dayCount; ?>&maaned=<? echo $currMonth; ?>&aar=<? echo $currYear; ?>"><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></a></td>
<?
$currdag = $dayCount;
}
else {
?>
<td align=center bgcolor=#CCCCFF><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></td>
<?
}
?>


<?
}
else {
?>

<?
mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $dayCount . "' and Maaned = '" . $currMonth . "'");
if(mysql_fetch_array($mysql))
{
?>
<td align=center bgcolor=#FFFFFF><a href="index.php?p=admin/kalender&dag=<? echo $dayCount; ?>&maaned=<? echo $currMonth; ?>&aar=<? echo $currYear; ?>"><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></a></td>
<?
}
else {
?>
<td align=center bgcolor=#FFFFFF><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></td>
<?
}
?>

<?
}

for ($y=0; $y<sizeof($dateList); $y++)
{

    if ($dateList[$y] == $dayCount)
    {
    echo "<font face=Arial color=red size=-4>+</font>";
    }
}

echo "</td>\n";
$dayCount++;
$rowCount++;
}
?>
</tr>
</table>
</td><td>
<table border="0" cellpadding="2" cellspacing="5" style="border: solid 1px" bordercolor="#000000" width="80%" height="100%">
<tr width="100%" height="100%">
<td width="100%" height="100%">
<?
if(isset($_GET['dag'])) {
?>
<font size="-1"><b>Dag: <? echo $_GET['dag']; ?> <? echo $currMonth; ?> <? echo $currYear; ?></b></font><br>
<font size="-2">

<?

mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $_GET['dag'] . "' and Maaned = '" . $currMonth . "'");
while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
else {
mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $currday . "' and Maaned = '" . $currMonth . "'");
while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
}
?>

</font><br>
<?
}
?>
</td>
</tr>
</table>
</td>
</tr>
</table>
<?
}
else {
}
?>
Avatar billede plazm Nybegynder
21. november 2003 - 22:16 #1
det er omkring $currdag = $dayCount; fejlen er tror jeg, for det var der jeg lavede fejlen...
Avatar billede erikjacobsen Ekspert
21. november 2003 - 22:24 #2
Tror nu mere det er fordi du har en

  while (...) {
    ...
  } else {

for det kan man ikke. Hvad med at lave lidt indrykning? Og iøvrigt fortælle
os hvad fejlbeskeden faktisk er?
Avatar billede googolplex Novice
21. november 2003 - 22:28 #3
Prøv at lav:

while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
else {
mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $currday . "' and Maaned = '" . $currMonth . "'");
while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
}

Om til:

while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
mysql_connect("localhost","free25421","nitrnt4");
mysql_select_db("free25421");
$mysql=mysql_query("SELECT * from Kalender where Dag = '" . $currday . "' and Maaned = '" . $currMonth . "'");
while ($row=mysql_fetch_array($mysql)) {
echo $row["Tekst"];
}
Avatar billede googolplex Novice
21. november 2003 - 22:28 #4
Fejlen er så vidt jeg kan se:

Fatal Error: Fatal Error , parse error, unexpected T_ELSE (line 166)
Avatar billede plazm Nybegynder
21. november 2003 - 22:29 #5
erik jacobsen... kan jeg faktisk godt. :) men det er ikke problemet.. det er at jeg kom til at tilføje ller fjerne en { eller } fordi det eneste der er er PARSE ERROR.
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 22:34 #6
Nu håber jeg ikke formatteringen røg...

Men som en eller anden sagde...
Der er en } for meget i slutningen
Har fjernet den...

<?php
session_start();

if(isset($_SESSION['Login']))
{
    ?>
    <br>
    <table width="80%">
    <tr>
    <td>
    <?
   
    $months = Array('','Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','October','November','December');
    $days = Array('Søn','Man','Tir','Ons','Tor','Fre','Lør');
    $totalDays = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $currMonth = $_GET['maaned'];
    $currYear = $_GET['aar'];
   
    if(!$currYear)
    {
        $currYear = date("Y");
    }
    if(!$currMonth)
    {
        $currMonth = date("n");
    }
    if(!$currDay)
    {
        $currDay = date("j");
    }
   
    if (date("L", mktime(0,0,0,$currMonth,1,$currYear)))
    {
        $totalDays[2] = 29;   
    }
   
    $prevMonth = $currMonth-1;
    $prevYear = $currYear;
   
    if ($prevMonth < 1)
    {
        $prevMonth=12;
        $prevYear--;
    }   
   
    $nextMonth = $currMonth+1;
    $nextYear = $currYear;
   
    if ($nextMonth > 12)
  {
      $nextMonth=1;
      $nextYear++;
  }   
   
    $firstDayOfMonth = date("w", mktime(0,0,0,$currMonth,1,$currYear));
    ?>
    <table border="0" cellpadding="2" cellspacing="5" style="border: solid 1px" bordercolor="#000000">
    <tr>
    <td><a href="index.php?p=admin/kalender&maaned=<? echo $prevMonth; ?>&aar=<? echo $prevYear; ?>"><font face="Arial" size="-2">&lt;&lt;</font></a></td>
    <td colspan="5" align="CENTER"><font face="Arial" size="-1"><b><? echo $months[$currMonth] . " " . $currYear; ?></b></font></td>
    <td><a href="index.php?p=admin/kalender&maaned=<? echo $nextMonth; ?>&aar=<? echo $nextYear; ?>"><font face="Arial" size="-2">&gt;&gt;</font></font></a></td>
    </tr>
   
    <tr>
    <?
    for ($x=0; $x<7; $x++)
    {
        echo '<td bordercolor="ffffff">
            <div align="center"><font color="#000066"><b><font face="Arial" size="-2">
                ' . substr($days[$x],0,3) . '
              </font></b></font></div>
          </td>';
    }
    ?>
    </tr>
    <tr>
    <?
    for ($x=1; $x<=$firstDayOfMonth; $x++)
    {
        $rowCount++;
    ?>
        <td bordercolor=ffffff><br></td>
    <?
    }
   
    $dayCount=1;
    while ($dayCount <= $totalDays[$currMonth])
    {
    if ($rowCount % 7 == 0)
    {
        echo "</tr>\n<tr>\n";
    }
   
        if ($dayCount == date("j") && $currYear == date("Y") && $currMonth == date("n"))
        {
            mysql_connect("localhost","free25421","nitrnt4");
            mysql_select_db("free25421");
            $mysql=mysql_query("SELECT * from Kalender where Dag = '" . $dayCount . "' and Maaned = '" . $currMonth . "'");
            if(mysql_fetch_array($mysql))
            {
    ?>
                <td align=center bgcolor=#CCCCFF><a href="index.php?p=admin/kalender&dag=<? echo $dayCount; ?>&maaned=<? echo $currMonth; ?>&aar=<? echo $currYear; ?>"><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></a></td>
    <?
                $currdag = $dayCount;
            }
            else
            {
    ?>
                    <td align=center bgcolor=#CCCCFF><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></td>
    <?
            }
        }
        else
        {
            mysql_connect("localhost","free25421","nitrnt4");
            mysql_select_db("free25421");
            $mysql=mysql_query("SELECT * from Kalender where Dag = '" . $dayCount . "' and Maaned = '" . $currMonth . "'");
           
            if(mysql_fetch_array($mysql))
            {
    ?>
                <td align=center bgcolor=#FFFFFF><a href="index.php?p=admin/kalender&dag=<? echo $dayCount; ?>&maaned=<? echo $currMonth; ?>&aar=<? echo $currYear; ?>"><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></a></td>
    <?
            }
            else
            {
    ?>
                <td align=center bgcolor=#FFFFFF><font face="Arial" size="-2"><b><? echo $dayCount; ?></b></font></td>
    <?
            }
        }
   
        for ($y=0; $y<sizeof($dateList); $y++)
        {
       
            if ($dateList[$y] == $dayCount)
            {
                echo "<font face=Arial color=red size=-4>+</font>";
            }
        }
        echo "</td>\n";
        $dayCount++;
        $rowCount++;
    }
    ?>
    </tr>
    </table>
    </td><td>
    <table border="0" cellpadding="2" cellspacing="5" style="border: solid 1px" bordercolor="#000000" width="80%" height="100%">
    <tr width="100%" height="100%">
    <td width="100%" height="100%">
    <?
    if(isset($_GET['dag']))
    {
    ?>
        <font size="-1"><b>Dag: <? echo $_GET['dag']; ?> <? echo $currMonth; ?> <? echo $currYear; ?></b></font><br>
        <font size="-2">
    <?
   
        mysql_connect("localhost","free25421","nitrnt4");
        mysql_select_db("free25421");
        $mysql=mysql_query("SELECT * from Kalender where Dag = '" . $_GET['dag'] . "' and Maaned = '" . $currMonth . "'");
        while ($row=mysql_fetch_array($mysql))
        {
            echo $row["Tekst"];
        }
    }
    else
    {
        mysql_connect("localhost","free25421","nitrnt4");
        mysql_select_db("free25421");
        $mysql=mysql_query("SELECT * from Kalender where Dag = '" . $currday . "' and Maaned = '" . $currMonth . "'");
        while ($row=mysql_fetch_array($mysql))
        {
        echo $row["Tekst"];
        }
    }
    ?>
    </font><br>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <?
}
else
{
}
?>
Avatar billede erikjacobsen Ekspert
21. november 2003 - 22:34 #7
nej, goog - elsen hører til en if længere oppe.

Men der står vel også et linienummer i din fejlbeskedd, plaz
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 22:36 #8
hm... så røg formatteringen alligevel :(
Det er meget meget nemmere at se når man bruger indrykning som Erik foreslår...
Man kan finde de fleste fejl langt hurtigere når man kan overskue koden..

Der er flere steder hvor <? efterfølges af ?> uden noget imellem....bare et lille eksempel på at du nok også har svært ved at overksue koden ;)

Jeg har ikke testet... virker det?
Avatar billede plazm Nybegynder
21. november 2003 - 22:43 #9
jeg gjorde noget smart :)
Slettede det hele undtagen mine while () {

}
else {

}

og er begyndt forfra.. kalenderen virker igen... og ja koden er overskuelig.. bare ikk her :(
Avatar billede plazm Nybegynder
21. november 2003 - 22:44 #10
håber i er tilfredse med at få 15 point hver for at kikke forbi :D
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 22:45 #11
Ok... men det var stadig den fejl jeg fandt som gjorde...
Har du prøvet med det jeg sendte?
Avatar billede googolplex Novice
21. november 2003 - 22:47 #12
plazm: Hehe, jeg har lige gjort præcis det samme :P

Takker for poiint :)
Avatar billede plazm Nybegynder
21. november 2003 - 22:49 #13
mener du

blabla
?>
<?
blabla
?>
<?
blabla
??
Avatar billede googolplex Novice
21. november 2003 - 22:51 #14
Ja, alt undtagen det væsentlige :)
Avatar billede plazm Nybegynder
21. november 2003 - 22:55 #15
det er min måde at holde styr på noget.

Ser du. hvis jeg får den ide at mysql skal fjernes så det bare er en kalender unden link eller kun med links så skal jeg bare fjerne det midterste :)
Jeg tænker underligt, men for mig logisk :)
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 22:56 #16
Hvis det er mig du skrev til, så nej...

De overflødige <? ?> sæt giver jo ikke en fejl, det er bare dårlig stil.

Fejlen opstår fordi du har/havde en } for meget i slutningen. Koden skal jo være "symetrisk" hvis den skal kunne parses...
Avatar billede googolplex Novice
21. november 2003 - 22:57 #17
Så længe det virker for en selv, så er det vel også i orden at benytte sig af alternative metoder i ny og næ :)
Avatar billede plazm Nybegynder
21. november 2003 - 23:00 #18
Jeps :D
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 23:09 #19
Det synes jeg ikke det er. Der er jo ikke tale om en alternativ notation, men en overflødig kode. Du må næsten selv om din notation, men det er dumt at lære sig selv dårlige vaner. Så snart du kommer ud over "begynder" stadiet vil du se at mere komplekse scripts bliver umulige at overskue hvis ikke man holder sig til en standard. Desuden kan det være meget svært for andre at rette din kode (f.eks. på en arbejdsplads) eller give dig hjælp når de ikke kan få overblikket. Som min gamle programmeringslærer sagde:

Det hele drejer sig om de 3 S'er... Short, Sweet and Simple ;)

Jeg vil æde min gamle musemåtte på at de ikke er sat ind med vilje, men netop er sket fordi man ikke kan overskue koden. Hvis de er sat ind med vilje vil jeg da gerne høre grunden ;)

Just in case... se det som et venligt råd. Det er ikke en kritik, vi har alle været begyndere....
Avatar billede plazm Nybegynder
21. november 2003 - 23:15 #20
Kaptejn jeg forstår dig godt :)

Kan også være jeg ændrer det engang. men nu har jeg 170 linier.. vil tage lidt tid :)

Dårlige vaner skal bare væk.. bare ikk lige i aften.
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 23:20 #21
Det er sikkert også bedst at gøre det i morgen, du skal jo være frisk ;)
Men for din egen skyld, husk at få det gjort... Når du om 1 år skal tilføje eller rette noget, så har du balladen, for på det tidspunkt kan du ikke huske præcist hvilke linjer kode der gør hvad ;)
Avatar billede plazm Nybegynder
21. november 2003 - 23:26 #22
så må jeg bare "læse" det :)
Avatar billede kaptajnkemo Nybegynder
21. november 2003 - 23:29 #23
Sådan fungerer det ikke ;)

Bare vent... du kommer hurtigt lang lang langt ud over de 170 linjer, og din kode er faktisk enormt simpel.
Jeg har lige siddet på arbejdet idag og rettet i et script på 1300 linjer meget kompleks kode, det er ikke sådan lige at læse fra bunden... Hvis jeg ikke selv havde lavet det, der ikke var kommentarer og indrykningen manglede havde jeg nok været nødt til at bede bossen om et par dage til at regne ud hvad der foregår ;)
Avatar billede plazm Nybegynder
24. november 2003 - 16:39 #24
:)
Så må du bare være dårlig :P
Ej. jeg ved det godt og har brugt weekenden på at få alle mine siders indrykninger til at passe :)
Så du må ikk vrokke dig mere :P
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