Databasens layout

Her kan du få hjælp og stille spørgsmål til MySQL/MySQLi!
Besvar
MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53
Databasens layout

Indlæg af MissKotek » 27. sep 2011, 13:49

Hej :)
Er der nogen der kender en kode, til at opstille en database i ønskede kolonner og rækker i php-outputtet?
Layoutet må nemlig gerne være mere interessant, end blot en lang liste.

Brugeravatar
webudvikleren
Rutineret
Rutineret
Indlæg:80
Tilmeldt:13. jun 2011, 21:11
Geografisk sted:Esbjerg
Kontakt:

Re: Databasens layout

Indlæg af webudvikleren » 27. sep 2011, 14:03

Hej MissKotek.

Du kan altid style det som du har lyst ved at rage nytte af CSS. Brug en while loop hvori du fetcher din SQL forespørgsel i en array og opstil derefter dine resultater som du har lyst til :)

Eks:

Kode: Vælg alt

while($data = mysql_fecth_array($result_from_query)) {
   echo "<div id=\"min_raekke\">".$data['navn']."</div>";
}
Håber det er brugbart :)

MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53

Re: Databasens layout

Indlæg af MissKotek » 27. sep 2011, 15:13

Jeg forstår din tankegang, men nu hvor jeg er nybegynder indenfor PHP og MySQL til det være rart hvis du kunne hjælpe lidt.
Hvis vi tager udgangspunkt i jeres brugere eksempel, som anvendes i videoerne.
Her bliver printet en lang liste over brugerne. Den her liste vil jeg gerne dele op i 3 koloner opstil i rækkefølge efter brugernes ID.
Hvorledes skal koden så se ud? :)

Brugeravatar
webudvikleren
Rutineret
Rutineret
Indlæg:80
Tilmeldt:13. jun 2011, 21:11
Geografisk sted:Esbjerg
Kontakt:

Re: Databasens layout

Indlæg af webudvikleren » 27. sep 2011, 16:22

hehe.. ja okay.. vi prøver på en mere pædagogisk korrekt måde.. :)

Du skal først hente dine data fra din MySQL database ved at benytte en forespørgsel.

Vi antager at du har følgende kolonner (attributter) i din tabel som er døbt "din_tabel":

id
name
username
password
active

En forespørgsel kan se således ud:

Kode: Vælg alt

$result = mysql_query("SELECT * FROM din_tabel WHERE active ='1'");
Ovenstående henter altså alle rækker (tuples), hvor kolonne med navnet "active" er defineret med et 1-tal og gemmer dette i variablen $result.
For at "printe" resultaterne skal vi først gemme resultaterne i en "array". Det gøres således:

Kode: Vælg alt

$arrayData = mysql_fetch_array($result); 
Denne nye variabel "$arrayData" er en variabel vi, ligesom "$result", selv bestemmer navnet på og altså gemmer resultaterne i. Hvis vi prøver at printe denne variabel vil der blot stå "array" på din skærm. Det dur ikke rigtig, så vi skal derfor bede PHP om at printe denne array korrekt. Det gøres, i dette tilfælde, ved hjælp af en while-løkke (while-loop):

Kode: Vælg alt

 $show_us = "";

while($arrayData = mysql_fetch_array($result)) {
 $show_us .= <div class=\"column1\">ID = ".$arrayData['id']."</div>";
 $show_us .= <div class=\"column2\">Brugernavn = ".$arrayData['username']."</div>";
 $show_us .= <div class=\"column3\">Navn = ".$arrayData['name']."</div>";
 $show_us .= <div class=\"clearFloatingDivs\"></div>";
}

print $show_us;
Ovenstående vil udskrive 4 div's for hver gang du har en tuple i din tabel.

Vi har i det ovenstående været så smarte at tildele hver div en "class". Denne kan vi bruge i vores CSS. CSS koden for at liste ovenstående divs korrekt, så vi får en form for tabelvisning, ser således ud:

Kode: Vælg alt

.column1 { float:left; width:20%;}
.column2 { float:left; width:40%;}
.column3 { float:left; width:40%;}
.clearFloatingDivs { clear:both; }


Det er faktisk alt du skal gøre - Og så selvfølgelig huske at forbinde til din MySQL database før du udfører forespørgslen. Husk at lukke forbindelsen igen bagefter. :)

MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53

Re: Databasens layout

Indlæg af MissKotek » 27. sep 2011, 22:09

