Avatar billede beaver Nybegynder
02. januar 2006 - 18:59 Der er 31 kommentarer og
1 løsning

Nemmere måde af få data fra mySQL?

Hej

Jeg er ved at lave et varekatalog for en af mine kammerater. Jeg tænker dog på om der ikke er en nemmere måde at få mine data ud fra min tabel, og få skrevet på siden.

Sådan som det kører nu, så virker det. Men jeg synes bare det er forvirrende at finde rundt i, og det må være en lettere, eller ihvertfald bedre måde at gøre det på.

Og hvordan kan jeg lige sikre mig at min tabel ikke bliver "udvidet" Fx. hvis jeg skriver en linie tekst, og jeg indsætter et billede (100x100px) så bliver min tabel høj. Hvordan kan jeg undgå dette?

Min kode:
<?
include ("config.php");
con_db();
$query = mysql_query("SELECT * FROM varekatalog");
while ($data = mysql_fetch_array($query)){
$billede = $data['billede'];
echo "<table border='0' width='630' cellspacing='0' cellpadding='0'>
    <tr>
        <td rowspan='2' width='100'>";
echo "<img src='img/$billede' style='width:100; height:100;'>";
echo "</td>";
echo "        <td width='3' bgcolor='#bed4df'></td>
        <td width='264' bgcolor='#bed4df'>";
echo "<b>";
echo $data['vare_navn'];
echo "</b>";
echo"<td width='100' bgcolor='#bed4df'>";
echo $data['pris_eksl_moms']; echo "kr";
echo "(";
echo $data['pris_incl_moms'];
echo ")";
echo "</td>
    </tr>
    <tr>
        <td width='3' bgcolor='#d3e0ef'></td>
        <td width='527' colspan='2' bgcolor='#d3e0ef'>";
echo nl2br($data['beskrivelse']);
echo "</td>
    </tr>
</table>";
echo "<br>";
}
?>

Mvh. Beaver ;o)
Avatar billede udvikler Nybegynder
02. januar 2006 - 19:29 #1
Spørgsmål:
Sådan som det kører nu, så virker det. Men jeg synes bare det er forvirrende at finde rundt i, og det må være en lettere, eller ihvertfald bedre måde at gøre det på.
----------------------
Svar:
Nej det er der ikke, det er den mest simple måde at gøre det på.

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

Spørgsmål:
Og hvordan kan jeg lige sikre mig at min tabel ikke bliver "udvidet" Fx. hvis jeg skriver en linie tekst, og jeg indsætter et billede (100x100px) så bliver min tabel høj. Hvordan kan jeg undgå dette?
----------------------
Svar:
Det kan du gøre ved at angive din height og width i px og ikke bare width="527" fx
altså skal det ændres til width="527px"
Avatar billede beaver Nybegynder
02. januar 2006 - 19:37 #2
Spørgsmål:
Sådan som det kører nu, så virker det. Men jeg synes bare det er forvirrende at finde rundt i, og det må være en lettere, eller ihvertfald bedre måde at gøre det på.
----------------------
Svar:
Nej det er der ikke, det er den mest simple måde at gøre det på.

----------------------
Mit svar:
Hm, der er ikke en mere overskuelig måde at gøre det på?
----------------------

Spørgsmål:
Og hvordan kan jeg lige sikre mig at min tabel ikke bliver "udvidet" Fx. hvis jeg skriver en linie tekst, og jeg indsætter et billede (100x100px) så bliver min tabel høj. Hvordan kan jeg undgå dette?
----------------------
Svar:
Det kan du gøre ved at angive din height og width i px og ikke bare width="527" fx
altså skal det ændres til width="527px"
----------------------
Mit Svar:
Jeg vil lige prøve :o)
----------------------
Avatar billede beaver Nybegynder
02. januar 2006 - 19:40 #3
Ser ikke ud til at have hjulpet, men jeg har så heller ikke sat height på mine celler. Jeg har engang hørt: Definér ALDRIG height på tabeller!
Avatar billede udvikler Nybegynder
02. januar 2006 - 19:42 #4
Narh der er heller ikke en mere overskuelig måde..

men hvis du nu skal trække noget ud på denne måde

$query = mysql_query("SELECT felt1,felt2,felt3,felt4 FROM varekatalog");
while ($data = mysql_fetch_array($query)){
//udskrift at rækker
}

så har jeg set nogle der gør det sådan her:

