kijken of het al bestaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arian Stolwijk

Arian Stolwijk

09/07/2006 14:58:00
Quote Anchor link
Hoe kan je kijken of een bepaald veld al in de database staat zodat deze niet wordt overschreven?
 
PHP hulp

PHP hulp

17/11/2024 11:36:03
 
- SanThe -

- SanThe -

09/07/2006 15:12:00
Quote Anchor link
SELECT ... FROM ... WHERE ...
 
Arjan Kapteijn

Arjan Kapteijn

09/07/2006 15:14:00
Quote Anchor link
Als jij iets INSERT en je werkt met een unieke prim. key zal niks worden overschreven volgens mij.
 
Jason de Ridder

Jason de Ridder

09/07/2006 15:17:00
Quote Anchor link
nee idd, dan geeft ie een duplicate errror for entery .....
 
Arian Stolwijk

Arian Stolwijk

09/07/2006 15:23:00
Quote Anchor link
Hoe maak je dan een nette fouthandeling?
Bijvoorbeeld: De opgegeven id bestaat al, kies een andere
 
Kalle P

Kalle P

09/07/2006 15:26:00
Quote Anchor link
if(iddatabase == opgegevenid){
//bestaat al
die();
}
 
Willem Jan Z

Willem Jan Z

09/07/2006 15:33:00
Quote Anchor link
Lekker duidelijk Kalle :)

Als je een duplicate entry krijgt, geeft MySQL een error nummer mee, die kan je opvragen dmv mysql_errno()

Edit
Een duplicate entry geeft errno 1062 terug...
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Arian Stolwijk

Arian Stolwijk

09/07/2006 17:22:00
Quote Anchor link
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in *** on line **

Deze error krijg je dan dus.
En hoe zet je deze dus om... (graag in nederlands ;) )

Dus iets met mysql_errno ?
 
Arian Stolwijk

Arian Stolwijk

09/07/2006 17:29:00
Quote Anchor link
mysql_query($query) or die (mysql_errno() . ": " . mysql_error('Er is een fout opgetreden'));

Met deze code krijg ik dus als ik twee keer het zelfde invul wat niet mag: deze waarschuwing:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in ***.php on line 150
1062:

Maar ik wil dus dat hij zegt: Dit id is al bezet, kies een ander.
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 
Niek s

niek s

09/07/2006 17:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$query
= "SELECT veld FROM tabel WHERE unieke_veld = 'unieke_veld'";
$res = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($res) != 0) {
   echo "Bestaat al";
}
else {
   //voeg row toe
}
?>


Zoeits gebruik ik.. ( kijk zelf even na, niet getest )
Ik hoop dat het duidelijkiss.??
Gewijzigd op 01/01/1970 01:00:00 door niek s
 
Niek s

niek s

09/07/2006 17:47:00
Quote Anchor link
Arian:
mysql_query($query) or die (mysql_errno() . ": " . mysql_error('Er is een fout opgetreden'));

Met deze code krijg ik dus als ik twee keer het zelfde invul wat niet mag: deze waarschuwing:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in ***.php on line 150
1062:

Maar ik wil dus dat hij zegt: Dit id is al bezet, kies een ander.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
if (mysql_errno(je query dinges) == 1062) {
   echo "jou error ( iets van Dit id is al bezet,, of wat wou je?";
}
else {
   //zet er een row bij
}
?>
 
Arian Stolwijk

Arian Stolwijk

09/07/2006 18:38:00
Quote Anchor link
Ik heb nu dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $query
= ("INSERT INTO tabel (id, naam) VALUES ('".$id."', '".$naam."')");
$res = mysql_query($query) or die(mysql_error('Er is een fout opgetreden'));     
if (mysql_errno($res) == 1062) {
   die ('Dit id is al bezet');
    }
else {

    echo is toegevoegd';
}

?>

Maar hij doet het nog niet helemaal :$
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 
Winston Smith

Winston Smith

09/07/2006 19:12:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$sql
= "SELECT * FROM tabel WHERE naam = '" . $naam . "'";
$res = mysql_query($sql);

if(mysql_num_rows($res) >= 1) {
    print 'Dit id is al bezet';
}
else {
    $sql = "INSERT INTO tabel (id, naam) VALUES ('" . $id . "', '" . $naam . "')";
    $res = mysql_query($sql);
}

?>


Zo doe ik het ongeveer: je kijkt eerst of er al een waarde is met dezelfde naam. Als die waarde er is (mysql_num_rows is dan groter of gelijk aan 1), krijg je een melding dat die naam al bestaat. Anders voegt hij hem toe.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
 
Lissy Pixel

Lissy Pixel

09/07/2006 19:17:00
Quote Anchor link
@ Kasper : handig deze uitleg ---> BEDANKT !!
 
Arian Stolwijk

Arian Stolwijk

09/07/2006 19:44:00
Quote Anchor link
Ik snap hem en hij werkt !!!

Weer eens bedankt TOP (Y)
 
Frank -

Frank -

09/07/2006 21:06:00
Quote Anchor link
@Kasper: Dat is leuk en aardig, maar er bestaat een miniscule kans dat er tussen query 1 en query 2 reeds in een insert wordt gedaan. Dan komt het resultaat van de eerste query dus niet overeen met de werkelijkheid en zal query 2 fout gaan. En omdat je geen foutafhandeling gebruikt (doodzonde nummer 1), heb je een probleem.

De genoemde oplossing van Arjan is vele malen beter. Jouw oplossing heeft de kans dat het fout gaat.
 



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.