Avatar billede Slettet bruger
22. april 2012 - 18:07 Der er 21 kommentarer og
1 løsning

fejl i loop

Hej.
Jeg har fået hjælp i en anden tråd -> http://www.eksperten.dk/spm/961192#reply_7933084

MEN kunne ikke helt få det til at fungere alligevel og får intet svar fra brugeren der hjalp mig, så håber der er nogle her der kan hjælpe mig :-)
I nedenstående er koden jeg bruger på min test side, og linket til den oprindelige side, som viser hvordan det skal se ud.
Det er for at optimere koden jeg skal bruge dette. Se evt. tidliger tråd som jeg har linket til i toppen :-)


//Test side
<?php

include ('databasen.php');
$months_danish = array(
    1 => "Januar",
    2 => "Februar",
    3 => "Marts",
    4 => "April",
    5 => "Maj",
    6 => "Juni",
    7 => "Juli",
    8 => "August",
    9 => "September",
    10 => "Oktober",
    11 => "November",
    12 =>"December"
);

$html = array();
foreach( $months_danish as $key => $month) {
    $html[] = '<a id="myHeader1" class="month" href="java script:showonlyone(\'newboxes'.$key.'\');">'.strtoupper($month).'</a>';
    $html[] = '<div name="newboxes" id="newboxes'.$key.'" class="event_month">';
 
    $sql = "SELECT * FROM events WHERE maanede='".strtolower($month)."' AND godkendt='1' ORDER BY date ASC";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
    echo '<table id="event_table">';
    echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])].date(' Y',$row[date]).'</span></td></tr>';
    echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
    </table>';     
    }
 
 
    $html[] = '</div>';
}

echo implode("\n", $html); //Udskriver til sidst html-arrayet

?>

Her er linket til test side
http://www.afterlife.dk/ (...)

det ser lidt forkert ud, da det jo gerne skulle blive til det her http://www.afterlife.dk/ (...)

Hvad gør jeg forkert? Har prøvet diverse ting, håber du kan se fejlen.
Avatar billede claes57 Ekspert
22. april 2012 - 18:57 #1
du gør det forkert, at du linker to gange til samme side. Så der er ingen forskel.
Avatar billede claes57 Ekspert
22. april 2012 - 19:01 #2
hvorfor skriver du ikke en intern besked til inteeeL og henviser hertil.
Avatar billede inteeeL Nybegynder
22. april 2012 - 19:07 #3
Hej, det var mig der i din gamle tråd hjalp dig med at liste samme side op via loop. Jeg kan dog se i kildekoden, at noget går galt. Det tyder på, at du ikke har fået implementeret det godt i dit system - det spiller ikke med dit layout. Du kunne prøve at uploade begge dine filer på Pastebin, så jeg kan se, hvor fejlen ligger. :-)

HUSK at fjerne evt. login-informationer til eksempelvis mysql.

@claes57: Hvis du besøger begge links vil du kunne se, at det er to forskellige sider.
Avatar billede claes57 Ekspert
22. april 2012 - 20:32 #4
uanset hvad, så kommer jeg kun til http://www.afterlife.dk/
med 'kopier linkadresse' så skriver den det samme.
Hvad er linket på de to sider (bare en gang til for mig), og kan du ikke udpege forskellen (jeg er ikke detektiv - og du ved jo allerede hvor forskellen er).

Evt start på http://bquot.com/
så får du på få klik en mulighed for at tegne/farve på et site, og vi andre kan se, hvad du mener...
Avatar billede inteeeL Nybegynder
22. april 2012 - 20:36 #5
@Claes57: Hov, det er da mig, der sidder og bruger links fra den tidligere tråd. www.eksperten.dk/spm/961192 - 2. sidste svar; det var nok de to links, han prøvede at få med i denne tråd. :-)
Avatar billede Slettet bruger
22. april 2012 - 20:49 #6
Hej inteeeL :-)
Hm jeg kender ikke pasbin og har ikke en bruger, men er der andre steder jeg kan sende dig hele koden eller kan jeg gøre det herinde? :-) Noget går jo galt har du ret i.