Hej :) Jeg takker meget for din tid og hjælp!
Vil du gøre mig den tjeneste at sætte koden ind i en køre, for jeg tror jeg har lavet en fejl, da der hele tiden opstår en syntax fejl.

Brugeravatar
webudvikleren
Rutineret
Rutineret
Indlæg:80
Tilmeldt:13. jun 2011, 21:11
Geografisk sted:Esbjerg
Kontakt:

Re: Databasens layout

Indlæg af webudvikleren » 28. sep 2011, 08:40

Johh. Hvis den melder en syntax fejl, er det meget muligt der er en komma der mangler et sted eller placeret forkert. Det er lidt svært at spore i et tekstdokument som dette. Så beklager hvis det er... :)

din index.php:

Kode: Vælg alt

<head>
<link rel="stylesheet" type="text/css" href="STI/TIL/DIN/CSS.css" />
</head>
<body>

<?php
// lav din opkobling til din database her. Nemprogrammering har en video du kan se her: http://www.nemprogrammering.dk/Tutorials/MySQL/T4mysql.php

$result = mysql_query("SELECT * FROM din_tabel WHERE active ='1'")
// Jeg tilføjer lige en error-handler som fortæller dig hvis fejlen er i din database.. Bemærk jeg har slettet semikolon ovenfor.
or die(mysql_error());
$show_us = "";

while($arrayData = mysql_fetch_array($result)) {

$show_us .= <div class=\"column1\">ID = ".$arrayData['id']."</div>";
$show_us .= <div class=\"column2\">Brugernavn = ".$arrayData['username']."</div>";
$show_us .= <div class=\"column3\">Navn = ".$arrayData['name']."</div>";
$show_us .= <div class=\"clearFloatingDivs\"></div>";
}

print $show_us;

// luk din mysql forbindelse her
mysql_close();

?>

</body>
Og så din cssfil:

Kode: Vælg alt

.column1 { float:left; width:20%;}
.column2 { float:left; width:40%;}
.column3 { float:left; width:40%;}
.clearFloatingDivs { clear:both; }
God fornøjelse :)

MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53

Re: Databasens layout

Indlæg af MissKotek » 28. sep 2011, 15:47

Hej (: Selvom jeg kopier koden og indsætter mine oplysninger, opstår der stadig en syntax fejl.
Det gør der i forbindelse med denne kode:

print $show_us;

$show_us = "";

while($arrayData = mysql_fetch_array($result)) {
$show_us .= <div class=\"column1\">ID = ".$arrayData['id']."</div>";
$show_us .= <div class=\"column2\">Brugernavn = ".$arrayData['username']."</div>";
$show_us .= <div class=\"column3\">Navn = ".$arrayData['name']."</div>";
$show_us .= <div class=\"clearFloatingDivs\"></div>";
}

print $show_us;

Syntax fejlen opstår i alle linjerne der stater med "$show_us" efter while-løkken. Men jeg kan ikke se nogen fejl?

Brugeravatar
webudvikleren
Rutineret
Rutineret
Indlæg:80
Tilmeldt:13. jun 2011, 21:11
Geografisk sted:Esbjerg
Kontakt:

Re: Databasens layout

Indlæg af webudvikleren » 28. sep 2011, 16:09

Der mangler lige et anførselstegn efter $show_us .= ... Sådan skal linjerne være:

$show_us .= "<div class=\"column1\">ID = ".$arrayData['id']."</div>";

MissKotek
Begynder
Indlæg:19
Tilmeldt:10. sep 2011, 14:53

Re: Databasens layout

Indlæg af MissKotek » 29. sep 2011, 15:44

Hej! Jeg vil sige tusinde tak for hjælpen! Koden fungerer :)

Er det muligt at opstille én information fx. navnet i de her tre kolonner?

Fx.
Peter
Jens
Emil

Ønsket php-output:
Peter Jens Emil

Jeg har forsøgt lidt selv, men der kun fået gentaget den samme information tre gange i den ønskede opstilling.
På forhånd tak! :-D

Brugeravatar
webudvikleren
Rutineret
Rutineret
Indlæg:80
Tilmeldt:13. jun 2011, 21:11
Geografisk sted:Esbjerg
Kontakt:

Re: Databasens layout

Indlæg af webudvikleren » 29. sep 2011, 20:35

Det du skal gøre er blot at ændre på de HTML tags der forekommer i while loopen fra tidligere eksempel...
Så i stedet for at skrive "<div>...</div>" laver du bare et mellemrum... :) Går ud fra du har styr på HTML :)

Besvar