Avatar billede cronaldo Nybegynder
01. juli 2008 - 11:07 Der er 14 kommentarer og
1 løsning

Dynamisk tabel baseret på php/mysql

Ja, det jeg skal bruge er en tabel, der skal flg.:

Jeg tjekker i min tabel, hvor mange billeder der er.
Der kan være ALT fra 0-6 :)
Jeg ville så have, at hvis der var:
0-3 billeder så var der kun én <tr></tr>
4 billeder var der 2 <tr> med 2 billeder i hver
5 billeder var der 2 <tr> med 3 billeder i den øverste og 2 i nederst
OG hvis der var 6 billeder var der 2 <tr> med 3 billeder i hver.

Kan det lade sig gøre at lave? :)
Avatar billede jakobdo Ekspert
01. juli 2008 - 12:43 #1
Ja, det kan godt lade sig gøre.
Faktisk er det jo kun antal 4 som gør noget anderledes.
Resten kan jo bare køre med 3 pr række...
Avatar billede cronaldo Nybegynder
01. juli 2008 - 12:50 #2
Hvordan skal det laves ? :)
Avatar billede cronaldo Nybegynder
01. juli 2008 - 13:45 #4
Fremragende lavet :) ..
du kan sgu dit kram.
Mange tak!

.. smid svar ;)
Avatar billede jakobdo Ekspert
01. juli 2008 - 13:56 #5
Svar!
Avatar billede cronaldo Nybegynder
01. juli 2008 - 14:01 #6
Hmm, når jeg vil sætte det sammen med et udtræk fra databasen giver dette ikke det rigtige?


<?php
                                                    $forespPics = mysql_query("SELECT * FROM adPictures WHERE tilad = \"$id\" ORDER BY id");
                                                    $numcount = mysql_num_rows($forespPics);
                                                        while ($data = mysql_fetch_array($forespPics)){
                                                       
                                                        $id = $data[id];
                                                    $antal = (isset($numcount22) && is_numeric($numcount22) && $numcount22 > 0) ? intval($numcount22) : 4;
                                                    $mod = ($antal == 4) ? 2 : 3;
                                                   
                                                    if($antal > 0){
                                                        echo '<table cellpadding="0" cellspacing="0"><tr>';
                                                       
                                                        for($i = 1; $i <= $antal; $i++){
                                                            echo '<td><a href="index.php?page='.$_GET['page'].'&id='.$_GET['id'].'&pic='.$picid.'"><img src="' . $thumb . '"></a></td>';
                                                            if(($i % $mod) == 0){
                                                                echo '</tr><tr>';
                                                            }
                                                        }
                                                       
                                                        echo '</tr></table>';
                                                    }    
                                                    }
                                                    ?>   


HVAD gør jeg forkert? :)
Avatar billede cronaldo Nybegynder
01. juli 2008 - 14:01 #7
hov .. 2 sek
Avatar billede cronaldo Nybegynder
01. juli 2008 - 14:09 #8
har fundet det .. takker :)
Avatar billede jakobdo Ekspert
01. juli 2008 - 14:18 #9
Takker for point.
Avatar billede cronaldo Nybegynder
01. juli 2008 - 15:03 #10
jakobdo, er du der stadig ?
Avatar billede cronaldo Nybegynder
01. juli 2008 - 15:06 #11
Jeg har lavet koden om til flg.:



<?php
                                                    $forespPics = mysql_query("SELECT * FROM adPictures WHERE tilad = ".$_GET['id']." ORDER BY id");
                                                    $numcount22 = mysql_num_rows($forespPics);
                                                   
                                                    $id = $data[id];
                                                    $antal = (isset($numcount22) && is_numeric($numcount22) && $numcount22 > 0) ? intval($numcount22) : 4;
                                                    $mod = ($numcount22 == 4) ? 2 : 3;
                                                   
                                                    if($antal > 0){
                                                        echo '<table cellpadding="0" cellspacing="2"><tr>';
                                                       
                                                        while ($dataa = mysql_fetch_array($forespPics)){
                                                            $picid = $dataa[id];
                                                            $thumb = $dataa[thumb];
                                                           
                                                            for($i = 1; $i <= $antal; $i++){
                                                                echo '<td><a href="index.php?page='.$_GET['page'].'&id='.$_GET['id'].'&pic='.$picid.'"><img src="' . $thumb . '"></a></td>';
                                                                    if(($i % $mod) == 0){
                                                                        echo '</tr><tr>';
                                                                    }
                                                            }
                                                        }
                                                       
                                                        echo '</tr></table>';
                                            }    
                                    ?>
Avatar billede cronaldo Nybegynder
01. juli 2008 - 15:07 #12
og problemet er, at den udskriver 4 af HVERT billede i stedet for kun 1 af hvert ? :s
Det med at lave <tr> gør den rigtigt nok :s ?
Avatar billede jakobdo Ekspert
01. juli 2008 - 15:16 #13
Prøv denne:

<?php
if(isset($_GET['id']) && is_numeric($_GET['id'])){
    $id = intval($_GET['id']);
   
    $forespPics = mysql_query("SELECT * FROM adPictures WHERE tilad = ".$id." ORDER BY id");
    $antal = mysql_num_rows($forespPics);
   
    $mod = ($antal == 4) ? 2 : 3;
    $counter = 1;
   
    if($antal > 0){
        echo '<table cellpadding="0" cellspacing="2"><tr>';
   
        while ($dataa = mysql_fetch_array($forespPics)){
            $picid = $dataa[id];
            $thumb = $dataa[thumb];
   
            echo '<td><a href="index.php?page='.$_GET['page'].'&id='.$id.'&pic='.$picid.'"><img src="' . $thumb . '"></a></td>';
            if(($counter % $mod) == 0){
                echo '</tr><tr>';
            }
            $counter++;
        }
        echo '</tr></table>';
    }
}
?>
Avatar billede cronaldo Nybegynder
01. juli 2008 - 16:04 #14
jep, den virker :)
Avatar billede jakobdo Ekspert
01. juli 2008 - 17:05 #15
Selvfølgelig! :o)
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