Avatar billede s0mmer Nybegynder
19. marts 2007 - 18:12 Der er 14 kommentarer og
1 løsning

Hjælp til listning af varer

Hejsa eksperter,
Jeg er igang med nogle løkker til at vise varerne i en shop. Indtil videre har jeg fået lavet sådan at den tjekker hvormange varer der er ialt og derefter deler rækkerne op så der kan være 3 varer på hver række. Dog mangler jeg hjælp til at den automatisk på eks. række 1 visere vare 1, 2 og 3 og på næste række 4, 5 og 6 selvfølgelig. Håber i kan hjælpe.. min kode:

            for($i=0;$i<$fitems;$i++)
{
    print_r ("<tr>");
for($j=0;$j<count($items);$j++)
{
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>Name
              of thing</strong></font></td>
          </tr>
        </table></td>");
}
print_r ("</tr>");
}
}

- Lige nu skriver den alle varerne ud på alle rækkerne.
Avatar billede causasui Nybegynder
19. marts 2007 - 18:33 #1
Du skal tælle i dit array i den yderste løkke. og sætte betingelse (skriv 3 varer ud i hver række i den inderste løkke.

Prøv med
          for($i=0;<count($items);$i++)
{
    print_r ("<tr>");
for($j=0;$j<3;$j++)
{
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>Name
              of thing</strong></font></td>
          </tr>
        </table></td>");
}
print_r ("</tr>");
}
}
Avatar billede causasui Nybegynder
19. marts 2007 - 18:35 #2
Ups manglede lige $i
Prøv med
          for($i=0;$i<count($items);$i++)
{
    print_r ("<tr>");
for($j=0;$j<3;$j++)
{
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>Name
              of thing</strong></font></td>
          </tr>
        </table></td>");
}
print_r ("</tr>");
}
}
Avatar billede s0mmer Nybegynder
19. marts 2007 - 18:41 #3
det fungerer ikke.. jeg har 4 varer lige pt i shoppen: test1, test2, test3, test4

