Alleen sql data laden die aangeklikt is.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donovan -

Donovan -

17/01/2016 13:39:45
Quote Anchor link
Hoi!

Ik heb voor een schoolproject, een webshop in mijn geval van games, een stukje code waarmee ik alle data uit de database haal. Let wel, ben een beginnen, vergeef me als ik iets stoms doe.

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
<?php
    mysql_connect("localhost", "io1a_127315", "127315");
    mysql_select_db ("io1a_127315");
    $result = mysql_query("SELECT * FROM Producten");
      while($data = mysql_fetch_assoc($result)) {
                       echo '<div class="game">';
                       echo '<div id="center">';
                       echo $data['Naam'] . "<br />";
                       echo $data['Gamebox'] . "<br />";
                       echo $data['Oude_prijs'] . "<br />";
                       echo $data['Nieuwe_prijs'] ."<br />";
                       echo '</span></div>';
                       echo '</span></div>';
      }

    ?>


Ik haal dus schijnbaar alle data uit de database "Producten" en die komen op 1 pagina. Super! NU wil ik het zo hebben, op het moment dat er op een van die titels ("Naam") word geklikt, dat je dan naar een andere detail pagina gaat en daar alleen de data van de zojuist aangeklikte naam komt. Hoe doe ik dat?

Alvast bedankt!
Gewijzigd op 17/01/2016 13:43:04 door Donovan -
 
PHP hulp

PHP hulp

29/03/2020 00:35:41
 
- Ariën -
Beheerder

- Ariën -

17/01/2016 13:45:55
Quote Anchor link
Allereerst heb je wel een uniek nummer nodig, waarmee je het product identificeert.
Ik ga er van uit dat je een INT-veld hebt met de naam ID, die Auto_Increment (Primary Key) is.

Je kan dan op een andere pagina met if(isset($_GET['id'])) { controleren of er een GET-waarde in de URL is (bijv. product.php?id=42), en dan kan je met mysql_num_rows controleren of het ID-nummer bestaat, en indien dat het geval is kan je met mysql_fetch_assoc() de gegevens ophalen. Een while() is overigens alleen nodig als je expliciet een of meer producten verwacht.


Verder even een opmerking, in de toekomst gaan de MySQL-functies in PHP verdwijnen, en wordt het aan te raden om over te stappen op MySQLi en PDO. Voor een schoolproject is het geen probleem, maar je erop voorbereiden kan zeker geen kwaad. Misschien dat het een bonuspuntje zelfs op kan leveren ;-).
Gewijzigd op 17/01/2016 13:47:26 door - Ariën -
 
Donovan -

Donovan -

17/01/2016 13:51:24
Quote Anchor link
Ja klopt, ik heb een kolom met de naam ID en die heb ik inderdaad gewoon op AI staan.

Maar het is dus de bedoeling, als er een product X staat, zodra je dus op de X klikt, je naar een andere pagina gaat. Deze pagina heet in dit geval Gamedetails.php. Moet ik dit daarin verwerken of hoe zit dat? :%$

Toevoeging op 17/01/2016 14:00:10:

En hoe zorg ik er voor dat mijn naam van mijn product in dit geval, een link heeft? In de SQL database?
 
- Ariën -
Beheerder

- Ariën -

17/01/2016 14:14:17
Quote Anchor link
Jep, je moet die code in product.php o.i.d. verwerken.
De link kan je prima in je echo verwerken, selecteer wel ID in je query.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<a href="product.php?id='.$data['ID'].'">'.$data['Naam'].'</a><br />';
?>
 
Pipo Clown

Pipo Clown

17/01/2016 15:17:36
Quote Anchor link
Je maakt een div aan met het id="center" binnen de fetsch_assoc
Grote kans dus dat je meerdere div's aanmaakt met hetzelfde id, dit is niet toegestaan. Een ID moet uniek zijn op een pagina.

Ik zie 2 maal een </span> voorbij komen zonder dat ik ergens een <span> zie, dee dienen als paar gebruikt te worden

Ik heb geen idee welke HTML/XML je gebruikt maar gooi het eens door de W3C-validator heen, dikke kans dat deze problemen heeft mer <br />

Waarom gebruik je de ene keer single quotes voor een echo en de andere keer double quotes ?
Gewijzigd op 17/01/2016 15:18:17 door Pipo Clown
 
 - Diov  -

- Diov -

17/01/2016 15:28:58
Quote Anchor link
Wat je eigenlijk zoekt is een query string.

Voorbeeld:
www.example.com/product.php?id=5&name=Diov

Ariën heeft al een code preview gegeven van hoe je zo een link opbouwd.
Op de product.php pagina doe je het volgende dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// Waarde van id:
$id = $_GET["id"]; // 5
$name = $_GET["name"]; // Diov

// Indien je weet hoe je het Id uit de string haalt, kan je uw query opbouwen.
// SELECT * FROM Producten WHERE id = $id
// Let ook op voor SQLInjection!

?>
 
Donovan -

Donovan -

17/01/2016 20:53:22
Quote Anchor link
Top top top!!

Is gelukt met dit:

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
<?php
mysql_connect("localhost", "io1a_127315", "127315");
mysql_select_db ("io1a_127315");
$sql = "
    SELECT
        *
    FROM
        Producten
    WHERE id
    = '    "
.$_GET['id']."    '
"
;
if(!$res = mysql_query($sql)) {
    trigger_error(mysql_error().'<br />In query: '.$sql);
}

elseif(mysql_num_rows($res) == 0){
    echo 'Geen resultaten gevonden';
}

else {
    while($row = mysql_fetch_assoc($res)) {
        echo $row['Gamebox'];
    }
}

?>
 
- Ariën -
Beheerder

- Ariën -

17/01/2016 20:56:01
Quote Anchor link
Je hebt overigens geen while nodig voor een query die maar 1 resultaat geeft.
 



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.