Specifiek aantal gebruikers invoegen in de database via een tekst bestand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jacob de Graaf

Jacob de Graaf

20/08/2012 20:41:05
Quote Anchor link
Hallo,

Ik probeer een script te maken waarbij ik in een form kan aangeven hoeveel gebruikers ik wil toevoegen aan de database, waarvan de namen worden gelezen uit een .txt bestand. Het klinkt misschien een beetje onduidelijk, maar het komt er op neer dat het systeem dan bijvoorbeeld 10 regels uit een .txt bestand moet pakken en in de database moet zetten. Als de namen uit het .txt bestand al in gebruik zijn, moet het systeem zoeken in het .txt bestand naar gebruikersnamen die nog niet worden gebruikt in de database.

Ik heb het al geprobeerd te scripten, maar ik creëerde een herhaling, waarbij het systeem continue gebruikers in de database plaatste, zonder naam die hij eigenlijk zou moeten lezen uit het .txt bestand.

Weten jullie hoe ik dit het beste aan kan pakken?
 
PHP hulp

PHP hulp

01/12/2024 05:41:17
 
Reshad F

Reshad F

20/08/2012 22:24:32
Quote Anchor link
zonder relevante code kunnen we niet vertellen wat er fout gaat. plaats is een stukje relevante code.
 
Jacob de Graaf

Jacob de Graaf

20/08/2012 22:53:20
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
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if(isset($_POST['submit'])) {
$x = $_POST['x'];
$begin = rand(0,1499326);
$names = file(users.txt);

for($i=1;$i <= $aantal;$i++){

$output = array_slice($names[$i], $begin, $x);

$select = "SELECT login FROM `users`";
while($users = mysql_fetch_assoc(mysql_query($select))) {
 
 if(!in_array($users['login'],$output)) {
 $pass = rand(0,999999999999);
 mysql_query("INSERT INTO `users`(login,pass) values('$output',MD5('$pass'))") or die (mysql_error());
 echo "Ok.";
 }
else {
 echo "Alle namen zijn al in gebruik.";
 }
}
}
}
else {
?>

<form method="post">
<h1>Hoeveel gebruikers?</h1>
<br /><input type="text" name="x">
<br /><input type="submit" name="submit" value="Toevoegen">
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>
Gewijzigd op 20/08/2012 22:53:49 door Jacob de Graaf
 
Erwin H

Erwin H

20/08/2012 23:01:27
Quote Anchor link
Afgezien van de syntax fouten die erin staan, ga je voornamelijk de mist in op het feit dat je de database niet 'gebruikt'. Ik neem aan dat elke username maar 1 keer kan bestaan. Gebruik dat. Zet een unieke index op de username kolom in je database (login bij jou denk ik), zodat je nooit dubbele waardes kunt invoeren. Hierdoor kan elke keer opnieuw gewoon de namen invoeren en door middel van een call naar mysql_affected_rows checken hoeveel er daadwerkelijk zijn ingevoerd.

Je kan dan zelfs alle namen in 1 query invoeren.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO users(login, pass)
VALUES('user1', 'pass1), ('user2', 'pass2'), ('user3', 'pass3');
 
Ivo Breeden

Ivo Breeden

20/08/2012 23:22:52
Quote Anchor link
Je initialiseert je $aantal niet. Kennelijk is dat $_POST['x'].
Gewijzigd op 20/08/2012 23:24:07 door Ivo Breeden
 
Jacob de Graaf

Jacob de Graaf

22/08/2012 16:35:04
Quote Anchor link
@ Erwin H, bedankt voor de tip! De syntax fouten komen door de slordigheid. Ik had het script eerst goed, maar daarna even snel aangepast en niet meer getest daarna. Daardoor was $_POST['x'] bijvoorbeeld eerst $_POST['aantal'], waar het $aantal vandaan komt. Ik ga het proberen.
 



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.