Webwinkel - de "meer informatie" button

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Brouns

Jeroen Brouns

22/07/2010 19:26:36
Quote Anchor link
Hallo iedereen,

Ik ben bezig met het schrijven van een webwinkel in php.
Het etalage gedeelte werkt al naar behoren (aangestuurd door mysql.). Maar nu is het de bedoeling dat bezoekers vanuit de etalage door middel van een button naar een andere pagina kunnen gaan die meer informatie biedt over dat bepaalde product. Hoe kan ik dit het beste aanpakken? heeft er iemand voorbeelden, tutorials of tips??

Groetjes,

Jeroen Brouns
 
PHP hulp

PHP hulp

25/12/2024 06:15:54
 
Martijn B

Martijn B

22/07/2010 19:32:31
Quote Anchor link
Ik neem aan dat een product een id (Primary key in de producten tabel) heeft bijvoorbeeld van het type int (unsigned, auto_increment)? Zo niet,dan zou ik dit maar snel doen!

Dit unieke nummertje gebruik je in de query string van het script om het een product in detail te bekijken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://mijnsite.nl/view_product.php?id=324234


edit:

Heb je een eigen server? Zet dan Apache multiviews aan kun je dit doen als Internet adres gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://mijnsite.nl/view_product/324234/paar-schoenen.html
Gewijzigd op 22/07/2010 19:36:53 door Martijn B
 
Jeroen Brouns

Jeroen Brouns

23/07/2010 12:10:54
Quote Anchor link
Hoi Martijn B

Bedankt voor je snelle reactie!
Ik heb je tip opgevolgd.
Hij verplaatst het id perfect naar de volgende pagina alleen vergelijkt hij hem niet met het id uit de database.

mijn code ziet er nu zo uit en je kan het bestand bekijken op deze link:
http://www.brouns-design.nl/webwinkel/informatie_link.php?id=2

Quote:
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
<?php
// informatie_link.php
session_start();




// Het product wat we toevoegen moeten we eerst controleren
// if(is_numeric($_POST['id'])) $id = $_POST['id'];
// else exit("Verzin een mooie foutmelding als productnummer geen integer is.");

// $id = $_POST['id'];
// echo $id;


include('contactdb.php');

$id = $_GET['id'];
print($id);

// producten laten zien
$sql = "SELECT productnummer, productnaam, prijs, beschrijving, image_link, informatie_link, id
       FROM product WHERE id = '"
.$id."'
       ORDER BY productnaam"
;    // dit is dus de query om de producten op te halen
$query = mysql_query($sql) or die (mysql_error());



// tellen van de bestanden
$num = mysql_num_rows($query); // Het aantal producten
if(empty($num)) {
echo "<p>Er zijn geen producten gevonden.</p>\n";



}
else {
  // Laat de producten zien
  while($product = mysql_fetch_object($query)) {
  }
}


$afbeelding = "$product->image_link";
echo $afbeelding;
echo $query;
echo $num;
echo "Prijs per stuk: EUR ".$product->prijs."<br />\n"; [/quote]
 
- SanThe -

- SanThe -

23/07/2010 12:40:58
Quote Anchor link
Script is lek = SQL-Injection. Nooit een GET waarde, zonder te checken of het is wat je verwacht, in een query zetten. Regel 30 kan gewoon met 0 (nul) vergeleken worden, ik vind empty() daar niet correct. Regel 37 is de while() overbodig want er is slechts één record gevonden. Regel 41 is overbodig geheugengebruik. Niet zinloos copiëren van $vars, maar gewoon het origineel gebruiken. $vars horen niet tussen quotes te staan.
Gewijzigd op 23/07/2010 12:41:43 door - SanThe -
 
Jeroen Brouns

Jeroen Brouns

23/07/2010 12:59:38
Quote Anchor link
Erg bedankt voor je snelle reactie (SanThe Nvt). Kan iemand van jullie een juiste aanpassing doen? Het zou me erg op weg helpen.
 
Johan Dam

Johan Dam

23/07/2010 14:44:23
Quote Anchor link
om de injectie tegen te kan kan je iets doen als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(ctype_digit($_GET['id'])){
    $id = $_GET['id'];
}
else {
    die("Geen rare waardes invullen, gebruiker!");
}

?>
Gewijzigd op 23/07/2010 14:55:48 door Johan Dam
 
Jeroen Brouns

Jeroen Brouns

23/07/2010 15:10:06
Quote Anchor link
Ik heb de tip van Johan Dam geprobeerd.
Mijn script ziet er nu zo uit, maar werkt nog steeds niet:
Quote:
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
<?php
// informatie_link.php
session_start();




// Het product wat we toevoegen moeten we eerst controleren
// if(is_numeric($_POST['id'])) $id = $_POST['id'];
// else exit("Verzin een mooie foutmelding als productnummer geen integer is.");

// $id = $_POST['id'];
// echo $id;


include('contactdb.php');

if(ctype_digit($_GET['id'])){
    $id = $_GET['id'];
}
else {
    die("Geen rare waardes invullen, gebruiker!");
}


// producten laten zien
$sql = "SELECT productnummer, productnaam, prijs, beschrijving, image_link, informatie_link, id
       FROM product WHERE id = '"
.$id."'
       ORDER BY productnaam"
;    // dit is dus de query om de producten op te halen
$query = mysql_query($sql) or die (mysql_error());





// tellen van de bestanden
$num = mysql_num_rows($query); // Het aantal producten
if(empty($num)) {
echo "<p>Er zijn geen producten gevonden.</p>\n";



}
else {
  // Laat de producten zien
  while($product = mysql_fetch_object($query)) {
  }
}


$afbeelding = "$product->image_link";
echo $afbeelding;
echo $query;
echo $num;
echo "Prijs per stuk: EUR ".$product->prijs."<br />\n";


  // forward to cart
// header("Location: cart.php");               //<--- deze werkt!!

//echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=".$cart_pagina."\">";

?>
 
Johan Dam

Johan Dam

23/07/2010 15:16:20
Quote Anchor link
Verwerk de tips van SanThe er ook even in,
 
Marick Marick

Marick Marick

23/07/2010 16:08:24
Quote Anchor link
Je hebt bij je query op regel 24 ORDER BY productnaam, maar er staat nog geen ASC of DESC achter.
 
Martijn B

Martijn B

23/07/2010 19:23:10
Quote Anchor link
Je query lijkt in orde te zijn.
Wat ik zelf altijd doe met o.a. id's in een query is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= "SELECT productnummer, productnaam, prijs, beschrijving, image_link, informatie_link, id
       FROM product WHERE id = '"
. (int)$id . "'
       ORDER BY productnaam"
;
?>


Heb je de id kolom ook aan gemaakt als primary key en ook auto_increment?
Het lijkt mij ook belangrijk dat je id als eerste kolom aanmaakt van je tabel.

Je zou je query ook op het scherm kunnen zetten en deze door phpmyadmin laten uitvoeren.
Gewijzigd op 23/07/2010 19:24:05 door Martijn B
 



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.