Problemen bij zoeken en vorige/volgende script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Basz

Basz

21/12/2004 16:03:00
Quote Anchor link
Ik ben bezig met een catalogus van producten, alleen heb nu een probleem. Omdat er redelijk veel producten in komen heb ik er volgende/vorige pagina's in gemaakt met behulp van het script hier van phphulp. Dit gebeurd na aanleiding van het aantal producten in de database. Maar wanneer ik maar enkele producten zoek met SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max" komen er problemen, de producten worden wel gevonden, maar hij telt alle andere producten ook mee en die zijn ook te zien, wat niet de bedoeling is... Wat zou ik nu moeten doen??

(hier de hele code)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Product show</title>
<link rel="stylesheet" type="text/css" href="scripts/style.css">
</head>

<body>
<p></p>
<div align="left">
<img src="images/header_hout.gif">
</div>

<p>Hier onder treft U het hout assortiment van Piet Parket aan. Om meer informatie over een product te krijgen zoals afmeting, verpakkings eenheid, interieur foto's of om een offerte op te stellen klik dan op <em>Details bekijken</em>. Wanneer U direct een bestelling wil plaatsen klik dan op <em>Bestel direct</em>. </p>
<div class="products">

<table border=0 align=left>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
error_reporting(E_ALL);

include('connect.php');

// Variables
//if(is_numeric($_GET['max'])) $max = $_GET['max'];
//sif(is_numeric($_GET['start'])) $start = $_GET['start'];


if (empty($max)) $max = 5;  // $max is the maximum number of results per page
if (empty($start)) $start = 0; // This is the number to start the query at the right location [DO NOT EDIT]

// Calculate some stuff

$end = $start + $max;   // This is for the query, gives the number for the LIMIT
$prev = $start - $max;   // This number is for $start in the Previous-hyperlink
$next = $end;   // This number is for $start in the Next-hyperlink

// Select everything from the table

$result = mysql_query("SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max") or die ('FOUT query maken mislukt 1');

// Number of rows from $query
$num = mysql_num_rows($result);
if (empty($num))
{

   echo "<p>There are no results.</p>";
}

else
{
  while (list($id, $soort, $merk, $serie, $kleurcode, $kleur, $lengte, $breedte, $hoogte, $verpakking, $prijs, $afbeelding) = mysql_fetch_row($result))
  {

    // Show the results
    echo ("
    <tr>
        <td>$kleur</td>
        <td rowspan=7 height=166><img src=\"images/parket/$afbeelding.jpg\"></td>
        <td></td>
    </tr>
    <tr>
        <td>$merk $serie</td></tr>
    <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><a href=\"details.php?id=$id\">Details bekijken</a></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><a href=\"images/sfeer/$afbeelding.jpg\" target=_blank>Sfeer impressie</a></td>
    </tr>
    <tr>
        <td>$kleurcode</td>
        <td><a href=\"offerte.php?id=$id\">Offerte opstellen</a></td>
    </tr>
    <tr>
        <td valign=top>12 euro per m2</td>
        <td valign=top><a href=\"bestel.php?id=$id\">Bestel direct</a></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
</tr>

    
    "
);
}

  
   // Check if $prev is higher than or equal to 0, if so add the Previous-hyperlink
  if ($prev >= '0')
  {

     echo "[<a href=\"product_show_hout.php?start=$prev&max=$max\">Vorige</a>]\n";
  }
else {
     echo "[Vorige]\n";
  }

  
  // Count how many rows there are in the table
  $count = mysql_fetch_row(mysql_query("SELECT count(*) FROM producten WHERE soort LIKE '%hout%'"));

  // Calculate on which page we are
  $thispage = ceil($start/$max+1);

  // If $count[0] is higher than $max, show the pagenumbers
  if ($count[0] > $max)
  {

     // Calculate the amount of pages
     $total = ceil($count[0]/$max);
     for($i=0;$i<$total;$i++)
     {

          // The number to show has to be $1+1 (because $i starts with 0)
          $number  = $i+1;
          // $start has to be $i * $max
          $start = $i*$max;

         // If thispage is equal to the number, the link has to be bold
         if ($thispage == $number)
          {

           echo "<strong>[<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>]</strong>\n";
         }
else {
           echo "<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>\n";
         }
     }
  }


  // If $count[0] is higher than $next, show the hyperlink
  if ($count[0] > $next)
  {

     echo "[<a href=\"product_show_hout.php?start=$next&max=$max\">Volgende</a>]\n";
  }
else {
     echo "[Volgende]\n";
  }

  echo "</p>\n";
}

?>

</table>
</div>
</body>
</html>


OPGELOST
Gewijzigd op 21/12/2004 17:49:00 door Basz
 
PHP hulp

PHP hulp

22/12/2024 18:09:24
 
