Gå til innhold

Problem med oppsett av tabell med innhold fra mysql


Anbefalte innlegg

Sitter her å klør meg i hodet. Skal lage en tabell med en spørring mot en mysqldatabase, noe som er greit nok. Men, saken er at jeg gjerne vil forhåndsbestemme hvilke felter som skal populeres i tabellen, basert på feltet FELT i databasen. La oss ta utgangspunkt i at databasen har følgende felter; navn, pris og felt.

 

Under har jeg satt opp et eksempel på hvordan jeg vil ha det, men min tabell skal ha 7 rader og 8 kolonner, tilsammen 56 felter, men ikke alle skal være populert. Er det noen som kan hjelpe meg med en kode?

 

-----------------------------------------
|   Hei   |   Hei   |         |   Hei   |
-----------------------------------------
|   Hei   |   Hei   |         |   Hei   |
-----------------------------------------
|   Hei   |   Hei   |   Hei   |         |
-----------------------------------------
|   Hei   |         |   Hei   |         |
-----------------------------------------

Lenke til kommentar
Videoannonse
Annonse

Stopp en halv, først trenger vi en ordentlig begrepsavklaring her.

 

Felt og kolonne er det samme. Du sier først du skal ha feltene navn, pris og felt som er 3 felter. Et felt som heter 'felt'?? Deretter at du skal ha 8 felt? Hver rute kalles en celle. Å ha 7 rader (aka. poster) er noe du gjør med DML, dvs INSERT, etter at du har strukturert tabellen med DDL, dvs CREATE.

Lenke til kommentar

Vet da utmerket hvordan jeg lager tabeller. Men, har problem med å få plassert innhold i rutene som jeg viser over. Innholdet skal stå i spesielle ruter, hvis dere ser ut av HEI'ene i første post. Har innhold liggende i en mysql tabell

Endret av FrilanserBob
Lenke til kommentar

Kanskje jeg ikke helt skjønner problemstillingen din siden du ikke har fortalt alt, eller jeg har oversett noe.

 

Det jeg umiddelbart tenker er å først lage riktig spørring SELECT .... WHERE ....

Deretter loope gjennom resultatsettet.

 

while($rad=mysql_fetch_array($resultatsett,MYSQL_ASSOC))

{

//inni her lager du <td>'ene, også kan du ha noen if'er for å bestemme om innholdet skal skrives ut inni td'en eller ikke.

}

Lenke til kommentar
  • 2 uker senere...

MikkelRev, det eneste du oppnår med det "scriptet", er kun at du lister fra databasen, sidelengs. Om du så bruker "if'er" for å bestemme om det skal skrives ut noe, så hopper du bare over en rad fra databasen. Om det i det heltatt lar seg gjøre?

 

Det skal simpelthen ikke følge et møsnter, men hvær enkelt skal hentes ut, og spesifiseres hvor, både i høyde og bredde (td, tr).

 

---

 

Tilbake til sak, så har jeg selv fundert litt på noe slik, men jeg gikk over til en annen løsning. Det lar seg så og si bare gjøre om du har "kanstante verdier" i databasen. Altså, det kommer ikke inn ny info, slik som i et nyhetsystem..

Da kan du spesifisere hvær enkelt rad:

$rad1 = mysql_fetch_array(mysql_query("SELECT * FROM `tabell` WHERE en_id='1'"));
$rad2 = mysql_fetch_array(mysql_query("SELECT * FROM `tabell` WHERE en_id='2'"));

echo "<table><tr>
<td>".$rad1['username']."</td>
<td>HEY! w..sup in the hood dawg?</td>
<td>".$rad2['username']."<td>
</tr></table>";

..og slik fortsetter det for hver rad, av de 56 du skal spesifisere :(

 

Men, har du tenkt å vise noe som konstant øker, så må du hente den site id'en.

$query = "SELECT * FROM `news` ORDER BY id DESC";
$result = mysql_query($query);
$r=mysql_fetch_array($result);

$rows = $r['id'];

$rad1 = mysql_fetch_array(mysql_query("SELECT * FROM `news` WHERE id=$rows -0"));
$rad2 = mysql_fetch_array(mysql_query("SELECT * FROM `news` WHERE id=$rows -1"));
$rad3 = mysql_fetch_array(mysql_query("SELECT * FROM `news` WHERE id=$rows -2"));

echo "<table><tr>"; //Har valgt å bruke echo for vær linje: Oversiktelig!
  echo "<td>".$rad1['title']."</td>"; 
  echo "<td>Dette er en tom td</td>"; 
  echo "<td>".$rad2['title']."</td>"; 
  echo "<td>".$rad3['title']."</td>";
echo "</tr></table>";

Er dog noen problemer ved å gjøre det slik.. f. eks: hvis du sletter en rad, så vil det vises en td som er helt tom. /Samt du skal spessifisere 56 ruter :E

 

 

Ellers så kan du teste et script som ikke gir deg friheten, men lister f. eks 4 <td>, dereter dropper ned <tr>, "og gjenter seg"..

 

$result = mysql_query("SELECT * FROM `tabell` ORDER BY `id` DESC LIMIT 0,56");
$rows = mysql_num_rows($result);
if ($rows != 0) {
$counter = 0; $columns = 8; 
echo "<table width='800' align='center' cellpadding='0' cellspacing='1' style='font-family:Arial, verdana;font-size:11px;'>\n<tr>\n";
while ($r = mysql_fetch_assoc($result)) { //evt fetch_array
	if ($counter != 0 && ($counter % $columns == 0)) echo "</tr>\n<tr>\n";
	echo "<td valign='top' align='center' width='100'>";

	echo "Her fører du inn det du skulle ønske, f. eks ".$r['user_name']."";

	echo "</td>\n";
	$counter++;
}
echo "</tr>\n</table>\n";
}

Endret av slacky
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...