Avatar billede simotho Nybegynder
08. oktober 2009 - 07:04 Der er 10 kommentarer og
1 løsning

While udskriver flere topdiver end den skal

Hejsa :)
Er igang med et system, hvor den skal vise en ny header for hver topmenu punkt og inden for det header punkt skal den vise undermenuerne til det punkt.
Problemet ligger dog i, at den udskriver en ny header for hver undermenu.
I kan se et eksempel her:

http://wetoz.dk/jqueryupload/uploads/while_help.png

Som i kan se laver den to rækker som hedder "Tilbud" pga. der er to undermenupunkter, men det skal den ikke.

Her er min kode:

<?php
include("connect.php");
$query  = "SELECT topmenu.name, topmenu.id, topmenu.menuposition, topmenu.menulink, undermenu.overskrift, undermenu.topmenu_id , undermenu.UnderId FROM topmenu INNER JOIN undermenu ON undermenu.topmenu_id=topmenu.id ORDER by id DESC";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo'
<div class="content_top">
<p><a href="'.$row['id'].'">'.$row['name'].'</a></p>
</div>
<div class="page_background">
<ul>
<li>
<table width="600px">
<tr>
<td width="525px"><p><a href="'.$row['UnderId'].'">'.$row['overskrift'].'</a> </p></li></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_go.png" /></a></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_edit.png" /></a></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_delete.png" /></a></td>
</tr>
</table>
</li>
</ul>
</div>
';
}
?>

er godt klar over, at når noget er inde i en while gentager det sig det antal gange der er i databasen, men hvordan skal man ellers kunne lave det?

Div'en "content_top" er headeren / Der hvor der står "Tilbud"
og div'en "page_background" er der hvor undermenuerne skal stå :)

Håber i kan hjælpe
Avatar billede majbom Novice
08. oktober 2009 - 08:26 #1
kan du ikke sætte en if-sætning på som tjekker om den allerede har lavet en header inden den udskriver den?

noget a la:

$header="";

while(...){
if($header!=$din_header){
  echo $din_header;
  $header = $din_header;
}
Avatar billede phliplip Nybegynder
08. oktober 2009 - 08:41 #2
<?php
include("connect.php");
$query  = "SELECT topmenu.name, topmenu.id, topmenu.menuposition, topmenu.menulink, undermenu.overskrift, undermenu.topmenu_id , undermenu.UnderId FROM topmenu INNER JOIN undermenu ON undermenu.topmenu_id=topmenu.id ORDER by id DESC";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
if($row['id']!= $prev_id) {
echo'
<div class="content_top">
<p><a href="'.$row['id'].'">'.$row['name'].'</a></p>
</div>
<div class="page_background">
<ul>
<li>
<table width="600px">';
}
echo '<tr>
<td width="525px"><p><a href="'.$row['UnderId'].'">'.$row['overskrift'].'</a> </p></li></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_go.png" /></a></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_edit.png" /></a></td>
<td><a href="'.$row['UnderId'].'"><img src="images/tab_delete.png" /></a></td>
</tr>';
if($row['id']!= $prev_id) {
echo '</table>
</li>
</ul>
</div>
';
}
$prev_id = $row['id'];
}
?>
Avatar billede phliplip Nybegynder
08. oktober 2009 - 08:46 #3
Hov.. det er en god ide at deklarere sine variable først :P

Så add lige

$prev_id = 0;

Efter linien

$result = mysql_query($query);

Således der står

$result = mysql_query($query);
$prev_id = 0;
while($row = mysql_fetch_array($result))

Jeg har indsat if statements så der kun udskrives header og start/slut på table når der skiftes topmenu.
Avatar billede Gudiik Nybegynder
08. oktober 2009 - 10:23 #4
forstår ikke helt dit spørgsmål, skal det laves sådan her:

- Hovedpunkt.
-- mellempunkt.
--- underpunkter.
- hovedpunkt.
-- mellempunkt.
--- underpunkter.

osv osv.
Avatar billede simotho Nybegynder
08. oktober 2009 - 13:47 #5
phliplip:
Dit eksempel virker, og det er lækkert :D
Men der er dog et lille problem, den styler kun den første undermenu som i kan se på dette billede:

http://wetoz.dk/jqueryupload/uploads/while_help.png

Resten laver den ikke style på :/

Og til dig Gudiik::
Det skal se ud som på billedet

-Hovedpunkt
--menupunkt
-Hovedpunkt
--Menupunkt


osv :)
Avatar billede Gudiik Nybegynder
08. oktober 2009 - 13:53 #6
Hvordan ser det ud i din database?
Har menupunkterne et LinkID, som har et id som passer til et id på hovedpunkt?
Avatar billede simotho Nybegynder
08. oktober 2009 - 13:59 #7
Topmenu:

  `id` int(4) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `menuposition` varchar(255) NOT NULL,
  `menulink` varchar(255) NOT NULL,

Undermenu:

  `UnderId` int(4) NOT NULL auto_increment,
  `overskrift` varchar(255) NOT NULL,
  `content` varchar(255) NOT NULL,
  `topmenu_id` varchar(255) NOT NULL,
  `seo_keywords` varchar(255) NOT NULL,
  `seo_beskrivelse` varchar(255) NOT NULL,

:)
Avatar billede simotho Nybegynder
08. oktober 2009 - 15:41 #8
Ingen der kan svare? :)
Avatar billede phliplip Nybegynder
08. oktober 2009 - 18:09 #9
Det må være noget af dit Css der driller. Så kan du ikke give et link til en side, i stedet for billede af det!?
Avatar billede simotho Nybegynder
08. oktober 2009 - 19:31 #10
Problemet er, at det ligger på local serveren :)

Problemet ligger i, at den ikke laver en ny <ul><li> når den laver et nyt undermenu punkt.
Men ved ikke hvorfor?
Kan du se det?
Avatar billede phliplip Nybegynder
08. oktober 2009 - 21:28 #11
Ok havde lige overset de UL LI, men et table har såvidt jeg intet at gøre inde i en UL LI struktur. Så jeg ville nok fjerne UL LI tags'ne og ændre CSS'en så den virker på dit table markup.
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