Goedemiddag,

Ik ben aan een script bezig dat, wanneer ik op "Verzend" klik, er random namen worden aangemaakt. Dezelfde namen kan NOOIT!

Vb:
Stel ik druk elke dag op Verzend.
(In dit voorbeeld gebruik ik maar 2 namen)
Dag 1 :
Naam 1: Jan van Seeters
Naam 2: Pieter Monteyne
enz.

Nooit kunnen de namen Jan van Seeters en Pieter Monteyne meer voorkomen.

Ik dacht eraan arrays te gebruiken
1 array voor de voornaam en 1 array voor de achternaam.
Hoe zorg ik ervoor dat namen niet 2x voorkomen?
Hoe zorg ik ervoor dat er 10 namen gegenereerd worden? 10 arrays?

Dank.
W8 w8 w8 w8 w8 w8 w8 w8, ik snap niet wat je wilt, je wilt dat iedere dag 10 namen gegenereerd worden? Denk je dat PHP dat kan? Niet dus, zoek eerst eens uit hoe je dat wilt gaan doen!
Tim,

Ik ben heel benieuwd wat je hiermee wilt bereiken ;-) Maar toch...

Je zou een array met voornamen en achternamen kunnen maken (of een tabel ofzo), en hier telkens 2 random items uit kiezen, en aan elkaar plakken... Deze namen die je aanmaakt zou je dan in een tabel kunnen opslaan zodat je kunt controleren of de naam al een keer gebruikt is.

Denk wel goed na bij wat je gaat doen als je 4 achternamen en 4 voornamen hebt, en alle mogelijke combi's zijn gebruikt! Dit zou de werking van je script kunnen stoppen als je hier niet iets voor inbouwd...
idd zoals Rens al zegt in database opslagen en die rij als UNIQUE beschouwen ... zodat hij een error zal geven als die naam al bestaat
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Geef aan hoeveel namen je wilt genereren
$aantal=10;
// namen genereren
$teller = 0;
$namen = array();
$voornamen = array('Piet','Klaas','Willen','Anneke','Jeanet','Mieke');
$achternamen = array('Janssen','Paulusma','de Mol','van der Schaaf','Doorgeest','te Walvaart');
namegenerator($voornamen,$achternamen,$teller,$aantal,$namen);
function namegenerator($voornamen,$achternamen,$teller,$aantal,$namen){
$naam = '';
while($teller < 10){
shuffle($voornamen);
shuffle($achternamen);
$naam = $voornamen[0].' '.$achternamen[0];
if(!in_array($naam,$namen)){
$namen[]=$naam;
echo $naam.'<br />';
$teller++;
}
}
echo 'Er zijn '.$aantal.' namen gegenereerd.';
}
?>
maarre... ik ben nog steeds benieuwd waarvoor je dit script in wilt zetten?
Ben bezig met een managergame waarbij je spelersnamen nodig hebt en veel ;)
Je moet wel al die namen zelf gaan verzinnen en in de DB zetten.

Je kunt ook gewoon voornaam en achternaam in 1 kolom zetten, en dan verwijder je dat record als je hem hebt gebruikt :) dan is het een heel stuk simpeler
@Pim
Zie ook mijn voorbeeld, die arrays kan je bijvoorbeeld samen laten stellen door uit de usertabel alle (unieke!) voornamen te halen en in de array te plaatsen, en voor de achternamen alle unieke achternamen uit de usertabel.
Vervolgens haal je uit de spelersnamentabel de namen van de spelers, en gooi je ook in een array. (fluitje van een cent) wanneer je dan mijn schript aanroept, krijg je een array terug met daarin een aantal unieke spelersnamen (zoveel als opgegeven)
Deze namen zijn dan "aftreksels" van de echte namen van de mensen die met je managergame bezig zijn. Zo lijkt het ook nog eens reƫel qua namen.

Het handigst is om mijn voorbeeld dan wel iets aan te passen, dat je een losse vergelijkingsarray opzet met de namen die reeds in de tabel staan, zodat je nieuwe array alleen nieuwe namen bevat.
+laat dan een tellertje meelopen, voor als je bijvoorbeeld 3x achter elkaar een naam hebt die al voorkomt, (of een paar keer meer) dat die dan de lus stopt, anders kom je in een oneindige lus.
Post verwijderd. Vraag heeft niets te maken met dit topic.

Reageren