DaeDaluz

DaeDaluz

21/12/2004 17:00:00
Quote Anchor link
Handig zoon lang script weergeven ;)

Edit:
oeh ik kan echt slecht lezen ;)
Gewijzigd op 21/12/2004 17:11:00 door DaeDaluz
 
Basz

Basz

21/12/2004 17:04:00
Quote Anchor link
Het is nog handiger als je even leest wat er aan de hand is. Een error doet zich niet voor.
Maar er wordt gezocht in de database :
SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max

alleen het resultaat hiervan moet berekend worden in:
$num = mysql_num_rows($result)
Maar alle producten worden opgenomen, in plaats van alleen de gezochte producten
 
DaeDaluz

DaeDaluz

21/12/2004 17:09:00
Quote Anchor link
heh ik ben ook maar een noob maar je selecteerd nu alle rij-en waar soort %hout% is. dus of bij all je rij-en is soort %hout% .of ik moet nog ff doorzoeken :p

en door je limit zouden sowieso maar 5 producten worden geselecteerd dus bedoel je met alle producten die 5 of echt alle producten uit je tabel?
 
Basz

Basz

21/12/2004 17:18:00
Quote Anchor link
Het is de bedoeling dat uit de kolom "soort" van de database "producten" de producten die als soort "hout" hebben worden geselecteerd. Alleen deze moeten worden geteld door mysql_num_rows. En uiteindelijk per 5 op een pagina terecht komen.
 
DaeDaluz

DaeDaluz

21/12/2004 17:29:00
Quote Anchor link
// Variables
//if(is_numeric($_GET['max'])) $max = $_GET['max'];
//sif(is_numeric($_GET['start'])) $start = $_GET['start'];

omdat je dat heb escaped selecteerd je nu altijd de eerste 5 producten uit je tabel maar goed..

als er 10 producten in die tabel staan dat zou er met mysql_nuw_rows echt 5 uitmoeten komen, maar
ik volg niet helemaal of er dan 10 producten komen of iets anders ;)
 
Basz

Basz

21/12/2004 17:33:00
Quote Anchor link
Hij moet starten bij het eerste product dat wordt gevonden in de query, dat deel wat escaped wordt wordt alleen gebruikt wanneer ik in een link zou aangeven waar er gestart moet worden (en niet van toepassing dus)
 
DaeDaluz

DaeDaluz

21/12/2004 17:38:00
Quote Anchor link
Nee ik snap de bedoeling maar nu heb je alle andere producten redelijk onbereikbaar gemaakt of je moet er een aparte pagina voor maken..

ik gebruik zelf ook weleens LIMIT in mn queries en ik heb als enige verschil LIMIT 0,5 ipv van bij jouw LIMIT 0, 5 maar dat zou niet uitmogen maken maar is het niet een beetje omslachtig om vars te gebruiken voor vaste waardes ?

en verder zou ik graag willen weten hoeveel hout producten je hebt en hoeveel hij er weergeeft.

volgens mij kijk ik echt langs het probleem.. ;P
maar ja ik php nog niet zo lang dus ik zoek nog wel ff verder :)
 
Basz

Basz

21/12/2004 17:39:00
Quote Anchor link
er staat nu maar 1 hout product in, die geeft hij ook weer, maar de rest ook...
 
DaeDaluz

DaeDaluz

21/12/2004 17:41:00
Quote Anchor link
Vreemd.. het enige wat ik kan bedenken is dat al die andere producten allemaal ook allemaal heten met het woord hout erin want door die % kunnen er zoveel tekens voor en achter staan..

heb je anders geen voorbeeld/URL waar ik op kan kijken? en/of een voorbeeld van je tabel (screeny ofsow) want ik loop nu gewoon een beetje te gokken wat het probleem kan zijn.
Gewijzigd op 21/12/2004 17:43:00 door DaeDaluz
 
Basz

Basz

21/12/2004 17:48:00
Quote Anchor link
ik heb alles nog ff nagekeken en d'r zat een redelijk grote fout van mijzelf in...... ik pas het script hierboven aan en alles is dan opgelost!

Hey toch bedankt he!!
 
DaeDaluz

DaeDaluz

21/12/2004 17:50:00
Quote Anchor link
ik wist het, ik mis dat soort problemen ook altijd :p

ps: wat was het nou nu ben ik nieuwsgierig ;)
 
Basz

Basz

21/12/2004 17:54:00
Quote Anchor link
onderaan in het script werden de kolommen geteld, maar daar stond niet bij dat hij alleen de kolommen mocht tellen met daarin hout!
 
DaeDaluz

DaeDaluz

21/12/2004 17:56:00
Quote Anchor link
haha :') en ik helemaal zoeken ergens anders
[irc]
/me slaps DaeDaluz with a large trout
[/irc]
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.