$query = mysql_query("SELECT
felt1,
felt2,
felt3,
felt4
FROM varekatalog");
while ($data = mysql_fetch_array($query)){
//udskrift at rækker
}

men, dit valg. Synes dog den med * er bedst
Avatar billede udvikler Nybegynder
02. januar 2006 - 19:46 #5
for at være ærlig har jeg heller aldrig fået det til at virke ved at ændre det til width="527px" fx. Jeg har dog altid fået af vide at det ville hjælpe :S
men kan husk jeg læste et sted at det kun virker på frames og iframes.
Avatar billede hmortensen Nybegynder
02. januar 2006 - 19:52 #6
Du kan gøre sådan her:

<?php
$q = mysql_query(.......);

while ($data = mysql_fetch_array($q))
{
?>

<table>
  <tr>
    <td>Fornavn</td>
    <td><?php echo $data['fornavn'];?></td>
  </tr>
  <tr>
    <td>Efternavn</td>
    <td><?php echo $data['efternavn'];?></td>
  </tr>
</table>

<?php
}
?>
Avatar billede Slettet bruger
02. januar 2006 - 19:55 #7
eller:

<?php
$query = mysql_query(.......);

while ($data = mysql_fetch_object($query))
{
echo "
<table>
  <tr>
    <td>Fornavn:</td>
    <td>". $data->fornavn ."</td>
  </tr>
  <tr>
    <td>Efternavn:</td>
    <td>". $data->efternavn ."</td>
  </tr>
</table>";
}
?>
Avatar billede Slettet bruger
02. januar 2006 - 19:56 #8
Mht til dit spørgsmål om den udvidede tabel..

Aco som default er størrelser angivet i px, dvs ingen betegnelse = px.

beaver du skal bruge wordwrap [1]

[1] www.php.net/wordwrap
Avatar billede udvikler Nybegynder
02. januar 2006 - 19:57 #9
wicez -> ja ok, som sagt var det også noget jeg fik af vide :)
Avatar billede beaver Nybegynder
02. januar 2006 - 20:01 #10
hmortensen ->

<?php
$q = mysql_query(.......);

while ($data = mysql_fetch_array($q))
{
?>

<table>
  <tr>
    <td>Fornavn</td>
    <td><?php echo $data['fornavn'];?></td>
  </tr>
  <tr>
    <td>Efternavn</td>
    <td><?php echo $data['efternavn'];?></td>
  </tr>
</table>

<?php
}
?>

Ja rigtig let måde at gøre det på, men måske også for let? Der kommer kun det sidste der er blevet sat ind i feltet! Dvs. Det er ikke alle "varer" der kommer hos, mig. kun 1.

Kigger på wices.
Avatar billede hmortensen Nybegynder
02. januar 2006 - 20:02 #11
Så gør du det forkert, for det der vil virke.

Kig på dit html output, og se om du har fejl der.
Avatar billede repox Seniormester
02. januar 2006 - 20:06 #12
Benyt dig af CSS istedet for tabeller. Dette vil gøre det nemmere at fastsætte størrelsen. Samtidig med vil det virke mere korrekt at benytte sig af DIV's. (ikke for at starte en diskussion om fremtiden brug af div's eller tabeller)
Avatar billede Slettet bruger
02. januar 2006 - 20:06 #13
Sådan:

<?php
$query = mysql_query(.......);

echo "<table>";
while ($data = mysql_fetch_object($query))
    {
    echo "
      <tr>
        <td>Fornavn:</td>
        <td>". $data->fornavn ."</td>
      </tr>
      <tr>
        <td>Efternavn:</td>
        <td>". $data->efternavn ."</td>
      </tr>";
    }
echo "</table>";
?>
Avatar billede hmortensen Nybegynder
02. januar 2006 - 20:07 #14
repox, CSS istedet for tabeller ???

CSS kan ikke indeholde noget, men det kan html elementer.
Til det kan man bruge tabeller og styre dem emd CSS.
Avatar billede repox Seniormester
02. januar 2006 - 20:10 #15
<div class="vare">mit output fra databasen kan sagtens læses i denne div som jeg har defineret størrelse og baggrundsfarve på vha. css, så hvad snakker du om?</div>
Avatar billede hmortensen Nybegynder
02. januar 2006 - 20:13 #16
Det kan du også gøre med en tabel, og tabeller er beregnet til at opstille data, så ville være dumt ikke at bruge dem til deres formål.
Avatar billede repox Seniormester
02. januar 2006 - 20:15 #17
det var også blot en opfordring, men du skal ikke fortælle mig at den ene måde er mere korrekt end den den anden da div's og CSS kan give nøjagtig det samme som tables kan.
Avatar billede Slettet bruger
02. januar 2006 - 20:15 #18
Her har jeg lavet det: men der er flere fejl:

1. du har forkert antal kolonner i den nederste række i din tabel.
2. din tabelbredde passer ikke med felternes samlede bredde


<?
include ("config.php");
con_db();
$query = mysql_query("SELECT * FROM varekatalog");

