Avatar billede bachy Nybegynder
22. februar 2005 - 01:04 Der er 18 kommentarer og
1 løsning

Hvad gør jeg forket ?

Jeg har kastet mig ud i lidt php kodning, og vil gerne have mine resultater hevet ud af mysql, det går også fint, og sætte dem ind i en tabel går også f... nahh .. fint går det ikke, den tager overskriften med sig ind hver gang den laver en ny linie, planen var jo at overskriften kun skal stå der engang, og derunder skal resultaterne komme.

En anden ting jeg gerne ville have den til, var at den skiftede farve for hver linie ..

Er der ikke en venlig sjæl der gider prøve kigge på min kode, og evt hjælpe mig med at rette det til, så det virker efter mine hensigter :)

Det skal nok lige nævnes at jeg er newbie indenfor php, og det ville derfor være rart om i gad gøre jer den umage at forklare hvad i laver :)

<?Php
$conn = mysql_connect("server", "user", "pass");
mysql_select_db("bachy");

$result = mysql_query("select * from pizzaria");

while ($row = mysql_fetch_array($result))
{
echo "<table width=\"800\" border=\"0\" cellspacing=\"5\" cellpadding=\"5\">";
echo "<tr>";
echo "<td width=\"10\">Nummer</td>";
echo "<td width=\"100\">Navn</td>";
echo "<td width=\"400\">Indhold</td>";
echo "<td width=\"135\">Medium</td>";
echo "<td width=\"35\">Large</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";

  echo $row["Nummer"];

echo "</td>";
echo "<td>";

  echo $row["Produkt"];

echo "</td>";
echo "<td>";

  echo $row["Info"];


echo "</td>";
echo "<td>";

  echo $row["pris_L"];

echo "</td>";
echo "<td>";

  echo $row["pris_XL"];

echo "</td>";
echo "<td></td>";
echo "</tr>";

echo "</table>";
echo "</html>";
}
mysql_close();
?>
Avatar billede michael_stim Ekspert
22. februar 2005 - 01:11 #1
Hvis du er ny, er det bedre du selv gör det. Men jeg kan fortälle hvordan det skal göres.
while-loopen gör jo at den körer igen og igen til der ikke er flere poster i tabellen. Derfor skal du have starten af tabellen og overskrifterne udenfor while-loopen. Ligeså med slutningen af tabellen og de sidste htmltags.
Avatar billede coderdk Praktikant
22. februar 2005 - 01:21 #2
Du har en while-løkke, det er den der gentagne gange henter én post ud ad gangen fra din database. Derfor skal du blot flytte overskrifter osv ud af det:

<html><head><title>Din side</title></head><body>
<?php
$conn = mysql_connect("server", "user", "pass");
mysql_select_db("bachy");

$result = mysql_query("select * from pizzaria");

echo "<table width=\"800\" border=\"0\" cellspacing=\"5\" cellpadding=\"5\">";
echo "<tr>";
echo "<td width=\"10\">Nummer</td>";
echo "<td width=\"100\">Navn</td>";
echo "<td width=\"400\">Indhold</td>";
echo "<td width=\"135\">Medium</td>";
echo "<td width=\"35\">Large</td>";
echo "</tr>";

while ($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>";

  echo $row["Nummer"];

echo "</td>";
echo "<td>";

  echo $row["Produkt"];

echo "</td>";
echo "<td>";

  echo $row["Info"];


echo "</td>";
echo "<td>";

  echo $row["pris_L"];

echo "</td>";
echo "<td>";

  echo $row["pris_XL"];

echo "</td>";
echo "<td></td>";
echo "</tr>";
}

echo "</table>";
echo "</body>";
echo "</html>";
mysql_close();
?>