Claes57, jeg forstår ikke hvad du snakker om, links virker fint :-)
Avatar billede claes57 Ekspert
22. april 2012 - 20:51 #7
ok - så er det ikke mig, der ikke kan se forskel - linket døde på kopieringen.
Avatar billede inteeeL Nybegynder
22. april 2012 - 21:12 #8
@Nannamh90: Du kan vist logge ind med facebook eller andre sociale netværk uden problemer, men der er selvfølgelig andre alternativer.

1. Gør som følge (kan også bruges i fremtiden): Lav en kopi af events.php og kald den oprindelig_fil.php. I toppen af den fil og i toppen af test.php indsætter du følgende kode:
if(isset($_GET["source"])) { highlight_file(__FILE__); exit; }

På den måde bliver alt indhold vist, når man besøger http://www.afterlife.dk/oprindelig_fil.php?source og http://www.afterlife.dk/test.php?source. Husk dog, at ALT indhold kan ses - fjern derfor evt. kodeord og andre private informationer. Denne idé foreslår jeg, efter at have set ronols foreslå andre det og selv bruge det. Det kommer til at se sådan her ud: http://olsensweb.dk/myownapps/drvideo/index.php?source

2. Hvis ovenstående er for svært, kan du bare sende det her. :-)
Avatar billede Slettet bruger
22. april 2012 - 21:27 #9
Dette er test.php

//content

<div id="content">
<?php

include ('db.php');
$months_danish = array(
    1 => "Januar",
    2 => "Februar",
    3 => "Marts",
    4 => "April",
    5 => "Maj",
    6 => "Juni",
    7 => "Juli",
    8 => "August",
    9 => "September",
    10 => "Oktober",
    11 => "November",
    12 =>"December"
);

$html = array();
foreach( $months_danish as $key => $month) {
    $html[] = '<a id="myHeader1" class="month" href="java script:showonlyone(\'newboxes'.$key.'\');">'.strtoupper($month).'</a>';
    $html[] = '<div name="newboxes" id="newboxes'.$key.'" class="event_month">';
   
    $sql = "SELECT * FROM events WHERE maanede='".strtolower($month)."' AND godkendt='1' ORDER BY date ASC";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
    echo '<table id="event_table">';
    echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])].date(' Y',$row[date]).'</span></td></tr>';
    echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
    </table>';       
    }
   
   
    $html[] = '</div>';
}

echo implode("\n", $html); //Udskriver til sidst html-arrayet

?>

</div>
//slut

Detter er den aktuelle events.php
//content

<div id="content">
       
          <a id="myHeader1" class="month" href="java script:showonlyone('newboxes1');">januar</a>
         
          <div name="newboxes" id="newboxes1" class="event_month">
            <?php
            $months_danish = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
           
            include ('db.php');
            $sql = "SELECT * FROM events WHERE maanede='januar' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
     
        <a id="myHeader2" class="month" href="java script:showonlyone('newboxes2');">februar</a>
        <div name="newboxes" id="newboxes2" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='februar' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
     
        <a id="myHeader3" class="month" href="java script:showonlyone('newboxes3');">marts</a>
        <div name="newboxes" id="newboxes3" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='marts' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader4" class="month" href="java script:showonlyone('newboxes4');">april</a>
        <div name="newboxes" id="newboxes4" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='april' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<div id="event_table">';
            echo '<div class="event_maan">'.$months_danish[date('n',$row[date])-1].'</div>';
            echo '<div class="event_date">'.date('j',$row[date]).'</div>';
            echo '<span class="event_year">'.date('Y',$row[date]).'</span>';
            echo '<div class="event_title"><a href="eventen.php?id='.$row[id].'">'.$row["title"].'</a></div></div>';
            }
            ?>
        </div>
       
        <a id="myHeader5" class="month" href="java script:showonlyone('newboxes5');">maj</a>
        <div name="newboxes" id="newboxes5" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='maj' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader6" class="month" href="java script:showonlyone('newboxes6');">juni</a>
        <div name="newboxes" id="newboxes6" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='juni' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader7" class="month" href="java script:showonlyone('newboxes7');">juli</a>
        <div name="newboxes" id="newboxes7" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='juli' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader8" class="month" href="java script:showonlyone('newboxes8');">august</a>
        <div name="newboxes" id="newboxes8" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='august' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader9" class="month" href="java script:showonlyone('newboxes9');">sep</a>
        <div name="newboxes" id="newboxes9" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='september' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader10" class="month" href="java script:showonlyone('newboxes10');">okt</a>
        <div name="newboxes" id="newboxes10" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='oktober' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader11" class="month" href="java script:showonlyone('newboxes11');">nov</a>
        <div name="newboxes" id="newboxes11" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='november' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
        <a id="myHeader12" class="month" href="java script:showonlyone('newboxes12');">dec</a>
        <div name="newboxes" id="newboxes12" class="event_month">
            <?php
            $sql = "SELECT * FROM events WHERE maanede='december' AND godkendt='1' ORDER BY date ASC";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result)) {
            echo '<table id="event_table">';
            echo '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])-1].date(' Y',$row[date]).'</span></td></tr>';
            echo '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
            </table>';
            }
            ?>
        </div>
       
       
        </div>//slut