og dit eksempel udskriver de 3 samme varer på hver række
Avatar billede dkfire Nybegynder
19. marts 2007 - 18:52 #4
Kan du give hele din kode, hvor du udskriver dine produkter ???
Avatar billede s0mmer Nybegynder
19. marts 2007 - 18:56 #5
<?
session_start();
include("../db_con.php");
$items = $db->SendSQL("SELECT * FROM ym_shop_items where category='".$_GET["catid"]."' order by id desc");
$aitems = count($items);
$ritems = $aitems/3;
$fitems = ceil($ritems);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<style>
<!--
a:link{color: #FFFFFF;text-decoration: none;}
a:visited{color: #FFFFFF;text-decoration: none;}
a:active{color: #FFFFFF;text-decoration: none;}
a:hover{color: #FFFFFF;text-decoration: underline;}
-->
</style>
</head>

<body bgcolor="000000">
<p align="right"><img src="../images/button_shop_big.jpg" width="80" height="31"><br>
  <font color="#FFFFFF" size="1" face="Arial, Helvetica, sans-serif"><strong>Category:
  <? echo $_GET["catid"]; ?></strong></font></p>
<div align="right">

<table>
<?
if ($ritems <= 1) {
            for($i=0;$i<count($items);$i++)
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>");
}
else {
            for($i=0;$i<$fitems;$i++)
{
    print_r ("<tr>");
for($j=0;$j<count($items);$j++)
{
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$j][0]."</strong></font></td>
          </tr>
        </table></td>");
}
print_r ("</tr>");
}
}
?>
</table>

</div>
</body>
</html>
Avatar billede causasui Nybegynder
19. marts 2007 - 19:08 #6
Som jeg ser det burde det her være nok:
<?
session_start();
include("../db_con.php");
$items = $db->SendSQL("SELECT * FROM ym_shop_items where category='".$_GET["catid"]."' order by id desc");
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<style>
<!--
a:link{color: #FFFFFF;text-decoration: none;}
a:visited{color: #FFFFFF;text-decoration: none;}
a:active{color: #FFFFFF;text-decoration: none;}
a:hover{color: #FFFFFF;text-decoration: underline;}
-->
</style>
</head>

<body bgcolor="000000">
<p align="right"><img src="../images/button_shop_big.jpg" width="80" height="31"><br>
  <font color="#FFFFFF" size="1" face="Arial, Helvetica, sans-serif"><strong>Category:
  <? echo $_GET["catid"]; ?></strong></font></p>
<div align="right">

<table>
<?

            for($i=0;$i<$items;$i++)
{
    print_r ("<tr>");
for($j=0;$j<count($items);$j++)
{
    print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>");
}
print_r ("</tr>");
}
}
?>
</table>

</div>
</body>
</html>
Avatar billede causasui Nybegynder
19. marts 2007 - 19:11 #7
aihhh den inderste løkke skal selvfølgelige skrives sådan her:
for($j=0;$j<3;$j++)
Avatar billede causasui Nybegynder
19. marts 2007 - 19:14 #8
Nej glem kan godt se hvad du mener nu... tænker lige..
Avatar billede dkfire Nybegynder
19. marts 2007 - 19:27 #9
Hvorfor bruger du ikke mysqli classen rigtigt.
Tror du skal gøre dette her istedet:

<?
session_start();
include("../db_con.php");
$db = new mysqli();
$items = $db->SendSQL("SELECT * FROM ym_shop_items where category='".$_GET["catid"]."' order by id desc");
$aitems = $items->num_rows();
$ritems = $aitems/3;
$fitems = ceil($ritems);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<style>
<!--
a:link{color: #FFFFFF;text-decoration: none;}
a:visited{color: #FFFFFF;text-decoration: none;}
a:active{color: #FFFFFF;text-decoration: none;}
a:hover{color: #FFFFFF;text-decoration: underline;}
-->
</style>
</head>

<body bgcolor="000000">
<p align="right"><img src="../images/button_shop_big.jpg" width="80" height="31"><br>
  <font color="#FFFFFF" size="1" face="Arial, Helvetica, sans-serif"><strong>Category:
  <? echo $_GET["catid"]; ?></strong></font></p>
<div align="right">

<table>
<?
if ($ritems <= 1) {
            for($i=0;$i<$aitems;$i++)
                $item = $items->fetch_assoc();
                print_r ("<tr><td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$item[0]."</strong></font></td>
          </tr>
        </table></td></tr>");
}
else {
    for($i=0;$i<$fitems;$i++)
    {
        print_r ("<tr>");
        for($j=0;$j<3;$j++)
        {
            $item = $items->fetch_assoc();
            print_r ("<td><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$item[0]."</strong></font></td>
          </tr>
        </table></td>");
        }
        print_r ("</tr>");
    }
}
?>
</table>

</div>
</body>
</html>
Avatar billede dkfire Nybegynder
19. marts 2007 - 19:28 #10
Slet lige $db = new mysqli(); det var kun for min skyld.
Avatar billede s0mmer Nybegynder
19. marts 2007 - 20:24 #11
Fatal error: Call to a member function on a non-object
på linje 5:

$aitems = $items->num_rows();
Avatar billede causasui Nybegynder
20. marts 2007 - 07:21 #12
Testet og virker, lav din kode om efter samme opbygning så skulle den være der;)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table>
<tr>
<?php
$items = array();
$items[] = 'item1';
$items[] = 'item2';
$items[] = 'item3';
$items[] = 'item4';
$items[] = 'item5';
$items[] = 'item6';
$items[] = 'item7';
$items[] = 'item8';
$items[] = 'item9';
$items[] = 'item10';
$items[] = 'item11';
$items[] = 'item12';                       



$j = '1';
for($i=0;$i<=count($items);$i++)
{
    if($counter=='3')//Hvis løkke kørt 3 gange afslut </tr> og start ny <tr>
        {
        echo"</tr><tr><td height='13'><font color='#FF0000' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i]."</strong></font></td>";
        $j = '1';
        }
        else
        {
        echo"<td height='13'><font color='#FF0000' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i]."</strong></font></td>";
        }
        $counter=$j++; //Opretter en tæller der kontrollerer hvor mange gange løkken har kørt
}
?>
</tr>
</table>
</body>
</html>
Avatar billede s0mmer Nybegynder
20. marts 2007 - 16:58 #13
Ja vi er rigtig tæt på !

Jeg har brugt følgende:

<?
$j = '1';
for($i=0;$i<=count($items);$i++)
{
    if($counter=='3')//Hvis løkke kørt 3 gange afslut </tr> og start ny <tr>
        {
        echo"</tr><tr><td height='13'><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>";
        $j = '1';
        }
        else
        {
        echo"<td height='13'><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>";
        }
        $counter=$j++; //Opretter en tæller der kontrollerer hvor mange gange løkken har kørt
}
?>

Men den lister de 4 varer som jeg har i db, men så lister den et ekstra billede nærmest som en 5. vare, men self. uden navn da den ikke eksisterer.
Avatar billede s0mmer Nybegynder
20. marts 2007 - 16:59 #14
Det samme sker hvis der ikke er nogle varer i shoppen.. Så kommer der lige sådan et enkelt billede
Avatar billede causasui Nybegynder
22. marts 2007 - 11:28 #15
Prøv det her
<?
$j = '1';
for($i=0;$i<count($items);$i++)
{
    if($counter=='3')//Hvis løkke kørt 3 gange afslut </tr> og start ny <tr>
        {
        echo"</tr><tr><td height='13'><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>";
        $j = '1';
        }
        else
        {
        echo"<td height='13'><table width='116' border='0'>
          <tr>
          <td width='110' height='84'><img src='test.jpg' width='80' height='80'></td>
          </tr>
          <tr>
            <td height='13'><font color='#FFFFFF' size='1' face='Arial, Helvetica, sans-serif'><strong>".$items[$i][0]."</strong></font></td>
          </tr>
        </table></td>";
        }
        $counter=$j++; //Opretter en tæller der kontrollerer hvor mange gange løkken har kørt
}
?>
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