Beste forumleden

Ik ben momenteel bezig met een prijslijsten applicatie die bijna af is. Het betreft een applicatie waarop om te beginnen 200 bedrijven gaan inloggen. Zij ontvangen een flyer met een random logincode. Nu wil de opdrachtgever een functie binnen de admin omgeving hebben om in een keer 200 accounts aan te maken waarvan de logincode random is.

Nu vraag ik mij af hoe ik dit het beste kan doen. Heeft iemand hier ervaring mee? Zijn er meerdere manieren voor? Ik heb geprobeerd om met een while loop dit te realiseren maar ik krijg het niet voor elkaar om ervoor te zorgen dat er maar 200 records worden aangemaakt. Daarnaast ben ik bang dat de performance er onder leiden.

Ik weet wel dat je bij een select query rand(); kunt gebruiken in de WHERE clausule maar is er ook zoiets mogelijk voor een insert query?

Alvast bedankt voor het meedenken

Groeten Frits
Je moet een nette loop maken 001....200 en dan deze waarde ook meenemen in het account. In de insert dus.

for($i = 1; $i >= 200; $i++) {
	$logincode = rand(5555, 9999); //Maak een random logincode van 4 getallen

	mysql_query("INSERT INTO tabel SET logincode = '".$logincode."'"); //Query in database proppen
}


Heb het niet getest maar zo maak je ongeveer 200 queries aan met een random code,
Oetzie en mijn achternaam op 27/08/2010 11:09:36


for($i = 1; $i >= 200; $i++) {
	$logincode = rand(5555, 9999); //Maak een random logincode van 4 getallen

	mysql_query("INSERT INTO tabel SET logincode = '".$logincode."'"); //Query in database proppen
}



Bedankt! Ik ga het vanavond even testen.
Heb het niet getest maar zo maak je ongeveer 200 queries aan met een random code,


Frits, misschien heb je iets aan onderstaande. Zojuist getest, dit werkt in ieder geval. Pas de code (coupon-code) aan naar wens :-)

Database:
id (auto_increment, primary key)
coupon (varchar(25))


<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('test');

if(isset($_GET['make']))
{
	$howmany = 200;
	$length = 15;
	$characters = range('a', 'z');
	$characters = array_merge(range(0, 9), $characters);
	$characters = array_merge(range('A', 'Z'), $characters);
	
	for($i = 0; $i < $howmany; $i++)
	{
		
		$coupon = '';
		for($j = 0; $j < $length; $j++)
		{
		    $coupon .= $characters[rand(0, count($characters) -1)];
		}
		mysql_query("INSERT INTO coupon(coupon) VALUES ('".$coupon."')");
	}
	echo '<a href="?">Done</a>';
}
else
{
	echo 'Current coupon codes:<br />';
	$sql = "SELECT id, coupon FROM coupon";
	$result = mysql_query($sql);
	$count = mysql_num_rows($result);
	if($count > 0)
	{
		echo $count.' coupons in total:<br />';
		while(($list = mysql_fetch_assoc($result)))
		{
			echo $list['id'].': '.$list['coupon'].'<br />';	
		}
	}
	else
	{
		echo 'No coupons made yet!<br />';	
	}
	echo '<a href="?make">Maken?</a>';
}
?>
Het zal niet snel gebeuren, maar theoretisch is het heel goed mogelijk dat je nu dubbele codes krijgt. En dan werkt het inloggen waarschijnlijk niet meer.

Edit:
Met nu bedoel ik bovenstaande voorbeelden.

Je zou bijvoorbeeld een functie kunnen maken die controleert of de code in de database staat. En op basis van wat de functie teruggeeft een nieuwe code genereren.
Klopt! Deze kun je natuurlijk veel uitgebreider maken en hier een volledig script van maken ;-)
Oetzie en mijn achternaam op 27/08/2010 11:09:36


for($i = 1; $i >= 200; $i++) {
	$logincode = rand(5555, 9999); //Maak een random logincode van 4 getallen

	mysql_query("INSERT INTO tabel SET logincode = '".$logincode."'"); //Query in database proppen
}

Heb het niet getest maar zo maak je ongeveer 200 queries aan met een random code,


Die gaat iniedergeval niet werken
$i >= 200 betekent $i is GROTER of GELIJK aan 200
$i begint als 1 dus dan krijg je het volgende:


for($i=1; i >= 200; i++){
// wordt niet uitgevoerd omdat i NIET groter of gelijk aan 200 is
}
// Dit wordt wel uitgevoerd

}


<?php for($i=1; $i <= 200; $i++) ?>

moet het zijn :)

Reageren