Avatar billede inteeeL Nybegynder
22. april 2012 - 21:51 #10
Prøv nedenstående:
<?php

include ('db.php');
$months_danish = array(
    1 => "Januar",
    2 => "Februar",
    3 => "Marts",
    4 => "April",
    5 => "Maj",
    6 => "Juni",
    7 => "Juli",
    8 => "August",
    9 => "September",
    10 => "Oktober",
    11 => "November",
    12 =>"December"
);

$html = array();
foreach( $months_danish as $key => $month) {
    $html[] = '<a id="myHeader'.$key.'" class="month" href="java script:showonlyone(\'newboxes'.$key.'\');">'.strtoupper($month).'</a>';
    $html[] = '<div name="newboxes" id="newboxes'.$key.'" class="event_month">';
 
    $sql = "SELECT * FROM events WHERE maanede='".strtolower($month)."' AND godkendt='1' ORDER BY date ASC";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
        $html[] = '<table id="event_table">';
        $html[] = '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])].date(' Y',$row[date]).'</span></td></tr>';
        $html[] = '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>
        $html[] = '</table>';     
    }
 
    $html[] = '</div>';
}

echo implode("\n", $html); //Udskriver til sidst html-arrayet

?>
Avatar billede Slettet bruger
23. april 2012 - 12:04 #11
tak, det virker :-) Svar!
Avatar billede Slettet bruger
23. april 2012 - 12:13 #12
Men den virker stadig efter det der står i DB og ikke efter hvilken måned det er ?! :-(
Avatar billede Slettet bruger
23. april 2012 - 12:18 #13
I Sql'en bruger den $maanede som bliver indsat med en dropdown med hver måneds navn.

$sql = "SELECT * FROM events WHERE maanede='".strtolower($month)."' AND godkendt='1' ORDER BY date ASC";

i stedet skulle den kunne vælge det ud fra det timestamp jeg har i db som hedder 'date' så jeg kan fjerne inputfeltet til $maanede og gøre det nemmere for brugeren at oprette :-)

se opret ->
http://afterlife.dk/opret_event.php
Avatar billede inteeeL Nybegynder
23. april 2012 - 15:26 #14
Det nævnte du ikke noget om i tråden, men jo - det kan godt lade sig gøre. Se nedenstående:
<?php

include ('db.php');
$months_danish = array(
    1 => "Januar",
    2 => "Februar",
    3 => "Marts",
    4 => "April",
    5 => "Maj",
    6 => "Juni",
    7 => "Juli",
    8 => "August",
    9 => "September",
    10 => "Oktober",
    11 => "November",
    12 =>"December"
);

