Avatar billede alex15 Nybegynder
26. januar 2008 - 16:47 Der er 30 kommentarer og
2 løsninger

Kan man bruge <div> til at vise oplysninger fra database

Hej Eksperter

Har lige nu lavet en underside på min hjemmeside som automatisk kan vise mig hvem som har oprettet en bruger på min side.

Dette gøres på denne måde:

---

$query = mysql_query("SELECT * FROM brugere");
while($row = mysql_fetch_assoc($query))    {
    echo $row['brugernavn']." - ".$row['fornavn']." - ".$row['efternavn']. "<br/>";
    }

---

Dette gør at bowseren går ind og læser i database og ser hvem der har pårettet en bruger, samt fremviser det på denne måde.

f.eks.

Alexholte - Alex - Larsen
Henrik123 - Henrik - Hansen
osv.

Nu går mit spørgsmål ud på om jeg kan bruge <div> elementet fra css til at fremvise og styre hvor og hvordan disse oplysninger skal være på hjemmesiden, samt hvor henne?

Eller kan det kun gøres ved brug af tables?

Forstår i hvad mit spørgsmål går ud på?

Alex
Avatar billede keysersoze Ekspert
26. januar 2008 - 17:33 #1
du kan blande html, css og php sammen præcis som du lyster - så om du bruger tables eller divs gør ingen forskel rent kodemæssigt.
Avatar billede alex15 Nybegynder
26. januar 2008 - 18:17 #2
I know.

Et problemet jeg kunne forestille mig der var ved at bruge <div> kunne f.eks. være hvis man ville vise de sidste 10 nyheder. så skulle man jo gøre det på denne måde (TROR JEG).

css filen

#nyhedsboks{
width: 150px;
height: 200px;
}

#nyhed1{
position:absolute;
width: 150px;
height: 20px;
top:0px;
}

#nyhed2{
position:absolute;
width: 150px;
height: 20px;
top:20px;
}

#nyhed3{
position:absolute;
width: 150px;
height: 20px;
top:40px;
}

#nyhed4{
position:absolute;
width: 150px;
height: 20px;
top:60px;
}

osv.
html eller html filen.

<div id="nyhedsboks">

    <div id="nyhed1">//her kalder man den sidste oprettede nyhed i ens database</div>
    <div id="nyhed2">//her kalder man den næstsidste oprettede nyhed</div>
    <div id="nyhed3">//her kalder man den tredjesidste oprettede nyhed</div>
    <div id="nyhed4">//osv.</div>
    //osv.

</div>

Er dette en okay måde og gøre det på? Eller er det helt afhelved til? :D
Avatar billede dkfire Nybegynder
26. januar 2008 - 18:54 #3
Hvorfor er det du vil bruge position: absolute ???
Avatar billede alex15 Nybegynder
26. januar 2008 - 19:16 #4
Sjovt du siger det. Det sat jeg også lige og tænkte over..! ;)

Men self. hvis jeg ikke bruger "position: absolute;"

så ville det komme til at se ud på denne måde:

CSS fil:

#nyhedsboks{
width: 150px;
height: 200px;
}

#nyhed{
width: 150px;
height: 20px;
}

HTML or PHP fil:

<div id="nyhedsboks">

    <div id="nyhed">//her kalder man den sidste oprettede nyhed i ens database</div>
    <div id="nyhed">//her kalder man den næstsidste oprettede nyhed</div>
    <div id="nyhed">//her kalder man den tredjesidste oprettede nyhed</div>
    <div id="nyhed">//osv.</div>
    //osv.

</div>

Men ville dette være en optimal måde og gøre det på?
Avatar billede dkfire Nybegynder
26. januar 2008 - 19:21 #5
Det kommer da meget an på hvordan du vil have dine nyheder stillet op på siden
Avatar billede w13 Novice
26. januar 2008 - 19:33 #6
alex15>> Det er jo en meget kort kode, du får ud af det, og det er jo klart en god ting. Den eneste ikke-valide ting i koden lige pt. er, at du bruger id="nyhed" flere gange, og det er meget ulovligt, da et id jo skal være unikt. Dvs. det må kun bruges én gang. Brug i stedet class="nyhed" og ret så #nyhedsboks{ til .nyhedsboks{
Avatar billede dkfire Nybegynder
26. januar 2008 - 19:46 #7
w13: håber du mener omvendt :-)
.nyhed og #nyhedsboks

