Avatar billede overgreat Forsker
07. juli 2004 - 16:03 Der er 11 kommentarer og
1 løsning

I stedet for at hoppe til miniaturer at lave en slags karussel!

Hej alle

Jeg har lavet et klassisk opbygning af møbelvisning.

Jeg finder alle miniaturerne frem der hører til serien og undergruppen (i dette eksempel borde):
http://www.gdo.dk/henrikprojekt/indexgruppe1.php?overgruppenavn=Borde&serienavn=Nice

Jeg kunne godt tænke mig at høre om man i stedet for at hoppe til miniaturer, kan lave det sådan, at man ved klik på borde i Nice kommer frem til det første af bordene. Her på denne side skulle der så være en ny knap der hedder næste, hvor man så kan hente næste møbel frem på siden!


I øjeblikket ser koden således ud (af plads og overblikshensyn har jeg klippet det lidt til!):

Jeg har vedhæftet tre sider. Det jeg ønsker er en mulighed for at hoppe over nummer to af siderne.

Håber der er en der kan hjælpe mig med ovenstående!

På forhånd tak!

---------------------------------
Her vælger brugeren om han vil se borde, stole eller noget andet
----------------------------------
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="style.css">
</HEAD>
<BODY bgcolor="#FFFFFF">
<?php
include("cms/config.php");
mysql_connect($server, $user, $pass);
mysql_select_db($database);

