Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Duplicate entry

Anoniem
Sephiroth
10 antwoorden
  • Ik zit met de volgende uitdaging:

    Ik heb een formulier waar onder andere een id en een naam kan worden ingevuld. Als er op de knop Add wordt geklikt dan wordt er eerst gegekeken of id leeg is en of de ingetypte naam al aanwezig is is de database. Indien dat zo is dan wordt de invoer gestopt en krijgt de gebruiker de melding te zien dat de naam al in de database zit.
    Als dat niet zo is dan worden de gegevens ingevoerd in de database.

    Om het bovenstaande te controleren gebruik ik het volgende:

    [b:39db6a48b2]if (empty ($id) && $Naam == "SELECT Naam FROM farmlijst WHERE Naam = $Naam")
    {
    echo "<strong>Naam is al bekend!!!</strong>";[/b:39db6a48b2]

    Als ik nu op de knop Add klik dan krijg ik de volgende melding terug:

    [b:39db6a48b2]Duplicate entry '127' for key 1[/b:39db6a48b2]

    Dit klopt, want op deze plaats staat inderdaad de naam die ik nog een keer probeer in te voeren in de database. Maar ik verwacht eigenlijk dat de melding [b:39db6a48b2]Naam is al bekend!!![/b:39db6a48b2] wordt weergegeven op het beeldscherm.

    id is van het type tinyint en wordt bij elke nieuwe invoer automatisch met 1 opgehoogd.

    Zo, ik hoop dat ik alle benodigde zaken vermeld heb voor deze uitdaging.
    Eens kijken of jullie mij kunnen helpen :D
  • ik neem aan dat het over php gaat…

    er staat "SELECT Naam FROM farmlijst WHERE Naam = $Naam" maar volgens mij wordt de query niet uitgevoerd. Er mist een mysql_query of wat voor db je ook gebruikt… nu wordt het met de string vergelijken, lijkt me
  • Naast het feit dat ik deze [code:1:884cbe3918]$Naam == "SELECT Naam FROM farmlijst WHERE Naam = $Naam"[/code:1:884cbe3918]constructie vreemd vind denk ik dat je aan je limiet zit. Je zegt dat je een auto_increment kolom hebt van het type tinyint en laat nu de max waarde 127 zijn van dat type (signed).
    M.a.w. kies een ander datatype of schoon je table op.
  • [quote:653073c446="Ruudfeen"]ik neem aan dat het over php gaat…

    er staat "SELECT Naam FROM farmlijst WHERE Naam = $Naam" maar volgens mij wordt de query niet uitgevoerd. Er mist een mysql_query of wat voor db je ook gebruikt… nu wordt het met de string vergelijken, lijkt me[/quote:653073c446]
    Het gaat inderdaad over PHP ;)

    De query SELECT Naam FROM wordt netjes uitgevoerd hoor ;)
    Als ik dit stuk alleen gebruik, is de if statment altijd TRUE en krijg ik geen update meer in de database (als ik een reeds eerder ingevoerd naam gebruik).

    Aangezien dit niet de bedoeling is, wil ik dat er gecontroleerd wordt op twee invoervelden, Naam en id dus.

    Ik zit nog steeds te denken dat het ergens aan empty ($id) ligt.

    Als ik een echo voor de if statement plaats en niets invul in het veld id dan krijg ik niets terug en als ik een waarde invul van krijg ik de waarde netjes terug.
  • [quote:f7fc5fbbd2="Annie"]Naast het feit dat ik deze [code:1:f7fc5fbbd2]$Naam == "SELECT Naam FROM farmlijst WHERE Naam = $Naam"[/code:1:f7fc5fbbd2]constructie vreemd vind denk ik dat je aan je limiet zit. Je zegt dat je een auto_increment kolom hebt van het type tinyint en laat nu de max waarde 127 zijn van dat type (signed).
    M.a.w. kies een ander datatype of schoon je table op.[/quote:f7fc5fbbd2]
    Wat vind je vreemd? Want dat vertel je er niet bij en kan ik er dus niets mee doen. Meer tekst en uitleg dus aub ;)

    En waar bazeer jij je beredenering op dat de database meer dan 127 records zal bevatten? :-?
  • Ik zeg niet dat je database meer dan 127 entries bevat.
    Ik vermoed aleen dat er al een entry is met id 127 en dat de eerst volgende entry niet toegevoegd kan worden omdat er geen plaats is na 127 in het geval van een tinyint. En niet gebruikte id's worden niet overnieuw uitgedeeld.

    Het je het overigens al geprobeerd?
  • [quote:7399f1bcc8="Annie"]Ik zeg niet dat je database meer dan 127 entries bevat.
    Ik vermoed aleen dat er al een entry is met id 127 en dat de eerst volgende entry niet toegevoegd kan worden omdat er geen plaats is na 127 in het geval van een tinyint. En niet gebruikte id's worden niet overnieuw uitgedeeld.

    Het je het overigens al geprobeerd?[/quote:7399f1bcc8]
    id is ondertussen al van het type INT ;)

    Maar daar zit het probleem niet in.
  • weet je t zeker?
    staat ie nog op AUTO_INCREMENT?

    als dat allemaal het geval is moet je je code eens grondig nakijken of er niet ergens wordt geprobeerd een nieuwe record te maken die persé 127 als ID moet hebben…
  • ik kan jou wel met zekerheid vertellen dat de query niet uitgevoerd wordt… er moet toch eerst een mysql_query aan te pas komen om de query alleen uit te voeren daarna moet je ook nogges een mysql_fetch_… of mysql_num_rows uitvoeren want anders weet php echt niet dat hij de database moet raadplegen
  • als je nou eens een groter stuk code hier plakt, bijvoorbeeld het hele gedeelte wat wordt uitgevoerd als je op de knop add drukt…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.