$html = array();
foreach( $months_danish as $key => $month) {
    $html[] = '<a id="myHeader'.$key.'" class="month" href="java script:showonlyone(\'newboxes'.$key.'\');">'.strtoupper($month).'</a>';
    $html[] = '<div name="newboxes" id="newboxes'.$key.'" class="event_month">';
 
    $month_start = mktime(0, 0, 0, $key, 1, date('Y'));
    $month_end = mktime(23, 59, 59, $key+1, 0, date('Y'));
    $sql = "SELECT * FROM events WHERE godkendt='1' AND (date BETWEEN $month_start AND $month_end) ORDER BY date ASC";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
        $html[] = '<table id="event_table">';
        $html[] = '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])].date(' Y',$row[date]).'</span></td></tr>';
        $html[] = '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>';
        $html[] = '</table>';     
    }
 
    $html[] = '</div>';
}

echo implode("\n", $html); //Udskriver til sidst html-arrayet

?>

Bemærk dog, at den kun henter events fra dette år (2012). Det kan du selv ændre. Desuden burde du ikke navngive dit felt date, da det er reserveret. :-)
Avatar billede Slettet bruger
23. april 2012 - 15:33 #15
Okay, tak, tester det lige.
Ja jeg ved godt den er reserveret :-)

hm hvad så hvis jeg både vil havde for 2012 og 2013?
Avatar billede inteeeL Nybegynder
23. april 2012 - 15:46 #16
Se nedenstående:
<?php

include ('db.php');
$months_danish = array(
    1 => "Januar",
    2 => "Februar",
    3 => "Marts",
    4 => "April",
    5 => "Maj",
    6 => "Juni",
    7 => "Juli",
    8 => "August",
    9 => "September",
    10 => "Oktober",
    11 => "November",
    12 =>"December"
);

$html = array();
foreach( $months_danish as $key => $month) {
    $html[] = '<a id="myHeader'.$key.'" class="month" href="java script:showonlyone(\'newboxes'.$key.'\');">'.strtoupper($month).'</a>';
    $html[] = '<div name="newboxes" id="newboxes'.$key.'" class="event_month">';
 
    $month_start = mktime(0, 0, 0, $key, 1, date('Y'));
    $month_end = mktime(23, 59, 59, $key+1, 0, date('Y')+1);
    $sql = "SELECT * FROM events WHERE godkendt='1' AND (date BETWEEN $month_start AND $month_end) ORDER BY date ASC";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
        $html[] = '<table id="event_table">';
        $html[] = '<tr><td><span class="event_dato">'.date('j. ',$row[date]).$months_danish[date('n',$row[date])].date(' Y',$row[date]).'</span></td></tr>';
        $html[] = '<tr><td><a class="event_title" href="eventen.php?id='.$row[id].'">'.substr($row["title"], 0, 35).'</a></td></tr>';
        $html[] = '</table>';     
    }
 
    $html[] = '</div>';
}

echo implode("\n", $html); //Udskriver til sidst html-arrayet

?>

Du vil kunne se, at jeg ved $month_end har tilføjet +1 til sidst - det vil sige, at alle events fra (eksempelvis) juli 2012 og juli 2013 vil vises under JULI, hvilket måske ikke er særlig praktisk.
Avatar billede Slettet bruger
24. april 2012 - 14:06 #17
Men hvis jeg bruger den øverste løsning og kun henter events fra 2012, så når vi går ind i 2013 skifter den så af sig selv til 2013 ? :-)
Avatar billede inteeeL Nybegynder
24. april 2012 - 19:34 #18
Ja, det gør den. date('Y') viser det nuværende årstal. :-)
Avatar billede Slettet bruger
24. april 2012 - 20:42 #19
når jeg bruger #16 udskriver den alle events på en gang :-(
Avatar billede inteeeL Nybegynder
24. april 2012 - 21:10 #20
Du skal bruge koden i #14.
Avatar billede Slettet bruger
25. april 2012 - 12:53 #21
Takker.
svar :-)
Avatar billede inteeeL Nybegynder
25. april 2012 - 13:23 #22
Svar :-)
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