Og class="nyhed"
Avatar billede alex15 Nybegynder
26. januar 2008 - 19:49 #8
arh ja okay. Sådan viste jeg faktisk ikke at man kunne gøre det.. Utrolig så meget man lærer af at få hjælp fra jer ;o)

Tror også at det er den sidste måde du mener jeg skal gøre det på ikke?
Avatar billede w13 Novice
26. januar 2008 - 21:05 #9
dkfire>> Ja hov. =)
Avatar billede alex15 Nybegynder
27. januar 2008 - 19:54 #10
Okay, kan ikke lige finde ud af hvordan jeg skal få det til at fungere med det der .nyhedsboks{}

kunne forstå på dig, at det IKKE er tilladt og bruge <div id="boks"> 2 gange på én side - right?

Så derfor forslog du at man kunne bruge .boks{} i stedet. - Men kan ikke rigtig finde ud af hvordan det fungere..!

man kan jo ikke skrive på denne her måde:

<class id="boks"> </class> som man kunne have gjort hvis det havde været div i stedet for class.. :o)

- Så hvordan gør man så?
Avatar billede olebole Juniormester
27. januar 2008 - 20:00 #11
<ole>

<div class="boks">

/mvh
</bole>
Avatar billede w13 Novice
27. januar 2008 - 20:49 #12
Exactly!
Avatar billede dkfire Nybegynder
27. januar 2008 - 21:55 #13
CSS fil:

#nyhedsboks{
width: 150px;
height: 200px;
}

.nyhed{
width: 150px;
height: 20px;
}

PHP fil:

<div id="nyhedsboks">

    <div class="nyhed">Her kan du så vise en nyhed</div>
    <div class="nyhed">Og endnu en nyhed</div>
    <div class="nyhed">Og endnu en nyhed</div>
    <div class="nyhed">//osv.</div>
    //osv.

</div>
Avatar billede alex15 Nybegynder
27. januar 2008 - 22:15 #14
Arhh sådan.. Okay, jamen så må det jo ende med at jeg takker for hjælpen IGEN IGEN..! ;o)

Ser lige om jeg kan få det hele til at fungere så..! så vender jeg lige tilbage..
Avatar billede alex15 Nybegynder
29. januar 2008 - 22:51 #15
Perfekt. Nu funger delen med <div id> og <div class>. Nu mangler jeg bare at den tager noget information direkte fra databasen og smider det ind imellem <div class="nyhed">//HER</div>.

Har fået lavet følgende php kode:

<?php

require "connect.php";
   
    $query = mysql_query("SELECT * FROM nyheder");
    while($row = mysql_fetch_assoc($query))
    {
        echo $row['overskrift']. "<br/><br/>";
    }
?>

Denne her lykke skulle meget gerne vise samlige af de nyhedsoverskrifter som har jeg liggende i min database, under tabellen nyheder.

Men hvordan går jeg svaret fra $row['overskrift'] - ind i min <div class="nyhed"></div>...??? Vil gerne have at browseren automatisk laver et nyt <div class="nyhed"></div> og smider nyhedsoverskriften ind i den.

Ind til der self ikke er flere nyheder. Men det giver vist sig selv.

kan man bare gøre det på denne måde:

<?php

require "connect.php";
   
    $query = mysql_query("SELECT * FROM nyheder");
    while($row = mysql_fetch_assoc($query))
    {
   
    echo
    ?><div class="nyhed"> <?php $row['overskrift'] ?> </div> <?php ;
   
    }
?>


- Eller hvordan kan jeg gøre det?
Avatar billede w13 Novice
29. januar 2008 - 22:54 #16
Det kan gøres sådan her:

<?php

require "connect.php";
   
    $query = mysql_query("SELECT * FROM nyheder");
    while($row = mysql_fetch_assoc($query)){
      echo "<div class=\"nyhed\">".$row['overskrift']."</div>";
    }
?>
Avatar billede alex15 Nybegynder
30. januar 2008 - 08:44 #17
Okay. Ser lige om jeg kan få det til at virke når jeg kommer hjem fra work senere i aften.

Men hvad er det præcis af tegnet \ gør, når det vel og mærket står foran " ?
Avatar billede w13 Novice
30. januar 2008 - 10:24 #18
Vi åbner jo strengen med " så derfor kan vi ikke skrive tegnet " midt inde i strengen, for så lukkes den jo. Derfor "escaper" vi det, så den indsætter tegnet i HTML-koden.
Avatar billede alex15 Nybegynder
30. januar 2008 - 13:47 #19
Okay. Så når man skriver \ så lukker man strengen.. Men det er kun tegnet LIGE efter som er lukket? - derfor du sættet tegnet \ foran " de to gange..?

Det er altså ikke mellem \\ ??
Avatar billede w13 Novice
30. januar 2008 - 13:51 #20
Nej, vi lukker ikke strengen med \

Problemet er, at hvis du skriver:

streng="test "test" test"

så vil strengen blive lukket rundt om det midterste test, og derfor resultere i fejl. Så for at indsætte tegnet " som HTML rundt om det midterste "test", skal det escapes således:

streng="test \"test\" test"
Avatar billede w13 Novice
30. januar 2008 - 14:15 #21
Så lukkes strengen ikke omkring det midterste test. Så "\" efterfulgt af et tegn resulterer altså i, at det efterfølgende tegn indsættes som HTML.
Avatar billede alex15 Nybegynder
30. januar 2008 - 21:18 #22
Okay, perfekt. Nu fungere det som det skal. (Men kun i IE).

Tror jeg gør noget forkert med hensyn til koder. Safari og firefox viser det på en anden og forkert måde.

css filen:

.boksoplysniger
{
    z-index:1;
    border-top: 2px solid #003E63;
    margin:10px 5px 5px 5px;
    width:622px;
}

.boksoplysniger-navn
{
    z-index:1;
    margin:10px 0px 0px 0px;
    width:622px;
    font-weight:bold;
    font-size:14px;
}

.boksoplysniger-brugernavn
{
    z-index:1;
    margin:10px 0px 10px 0px;
    width:150px;
    font-size:11px;
    float:left;
    height:16px;
    line-height:15px;
}

.boksoplysniger-email
{
    z-index:1;
    margin:10px 0px 10px 0px;
    width:200px;
    font-size:11px;
    float:left;
    height:16px;
    line-height:15px;
}

.boksoplysniger-mobiltlf
{
    z-index:1;
    margin:10px 0px 0px 0px;
    width:200px;
    font-size:11px;
    float:left;
    height:16px;
    line-height:15px;
}

---------------------------------

php filen:

<?php

require "connect.php";
   
    $query = mysql_query("SELECT * FROM minebrugere");
    while($row = mysql_fetch_assoc($query))
    {
    echo
       
        "<div class=\"alleadmin-boksoplysniger\">
       
                <div class=\"boksoplysniger-navn\">"
                .$row['fornavn']. " " .$row['efternavn'].
                "</div>
               
                <div class=\"boksoplysniger-brugernavn\">
                Brugernavn: "
                .$row['brugernavn'].
                "</div>
           
                <div class=\"boksoplysniger-email\">
                E-mail: "
                .$row['email'].
                "</div>
               
                <div class=\"boksoplysniger-mobiltlf\">
                Mobil tlf: "
                .$row['tlfmobil'].
                "</div>
               
               
        </div>";
   
    }
?>

------------------

Resultat for de forskellige browsere kan ses nedefor:

IE (Det rigtig resultat)
http://www.alexanderchristensen.dk/test/IE.jpg