Du kan måske med fordel læse lidt på http://www.webcafe.dk/artikler/php/ :)
Avatar billede michael_stim Ekspert
22. februar 2005 - 01:23 #3
Jeg prövede at väre pädagogisk coderdk ;o)
Tror man lärer sig mere på den måde, istedet for at få koden serveret.
Avatar billede jakoba Nybegynder
22. februar 2005 - 01:26 #4
Peøv at kikke på den source der bliver genereret. du skriver
    echo "</html>";
indeni din while løkke så det bliver skrevet en gang for hver gennemgang af løkken. det er klart dårlig HTML. Det skal kun skrives een eneste gang til allersidst i den HTML-sounce der genereres.

Jeg tipper det er lidt det sammen med
    <table ...>
og
    </table>
hvis det er een stor tabel du vil lave bør de stå henholdsvis foran og bagved den while løkke der udskriver tabellens rækker.

<?Php
$conn = mysql_connect("server", "user", "pass");
mysql_select_db("bachy");

$result = mysql_query("select * from pizzaria");

            // ****** otte linier flyttet ud ovenfor løkken
echo "<table width=\"800\" border=\"0\" cellspacing=\"5\" cellpadding=\"5\">";
echo "<tr>";
echo "<td width=\"10\">Nummer</td>";
echo "<td width=\"100\">Navn</td>";
echo "<td width=\"400\">Indhold</td>";
echo "<td width=\"135\">Medium</td>";
echo "<td width=\"35\">Large</td>";
echo "</tr>";

while ($row = mysql_fetch_array($result))
{
    echo "<tr>";

    echo "<td>";
    echo $row["Nummer"];
    echo "</td>";

    echo "<td>";
    echo $row["Produkt"];
    echo "</td>";

    echo "<td>";
    echo $row["Info"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_L"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_XL"];
    echo "</td>";

    echo "<td></td>";
    echo "</tr>";

}
echo "</table>";        // ****** to linier flyttet ud nedenfor løkken
echo "</html>";
mysql_close();
?>

for at lave en farve der skifter hver gang igennem løkken kan du bruge:

$toggle = 0;
while( ... ) {
  $toggle = 1 - $toggle;    // giver skiftevis 0 og 1 i $toggle
  if ( $toggle == 1 ) {
      echo "<tr style='background:red;'>";
  } else {
      echo "<tr style='background:green;'>";
  }
  ...
}
Avatar billede hmortensen Nybegynder
22. februar 2005 - 03:20 #5
Eller:
$toggle = !$toggle;
Avatar billede bachy Nybegynder
22. februar 2005 - 13:22 #6
Nu ville jeg jo gerne give points til jer alle sammen, men det ser det jo desværre ikke ud til at jeg kan. Efter at i har forklaret mig hvad der skulle til, slog jeg mig for panden og tænkte klart ! :)
Avatar billede bachy Nybegynder
22. februar 2005 - 13:26 #7
Hmm ... nu skal jeg lige finde ud af det der med pointsne ..
Avatar billede michael_stim Ekspert
22. februar 2005 - 13:28 #8
Så er det bare jakoba der skal lägge et svar.
Avatar billede michael_stim Ekspert
22. februar 2005 - 13:28 #9
Hov kom for sent.
Avatar billede bachy Nybegynder
22. februar 2005 - 13:30 #10
I må have mig undskyldt, men mit forsøg på at give points til alle mislykkedes .. men der skulle vel ikke være en der lige gad forklare en klaptorsk hvordan man delere points  .. så ve djeg det til en anden gang :)
Avatar billede michael_stim Ekspert
22. februar 2005 - 13:43 #11
Du skal vente til alle har svaret, og så markere alle de navne der skal have point. Men det er ikke let for dig at vide ;o) Det er b la derfor jeg altid venter med at lägge et svar til der bliver bedt om et fra spörgeren. Så bliver der ikke disse misforståelser.
Men du skal ikke tänke mere på det, du har givet de point der skal til.
Avatar billede bachy Nybegynder
22. februar 2005 - 14:10 #12
Hmm .. jeg var lidt for hurtig ude med at lukke denne tråd, hvorledes skal jeg placere den med farveskift på linierne, jeg har nu prøvet forskellige muligheder, og enten ignorer den koden, eller også stopper koden al udput ..
Avatar billede jakoba Nybegynder
22. februar 2005 - 15:39 #13
hvordan ser din kode ud hvor du prøver at skifte farve ?
Avatar billede bachy Nybegynder
22. februar 2005 - 15:44 #14
Koden er som ovenstående, dvs min table skal skifte farver for hveranden linie, feks hvid - grøn (farverne er ligegyldige i første omgang)

