Hallo allemaal,

Ik zoek een script dat een unieke code maakt, die bestaat uit drie letters gevolgd door 3 cijfers, bijvoorbeeld ABC123 of ACB123 e.d.
Maar die code mag nog niet voorkomen in de database!
Dus als code ABC123 al bestaat, moet hij een ándere unieke code verzinnen.
Als die óók al bestaat moet hij wéér een andere code bedenken enzovoort enzovoort...

Wie kan mij helpen?

Hellolo.
dan moet je de functie rand() gebruiken.

ik zou dan 6 keer die functie gebruiken. 1 keer voor de eerste letter, 1 keer voor de 2e letter enz.

dan die uitkomsten achter elkaar zetten zodat het 1 code wordt.

dan laat je hem zoeken in je database op dit code. en maak je een if statement dat als hij al voorkomt hij nog een code maakt en weer controleert, en als hij niet voorkomt, dat hij de code dan weergeeft.
$sql = "SELECT code FROM tabel WHERE code='".$jouwcode.'";

$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");

if(mysql_num_rows($resultaat) == 0) {
doogaan met script
}else{
De code bestaat al dus weer een nieuwe code maken
}

Zoiets zou dat controleren doen volgens mij.
Leuke puzzel! Ga ik even mee aan de gang.
<?php

function unieke_code() {
$t = rand(rand(0,100),rand(0,100);
$f = md5($t) . $t;
return substr( //etcc
}
?>
<?
$unieke_code = chr(rand(65,90)).chr(rand(65,90)).chr(rand(65,90)).rand(0,9).rand(0,9).rand(0,9);
echo $unieke_code;
}
?>
Allereerst allemaal bedankt voor de oplossingen.

@ Stefan van Iwaarden: Dan moet je oneindig veel if-jes erin zetten, want stel die functie die je daarna maakt bestaat al. Dat moet je dan weer controleren. En bestaat die al, dan moet je wéér controleren.
Dus dit is niet echt een optie.
Bedankt voor je moeite en tijd en reactie.

@ Tom Snijders: Zelde als bij Stefan van Iwaarden.
Ook bedankt voor je moeite en tijd en reactie.

@ Sebastiaan: Die gaat ook niet eeuwig door.
Ook bedankt voor je moeite en tijd en reactie.

@ Jan Koehoorn: Ja die bedoelde ik!!!
Ook bedankt voor je moeite en tijd en reactie.

Allemaal hartelijk bedankt!

EDIT:
Thijs, die van jouw controleert ook niet [ eeuwig ] door.
Nee, het is ook alleen die code genereren.. Hoe je moet checken staat hierboven al gepost

Edit @ jan
Dit is wel beetje overdreven tog?
<?

# cijfers: ASCI code 48 tot 58
$code4 = chr (rand (48, 57));
$code5 = chr (rand (48, 57));
$code6 = chr (rand (48, 57));
?>

Kan je stuk makkelijker gewoon rand(0,9) doen
scheelt weer wat tijd :P
@ thijs: klopt, maar dat levert een int op en geen asci character, dus als je ze daarna gaat koppelen met de . operator dan krijg je iets anders.
Nee hoor werkt perfect probeer maar:

<?
function maak_code () {
# hoofdletters: ASCI code 65 tot 91
$code1 = chr (rand (65, 90));
$code2 = chr (rand (65, 90));
$code3 = chr (rand (65, 90));

# cijfers: ASCI code 48 tot 58
$code4 = rand (0, 9);
$code5 = rand (0, 9);
$code6 = rand (0, 9);

$code = $code1 . $code2 . $code3 . $code4 . $code5 . $code6;
return $code;
}

echo maak_code();
?>

Reageren