Firefox (Den næstmest rigtig resultat- Dog stadigvæk meget forkert)
http://www.alexanderchristensen.dk/test/firefox.jpg

Safari (HELT forkert)
http://www.alexanderchristensen.dk/test/Safari.jpg

- Hvad kan jeg gøre galt, siden de 2 browsere læser koden så forkert? Fejlen må ligge i boksene (tror jeg).

- Derudover så bliver den del af teksten på siden som jeg har valgt og skrive i "blod" total utydelig i Safari. - Hvad kan dette skyldes?

ps. Laver i ikke nogle svar. I har efterhånden svaret på mit spørgsmål. Kunne bare være lækkert og få det til at fungere 100% :D
Avatar billede alex15 Nybegynder
30. januar 2008 - 21:19 #23
Fejl:
"<div class=\"alleadmin-boksoplysniger\">

skulle have været

"<div class=\"boksoplysniger\">
Avatar billede w13 Novice
30. januar 2008 - 21:38 #24
Jeg kan umiddelbart ikke spotte problemet, men måske får jeg tid til at se lidt på det i morgen.

Hvad mener du med "i 'blod'"?

Her er i hvert fald et svar fra mig!
Avatar billede alex15 Nybegynder
30. januar 2008 - 22:11 #25
arh.. fandt fejlen ved at prøve mig lidt frem.

indsatte koden:

float:left;

i alle de forskellige class. og så var alt som det skulle være? hvordan kan det være? tror ikke rigtig jeg har forstået hvordan det der float:left; virker?!?:S

Okay, venter lige til at de andre også afgiver et svar, så får i jeres point :o)
Avatar billede alex15 Nybegynder
30. januar 2008 - 23:02 #26
Hov, lige med hensyn til problemet med uskarp tekst i Safari. Så har jeg taget et screen shot af mit navn som var vist på min hjemmeside via safari og et vist via firefox.

Firefox:
http://www.alexanderchristensen.dk/test/firefoxtekst.jpg

Safari:
http://www.alexanderchristensen.dk/test/Safaritekst.jpg

- For mig og se, ser det ud til at den nærmest prøver og lave noget skygge, eller sådan noget?
Avatar billede w13 Novice
31. januar 2008 - 07:44 #27
float:left gør det muligt at sidestille block-elementer såsom divs, som i dit tilfælde.
Block-elementer skal som standard have en hel linje for sig selv, men med float:left/right kan det omgåes.

Safari prøver ikke at lægge skygge på, den viser bare tekst med meget bløde kanter, og det er der ikke så meget at gøre noget ved. =) Det er bare sådan, Safari er.
Avatar billede alex15 Nybegynder
31. januar 2008 - 09:51 #28
Arhh.. Ja okay.. Så tror jeg at jeg forstået det.. :)

Okay, synes bare ikke at den bliver lige så uskarp på andre sider som den gør på min? Benytter mig af skrifttypen (font-family:verdana, arial, sans-serif;)

Den er fin nok og bruge ikke? eller er der andre du ville anbefale og benytte sig af istedet?
Avatar billede w13 Novice
31. januar 2008 - 10:21 #29
Helt fin, ja. Alle har Verdana, så den er god. Hvis man benytter en skrifttype, som en bruger ikke har, ser han/hun jo teksten med en standardskrifttype i stedet.

Plejer selv at bruge Verdane/Arial.

Det kan være tekstens størrelse, der gør, at den synes anderledes.
Avatar billede alex15 Nybegynder
31. januar 2008 - 10:51 #30
Ja okay. Nårh, men tror ikke at jeg har flere spørgsmål for denne gang så.. Du skal have mange tak for din venlighed :o) - og fordi du gider bruge din tid på nogle it-idioter som mig ;)
Avatar billede dkfire Nybegynder
31. januar 2008 - 19:30 #31
Jamen jeg ligger da lige et svar så :-)
Avatar billede alex15 Nybegynder
31. januar 2008 - 20:05 #32
Sådan :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