while ($row = mysql_fetch_array($result))
{
    echo "<tr>";

    echo "<td>";
    echo $row["Nummer"];
    echo "</td>";

    echo "<td>";
    echo $row["Produkt"];
    echo "</td>";

    echo "<td>";
    echo $row["Info"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_L"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_XL"];
    echo "</td>";

    echo "<td></td>";
    echo "</tr>";

Faktisk dette stykke der skal skifte farve .. håber det gir mening :)
Avatar billede hmortensen Nybegynder
22. februar 2005 - 17:39 #15
$x = 0;
while ($row = mysql_fetch_array($result))
{
    $class = ($x == 1) ? "red" : "green";
    $x = !$x;

    echo "<tr style='background:{$class};'>";

    echo "<td>";
    echo $row["Nummer"];
    echo "</td>";

    echo "<td>";
    echo $row["Produkt"];
    echo "</td>";

    echo "<td>";
    echo $row["Info"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_L"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_XL"];
    echo "</td>";

    echo "<td></td>";
    echo "</tr>";
}
Avatar billede bachy Nybegynder
22. februar 2005 - 18:34 #16
Nå .. det var da utroligt, jeg kan simpelthen ikke få det til at virke, indsætter jeg den ekstra kode du gav mig, så viser den slet intet :)

Nu er det jo meget muligt at det bare er mig der er et fjols, men jeg håber på lidt tålmodighed med en nybegynder i php. Jeg forstår faktisk godt koden, men jeg har ikke nogen ide om hvad jeg gør galt.

For en god ordens skyld, er her hele min kode:

<?Php
$conn = mysql_connect("sql.us.", "use", "pass");
mysql_select_db("bachy");

$result = mysql_query("select * from pizzaria");

echo "<table width=\"800\" border=\"0\" cellspacing=\"5\" cellpadding=\"5\">";
echo "<tr>";
echo "<td width=\"10\">Nummer</td>";
echo "<td width=\"100\">Navn</td>";
echo "<td width=\"400\">Indhold</td>";
echo "<td width=\"135\">Medium</td>";
echo "<td width=\"35\">Large</td>";
echo "</tr>";

$x = 0;
while ($row = mysql_fetch_array($result))
{
    $class = ($x == 1) ? "red" : "green";
    $x = !$x;

    echo "<tr style='background:{$class};'>";

    echo "<td>";
    echo $row["Nummer"];
    echo "</td>";

    echo "<td>";
    echo $row["Produkt"];
    echo "</td>";

    echo "<td>";
    echo $row["Info"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_L"];
    echo "</td>";

    echo "<td>";
    echo $row["pris_XL"];
    echo "</td>";

    echo "<td></td>";
    echo "</tr>";
}
echo "</table>";
echo "</html>";
mysql_close();
?>
Avatar billede coderdk Praktikant
22. februar 2005 - 18:45 #17
background-color - ikke background
Avatar billede hmortensen Nybegynder
22. februar 2005 - 19:03 #18
Ups, man skal aldrig stole på andres, og copy/paste :)
Avatar billede bachy Nybegynder
22. februar 2005 - 22:32 #19
Hehe , jeg er sgu afhængig af at i andre ved hvad i foretager jer, for jeg har kun en svag anelse :)

Nåda .. der kan man bare se, det virker sgu nu .. tusing tak for hjælpen drenge :)
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