while($data = mysql_fetch_array($query))
    {
    echo "
    <table style=\"width: 630px; border: 0px; border-collapse: collapse;\" cellpadding='0'>
      <tr style=\"background: #bed4df;\">
        <td rowspan='2' style=\"width: 100px;\"><img src=\"img/". $data['billede'] ."\" style=\"width:100px; height:100px;\"></td>
        <td style=\"width: 3px;\"></td>
        <td style=\"width: 264px; font-weight: bold;\">". $data['vare_navn'] ."</td>
        <td style=\"width: 100px;\">". $data['pris_eksl_moms'] ."kr (". $data['pris_incl_moms'] .")</td>
      </tr>
      <tr style=\"background: #d3e0ef;\">
        <td style=\"width: 3px;\"></td>
        <td style=\"width: 527px;\" colspan='2'>". nl2br($data['beskrivelse']) ."</td>
      </tr>
    </table>
    <br>";
    }
?>
Avatar billede hmortensen Nybegynder
02. januar 2006 - 20:16 #19
repox, min point er at du ikke forstår hvad CSS er. Du bruger også CSS på tabeller...
Avatar billede repox Seniormester
02. januar 2006 - 20:50 #20
Forstår JEG ikke css? Kig på http://err0r.dk og så fortæl mig at jeg ikke forstår css... jeg benytter mig på intet tidspunkt af tabeller.
Avatar billede beaver Nybegynder
02. januar 2006 - 21:55 #21
Selve mit kode mæssige layout er på plads nu, jeg synes selv jeg har fået en overskuelig kode.

Nu mangler jeg at finde ud af hvorfor min tabeller bliver høje.
Hvis jeg skriver 3 linier som beskrivelse, så virker det som det skal, men hvis jeg fx. kun skriver en, så bliver min celle højde meget høj, så der er meget luft omkring min tekst for oven og forneden.
Avatar billede hmortensen Nybegynder
02. januar 2006 - 22:01 #22
Du bruger div og ikke tabeller ja, men du forstår tydeligvis ikke at CSS er en designspecifikation som tilføjes til et element, som fx. en tabel eller en div.
Avatar billede repox Seniormester
02. januar 2006 - 23:38 #23
ja, undskyld da, hvis jeg ikke udtrykker mig klart nok og du med fuldt overlæg vil misforstå det.
hvis det behager herren vil jeg da overveje om statens skolepenge blev brugt godt nok i min tid...
Avatar billede hmortensen Nybegynder
02. januar 2006 - 23:51 #24
Du siger at spørger bør bruge CSS istedet for tabeller, det har ikke noget med at misforstå noget. Det er bare noget vrøvl at sige.
Avatar billede beaver Nybegynder
03. januar 2006 - 18:40 #25
hmortensen, smider du et svar?

Jeg lukker. Jeg har endnu ikke løst mit problem mht. tabel højder. vil lige kigge nærmere på det, kan være jeg opretter et nyt spørgsmål :o)
Avatar billede Slettet bruger
03. januar 2006 - 18:49 #26
Det her er da noget af det mest useriøse jeg nogensinde har set:

Jeg har lige lavet en komplet kode til dig samt pointeret de ting, du bør rette i koden.

Dine spørgsmål er så vage, at ingen kan gennemskue at løse dem - konkrete spørgsmål giver konkrete svar.
Avatar billede beaver Nybegynder
03. januar 2006 - 18:58 #27
nå ok.

Så vent da indtil hmortensen giver hans svar, så skal du nok få point!

Men hvorfor skriver du så ikke i første indlæg: Jeg er i tvivl om hvad det er du mener, kan du prøve at give en bedre forklaring?

Det er jo nemt nok, at skrive et spørgsmål, for man forstår jo selv spørgsmålet, men det er jo ikke lige altid alle gør det.

Sorry fordi jeg ikke er perfekt :(
Avatar billede Slettet bruger
03. januar 2006 - 19:09 #28
Jeg troede, at jeg forstod spørgsmålet, hvorfor jeg også kom med et løsningsforslag.
Mit problem er herefter, at du ville lade pointene tilfalde en person, der diskuterer definitionen på css.
Avatar billede beaver Nybegynder
03. januar 2006 - 19:12 #29
det er nu repox der diskutere CSS er det ikke? Hmortensen har da også givet hans bud på hvordan mit problem skal løses.

Men jeg bliver godt nok nød til at kigge på repox' forslag, med at bruge div. Jeg skal lige finde ud af hvordan de gør på andre sites.
Avatar billede Slettet bruger
03. januar 2006 - 19:21 #30
En diskussion er defineret ved, at flere personer fremlægger en sag - ikke én. [1]

Der er ingen grund til, for dig, at gå i dybden med css' box-model og tabellers grundopbygning, da du herved ikke får tid til at arbejde med php i de næsten 2-3 år (hvis du arbejder med html/css fuld tid, vel at mærke). Koncentrér dig om det, du skal bruge og lad andre tage sig af resten.


[1] http://www.google.dk/search?q=define%3A+discussion
Avatar billede hmortensen Nybegynder
03. januar 2006 - 23:14 #31
Giv du bare point til wicez, jeg er her kun for at hjælpe ;)
Avatar billede beaver Nybegynder
04. januar 2006 - 10:50 #32
hmortensen, du er nu så beskeden :)
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