check of row al bestaat in de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk de Vries

Henk de Vries

15/03/2012 14:33:38
Quote Anchor link
hallo,

ik ben bezig met een functie binnen de website waarbij je favorieten kan toevoegen in de database. maar hoe zorg ik ervoor dat je een favoriet alleen maar kan toevoegen aan de database als deze nog niet in de database staat.

zoiets had ik in gedachte

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if( row bestaat in database )
{

   echo "U heeft dit al in de favorieten lijst opgenomen.";
}

else
{
   insert into ....
}


?>


alvast bedankt
 
PHP hulp

PHP hulp

23/12/2024 15:33:04
 
- SanThe -

- SanThe -

15/03/2012 14:35:20
Quote Anchor link
Henk de Vries op 15/03/2012 14:33:38:
.... maar hoe zorg ik ervoor dat je een favoriet alleen maar kan toevoegen aan de database als deze nog niet in de database staat ....


Het databaseveld UNIQUE maken.
 
Albert de Wit

Albert de Wit

15/03/2012 14:47:28
Quote Anchor link
ik neem aan dat de tabel er zo uitziet:

id, naam, link


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$row
= "dat_ding_dat_je_bedoelt";
$query = mysql_query("SELECT link FROM tabel")
while ($rij = mysql_fetch_row(@query))
{

  if ($row!=$rij[0])
  {

    mysql_query("INSERT INTO tabel etcc......")
  }
}

?>
 
Henk de Vries

Henk de Vries

15/03/2012 14:47:55
Quote Anchor link
ok maar krijg ik dan niet het probleem dat als een andere user hetzelfde product wil toevoegen, dat deze dan een foutmelding krijgt?

bijvoorbeeld

persoon1 - voegt fiets met id 30 toe aan favorieten
persoon2 - voegt fiets met id 30 toe aan favorieten
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/03/2012 14:49:42
Quote Anchor link
Ik vermoed dat dit een meer op meer relatie is, dus een koppeltabel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE
    user_favs (
    user_id INT(11),
    fav_id INT(11),
    PRIMARY KEY (user_id, fav_id))
    ENGINE = INNODB


Toevoeging op 15/03/2012 14:51:58:

Henk de Vries op 15/03/2012 14:47:55:
ok maar krijg ik dan niet het probleem dat als een andere user hetzelfde product wil toevoegen, dat deze dan een foutmelding krijgt?

bijvoorbeeld

persoon1 - voegt fiets met id 30 toe aan favorieten
persoon2 - voegt fiets met id 30 toe aan favorieten

Als je het op bovenstaande manier oplost niet
 
- SanThe -

- SanThe -

15/03/2012 14:56:20
Quote Anchor link
@Albert: Op jouw manier wordt het een puinhoop. Stel dat de SELECT 100 records vindt waarvan één de inhoud heeft van $row. Dan doe jij 99 keer een INSERT.
 
Henk de Vries

Henk de Vries

15/03/2012 15:00:57
Quote Anchor link
ik wil de situatie wel even wat verduidelijken :P

mijn tabel heeft 3 velden.

id (auto increment)
user_id (hier komt het id van de user)
product_id (hier komt het id van het product)

op het moment kan een gebruiker oneindig vaak hetzelfde product toevoegen aan de lijst, wat de database heel erg vol gooit. Ik wil het graag zo hebben dat de gebruiker maar 1x bijv het product fiets kan toevoegen. niet vaker.

andere gebruikers maken gebruik van dezelfde tabel.

voorbeeld in tabel:

id | user_id | product_id
1 | 76 | 87
2 | 43 | 45
Gewijzigd op 15/03/2012 15:02:30 door Henk de Vries
 
- SanThe -

- SanThe -

15/03/2012 15:04:52
Quote Anchor link
Je kan ook user_id en product_id samen UNIQUE maken.
 
Erwin H

Erwin H

15/03/2012 15:07:07
Quote Anchor link
Unique key zetten op de combinatie van user_id en product_id, zodat iedere gebruiker een fiets kan invoegen, maar 1 gebruiker kan dat niet 2 keer doen.
Daarna bij je insert statement een ignore keyword toevoegen. Hiermee onderdruk je de waarschuwing als een gebruiker het twee keer probeert en het record wordt niet ingeveoegd door de unique key. Daarna het aantal aangepaste rijen controleren en je weet of er een record is ingevoegd of niet.
 
Albert de Wit

Albert de Wit

15/03/2012 15:24:23
Quote Anchor link
- SanThe - op 15/03/2012 14:56:20:
@Albert: Op jouw manier wordt het een puinhoop. Stel dat de SELECT 100 records vindt waarvan één de inhoud heeft van $row. Dan doe jij 99 keer een INSERT.


sorry klopt idd haha....
stomme fout
 
Henk de Vries

Henk de Vries

15/03/2012 19:40:27
Quote Anchor link
ik heb het voor elkaar hartstikke bedankt!
 



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.