$rs = mysql_query("SELECT pm.serienavn, pm.overgruppenavn, po.engelsk, po.tysk, po.litauisk, po.dansk FROM produkt_moebel  AS pm INNER JOIN produkt_overgruppe AS po ON po.dansk = pm.overgruppenavn  WHERE pm.serienavn = '$serienavn' GROUP BY po.dansk");
    while ($data = mysql_fetch_row($rs))
    {
if (!$navn1) {
echo "<li><a href='indexgruppe1.php?overgruppenavn=$data[1]&serienavn=$data[0]' class='bundlink'>$data[5]</a></li>";
}
if($navn1==eng){
echo "<li><a href='indexgruppe1.php?overgruppenavn=$data[1]&serienavn=$data[0]' class='bundlink'>$data[2]</a></li>";
}
if($navn1==lit){
echo "<li><a href='indexgruppe1.php?overgruppenavn=$data[1]&serienavn=$data[0]' class='bundlink'>$data[4]</a></li>";
}
if($navn1==tys){
echo "<li><a href='indexgruppe1.php?overgruppenavn=$data[1]&serienavn=$data[0]' class='bundlink'>$data[3]</a></li>";
if($navn1==dk){
echo "<li><a href='indexgruppe1.php?overgruppenavn=$data[1]&serienavn=$data[0]' class='bundlink'>$data[5]</a></li>";
}}
?>
</BODY>
</HTML>

-------------
Herefter kommer jeg frem til mine miniaturebilleder:
-------------
<HTML>
<HEAD>
</HEAD>
<BODY bgcolor="#FFFFFF">
<div align="center">
<?
include("cms/config.php");
$db = mysql_connect($server, $user, $pass);
mysql_select_db($database, $db);
$foresp = mysql_query("SELECT smaatbill, id, serienavn, overgruppenavn FROM produkt_moebel WHERE `serienavn` = '$serienavn' AND `overgruppenavn` = '$overgruppenavn'");
while ($data = mysql_fetch_row($foresp)){
echo "<a href='vismoebel.php?id=$data[1]&serienavn=$data[2]'><img src='cms/upload/$data[0]' border='0'></a>";
}
?>
</BODY>
</HTML>
--------------------------------------------
Og her kommer så siden: som jeg gerne vil have springer over ovenstående miniatureside, og i stedet for vælger det første møbel (fx ved valg af Nice-serie og så borde) og laver en knap hvor man kan vælge næste møbel osv.
-------------------------------------------
<HTML>
<HEAD>
</HEAD>
<BODY bgcolor="#FFFFFF">
<div align="center">
<Table width="800" height="500" cellspacing="0" cellpadding="2" border="0">
  <Tr valign="top">
    <Td background="top.jpg" width="800" height="70" valign="bottom">
            <div align="right">
<?
include("cms/config.php");
$db = mysql_connect($server, $user, $pass);
mysql_select_db($database, $db);
$foresp = mysql_query("SELECT navn FROM produkt_serie WHERE `navn` = '$serienavn'");
while ($data = mysql_fetch_row($foresp)){
echo "&nbsp;&nbsp;<IMG src=\"knap.gif\">&nbsp;&nbsp;<a href=\"indexgruppe.php?serienavn=$data[0]\"
>$data[0]</a>
";
}
?>
&nbsp;&nbsp;&nbsp;
</div>  </Td>
    </Tr>
    <Tr valign="middle">
    <Td background="indhold.jpg" width="800" height="368">
<center><table width="778" height="345">
<tr>
      <td width="453">
<?
include("cms/config.php");
$db = mysql_connect($server, $user, $pass);
mysql_select_db($database, $db);
$foresp = mysql_query("SELECT billede, id FROM produkt_moebel WHERE `id` = '$id'");
while ($data = mysql_fetch_row($foresp)){
echo "<center><img src='cms/upload/$data[0]' border='1'></center>";
}
?>
      </td>
      <td width="325" valign="top">
      <?
include("cms/config.php");
$db = mysql_connect($server, $user, $pass);
mysql_select_db($database, $db);
$foresp = mysql_query("SELECT pm.billede, pm.id, pm.serienavn, pm.gruppenavn, pm.nummer, pm.maal, pm.c1, pm.c2, pm.c3, pm.c4, pm.c5, pm.c6, pm.maal1, pg.dansk, pg.engelsk, pg.tysk, pg.litauisk, pm.pal1, pm.pal2, pm.pal3, pm.pal4 FROM produkt_moebel AS pm INNER JOIN produkt_gruppe AS pg ON pg.dansk = pm.gruppenavn WHERE pm.id = '$id'");
while ($data = mysql_fetch_row($foresp))
{
if (!$navn1) {
echo "
<h1>
<br> <center><b>$data[13]</b></h1>
<h2><b>Møbelserie:</b><br> $data[2]
<br><Br><b>Produktnummer:</b><br> $data[4]
<br><br><b>Mål:</b><br> $data[5]
<br><br><b>Alternative mål:</b><br> $data[12]
</h2>
</center>
";
}
if($navn1==eng){
echo "
<h1>
<br> <center><b>$data[14]</b></h1>
<h2><b>Range:</b><br> $data[2]
<br><Br><b>Productnumber:</b><br> $data[4]
<br><br><b>Measure:</b><br> $data[5]
<br><br><b>Alternative measure:</b><br> $data[12]
</h2>
</center>
";
}
if($navn1==dk){
echo "
<h1>
<br> <center><b>$data[13]</b></h1>
<h2><b>Møbelserie:</b><br> $data[2]
<br><Br><b>Produktnummer:</b><br> $data[4]
<br><br><b>Mål:</b><br> $data[5]
<br><br><b>Alternative mål:</b><br> $data[12]
</h2>
</center>
";
}}
?>   
<center>
      </td>
</tr>
</table></center>
    </Td>
    </Tr>
    <Tr valign="middle">
  <Td background="bund.jpg" width="800" height="62">
 
      <div align="right">
<?
include "tilbage.php"
?></div>
    </Td>
  </Tr>
</Table></div>
</BODY>
</HTML>
Avatar billede Syska Mester
07. juli 2004 - 16:07 #1
Ikke at jeg lige har et svar, men bare det ikke nemmere at bruge mysql_fetch_row, da der jo bliver rod i det hele hvis du på et tidspunkt ikke skal bare en kolonne mere...
Avatar billede overgreat Forsker
07. juli 2004 - 16:29 #2
Når jeg selv kigger på for at få overblik over løsningen kan en løsning være at denne query evner kun at vælge den første af de møbler der passer!:

<?
include("cms/config.php");
$db = mysql_connect($server, $user, $pass);
mysql_select_db($database, $db);
$foresp = mysql_query("SELECT smaatbill, id, serienavn, overgruppenavn FROM produkt_moebel WHERE `serienavn` = '$serienavn' AND `overgruppenavn` = '$overgruppenavn'");
while ($data = mysql_fetch_row($foresp)){
echo "<a href='vismoebel.php?id=$data[1]&serienavn=$data[2]'><img src='cms/upload/$data[0]' border='0'></a>";
}
?>


- Kan dette lykkes mangler jeg så bare lidt hjælp til også at lave et link, hvor den kan finde ud af at vælge næste møbel, så jeg kan lave en lille slags karussel.
Avatar billede Syska Mester
07. juli 2004 - 17:16 #3
$foresp = mysql_query("SELECT smaatbill, id, serienavn, overgruppenavn FROM produkt_moebel WHERE `serienavn` = '$serienavn' AND `overgruppenavn` = '$overgruppenavn'");
til
$foresp = mysql_query("SELECT smaatbill, id, serienavn, overgruppenavn FROM produkt_moebel WHERE `serienavn` = '$serienavn' AND `overgruppenavn` = '$overgruppenavn' LIMIT 1");

Så tager den i hvert fald kun 1, af disse møbler der passer.

Du kan så i nummer 2 bruger LIMIT 1, 1 så starter den fra nummer 2 post den finder, men stadig kun tager 1...

Ikke en god måde at lave det på, men kan ikke lige komme i tanke om andre....

Med mindre du selvf hver gang inden du laver din næste knap tester om der nu også er et næste møbel eller om den kun kan gå tilbage.

// ouT
Avatar billede overgreat Forsker
07. juli 2004 - 17:35 #4
... hvordan vil linket så se ud.

Når jeg laver linket, vil den så ikke komme til at hente nummer 1 igen? Kan jeg få den til at vælge den næste?

Kan linket finde den næste af dem der passer så er det faktisk løsningen på det jeg søger!?
Avatar billede overgreat Forsker
07. juli 2004 - 17:38 #5
fx.
bordene (overgruppenavn) i Nice (serie) er fx. ikke nummer 1,2,3,4,5 (nærmere 11,13,28 osv).

Når jeg laver din ændring får jeg den første frem. Nu er problemet at finde frem til den næste ved hjælp af linket.

Håber der er lidt hjælp at hente.

Kan du løse det sidste er pointene dine!
Avatar billede fojensen Nybegynder
08. juli 2004 - 15:34 #6
Jeg har lavet lidt kode til et lignende formål, måske kan du bruge noget af det...
-----kode-----
function find_i_array($this,$array) { // finder det forrige og det næste nummer i rækken af et array hvor keys ikke er 1,2,3,5,4 osv

while ($number = current($array)) {
  if ($number == $this) {
      $nummer_i_rk = key($array)+1;
        if (key($array)>0) {
      $prev_key = key($array)-1;
      $prev = $array[$prev_key];
        } else {
      $prev = false;
        }
  $next = next($array);
  }
  next($array);
}
reset($array);

  $first = current($array);
  $last = end($array);

return array($first,$prev,$next,$last,$nummer_i_rk);
} // function slut

$next = false; // sikrer os at $next ikke allerede indeholder en værdi

if (is_array($billed_raekke)){
$link = find_i_array($billed_id,$billed_raekke);

$first = $link[0];
$prev = $link[1];
$next = $link[2];
$last = $link[3];
$nummer_i_rk = $link[4];
$antal_i_rk = count($db_resultat);
}

if ($nummer_i_rk == 1 && $antal_i_rk > 1) {
$nummer_vs_antal = "Første af $antal_i_rk billeder";
} else if ($nummer_i_rk ==  $antal_i_rk && $antal_i_rk > 1) {
$nummer_vs_antal = "Sidste af $antal_i_rk billeder";
} else if ($antal_i_rk > 1) {
$nummer_vs_antal = "Nr. $nummer_i_rk ud af $antal_i_rk billeder";
}

if ($prev == false && $next == false) {
// her skrives ingen links
} else
if ($next == false) {
$link_str = "<FONT CLASS=\"SmallFont\">";
$link_str .= "<< <A HREF=\"$self?billed_id=$prev&path=large\" title=\"Forrige billede\">Forrige</A> ";
$link_str .= "<FONT CLASS=\"SmallWhiteFont\">";
$link_str .= "Næste >>";
} else
if ($prev == false) {
$link_str = "<FONT CLASS=\"SmallWhiteFont\">";
$link_str .= "<< Forrige ";
$link_str .= "<FONT CLASS=\"SmallFont\">";
$link_str .= "<A HREF=\"$self?billed_id=$next&path=large\" title=\"Næste billede\">Næste</A> >>";
} else {
$link_str = "<FONT CLASS=\"SmallFont\">";
$link_str .= "<< <A HREF=\"$self?billed_id=$prev&path=large\" title=\"Forrige billede\">Forrige</A> ";
$link_str .= "<FONT CLASS=\"SmallFont\">";
$link_str .= "<A HREF=\"$self?billed_id=$next&path=large\" title=\"Næste billede\">Næste</A> >>";
}-----/kode-----

Håber koden forklarer nogenlunde sig selv...
mvh. Folmer
Avatar billede fojensen Nybegynder
08. juli 2004 - 17:10 #7
se bort fra mit svar - det virker ikke efter hensigten med et array med key [11],[13],[28]osv.

ved nærmere eftersyn af mit eget script havde jeg valgt at danne et nyt array med keys 0,1,2,3osv.

mvh. Folmer
Avatar billede fojensen Nybegynder
08. juli 2004 - 17:15 #8
brug evt.
sort($billed_raekke);  // giver array nye nøgler der starter med 0

mvh. Folmer
Avatar billede overgreat Forsker
08. juli 2004 - 18:26 #9
Jeg har fundet ud af en lidt anden måde at gøre det på.... jeg har endnu ikke fået det helt kodet færdig, men jeg bruger limit x,1. Jeg får lavet en værdi i adressen, som jeg bruger til at finde hvilket møbel den skal finde.

Når jeg laver linket laver jeg værdien til 1+værdien, hvis (if) der er flere rækker tilbage.... er der ikke det, sætter den værdien til nul.... så kan man køre forfra igen!!!!

Derfor går pointene til Buzzzz og folmer til deling. Tak for hjælpen! Sender du et svar Buzzzz?
Avatar billede Syska Mester
08. juli 2004 - 19:27 #10
selvf....
Avatar billede fojensen Nybegynder
08. juli 2004 - 20:16 #11
fornuftigt at lytte til buzzzz, for uden for som han skriver kan du få alvorlige problemer ved ændringer i bd-tabellen hvis du ikke hiver resultatet ud gennem mysql_fetch_array() eller mysql_fetch_row()...

I øvrigt synes jeg nu ikke jeg skal have points for at lede dig på afveje, selvom jeg forsøger at følge dig hjem igen...
mvh. Folmer
Avatar billede overgreat Forsker
08. juli 2004 - 20:59 #12
ok.... folmer men stadig tak for forsøget!
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