Later eenTabel Nummer toevoegen in databank
Via een mailformulier kunnen deelnemers zich aanmelden en worden in een databank geregistreerd. Uiteraard staan de namen niet in alfabetische volgorde terwijl de ID wel van 1, 2, 3, 4 etc. oplopen.
In deelnemerslijst, die én online komt te staan én als drukwerk wordt verstrekt, heeft elke deelnemer ook een deelnamenummer, dat niet hetzelfde is als het ID, maar wel meeloopt met de alfabetische volgorde.
Dus na aanmelding staat dit in de databank:
ID Naam deelnamenummer
1 Jansen 0
2 Pieterse 0
3 Albers 0
4 Karelse 0
Middels $num_rows weet ik dus het aantal deelnemers en laten we dat even n noemen
Nu wil ik, nadat de inschrijving is gesloten, middels een formuliertje met één druk op de knop een Update uitvoeren waarbij het deelnamenummer van 1 tot n wordt ingevoerd en wel zodanig dat de tabel (alfabetisch op naam gesorteerd) er als volgt uit komt te zien:
ID Naam deelnamenummer
3 Albers 1
1 Jansen 2
4 Karelse 3
2 Pieterse 4
Is dat mogelijk en zo ja, hoe kan ik dat programmeren in PHP/MSQL. Wie kan me op weg helpen.
Bij voorbaat dank.
Vervolgens al deze arrays in een groot array zodat je een twee-dimansionaal array hebt.
Vervolgens kan je met array_sort() de rijen sorteren en daarna de rijen nummeren.
Wanneer je het zo leest lijkt het heel wat maar het stelt echt niets voor.
Zou je dat misschien in code kunnen schrijven. Zou je zeer erkentelijk zijn.
Mvg.
Je kunt er ook voor kiezen om ID's op te halen, gesorteerd op Naam. Terwijl je de resultaten ophaalt houd je een deelnamenummer-teller bij en voer je bij elke stap van de ophaal-loop een UPDATE-query uit. Na afloop verhoog je de teller met 1.
Abstract:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$res = je_favoriete_query_functie('SELECT ID FROM tabel ORDER BY Naam');
$volgorde = 1;
while ($row = je_favoriete_associatieve_fetch_functie($res)) {
je_favoriete_query_functie(
'UPDATE tabel
SET deelnamenummer = '.$volgorde.'
WHERE ID = '.$row['ID']
);
$volgorde++;
}
?>
$res = je_favoriete_query_functie('SELECT ID FROM tabel ORDER BY Naam');
$volgorde = 1;
while ($row = je_favoriete_associatieve_fetch_functie($res)) {
je_favoriete_query_functie(
'UPDATE tabel
SET deelnamenummer = '.$volgorde.'
WHERE ID = '.$row['ID']
);
$volgorde++;
}
?>
Trouwens, dit volgordenummer is "redundant", met andere woorden, is afleidbaar uit de sortering op achternaam, maar er valt iets voor te zeggen om dit "dubbel" op te slaan (is dan wat makkelijker in het gebruik).
Hartstikke bedankt.
Op dat moment staat deze ook in een array in het geheugen maar wel gesorteerd. Het weergeven in een HTML tabel is vervolgens simpel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$conn = mysqli_connect("localhost", "my_user", "my_password", "database");
if (mysqli_connect_errno()) {
echo "Connect failed: " . mysqli_connect_error();
exit();
}
$query = "SELECT * FROM tabelnaam ORDER BY Naam";
$result = mysqli_query($conn, $query);
if(!$result) {
echo "Query failed: " . mysqli_error();
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Deelnemers</title>
<meta charset="UTF-8">
</head>
<body>
<table>
<?php while($row = mysqli_fetch_assoc($result)) {
echo '<tr>' .
'<td>' . $row['ID'] . '</td>' .
'<td>' . $row['Name'] . '</td>' .
'<td>' . $row['deelnamenummer'] . '</td>' .
'</tr>';
?>
</table>
</body>
</html>
$conn = mysqli_connect("localhost", "my_user", "my_password", "database");
if (mysqli_connect_errno()) {
echo "Connect failed: " . mysqli_connect_error();
exit();
}
$query = "SELECT * FROM tabelnaam ORDER BY Naam";
$result = mysqli_query($conn, $query);
if(!$result) {
echo "Query failed: " . mysqli_error();
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Deelnemers</title>
<meta charset="UTF-8">
</head>
<body>
<table>
<?php while($row = mysqli_fetch_assoc($result)) {
echo '<tr>' .
'<td>' . $row['ID'] . '</td>' .
'<td>' . $row['Name'] . '</td>' .
'<td>' . $row['deelnamenummer'] . '</td>' .
'</tr>';
?>
</table>
</body>
</html>
Toevoeging op 07/02/2015 21:57:50:
Oh ik ben te laat :-)
Gewijzigd op 07/02/2015 22:00:18 door Frank Nietbelangrijk
Onderstaand de code:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$db = mysql_connect ("localhost", "admin", "admin")
or die ("De verbinding met de database is mislukt!". mysql_error()); // foutmelding als niet gevonden
mysql_select_db ("admin", $db) //juiste databank selecteren
or die("Helaas kon de juiste databank niet worden geselecteerd!");
?>
$db = mysql_connect ("localhost", "admin", "admin")
or die ("De verbinding met de database is mislukt!". mysql_error()); // foutmelding als niet gevonden
mysql_select_db ("admin", $db) //juiste databank selecteren
or die("Helaas kon de juiste databank niet worden geselecteerd!");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test deelnamenummer</title>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT *
FROM test
ORDER BY ID ASC";
$resultaat = mysql_query($sql);
if (!is_resource($resultaat)) {
echo mysql_error(); // Er is een fout
}
?>
$sql = "SELECT *
FROM test
ORDER BY ID ASC";
$resultaat = mysql_query($sql);
if (!is_resource($resultaat)) {
echo mysql_error(); // Er is een fout
}
?>
<table>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
while ($rij = mysql_fetch_array($resultaat)) {
echo "<tr>";
echo "<td>".$rij['ID']."</td> <td>".$rij['achternaam']."</td> <td>".$rij['deelnamenummer']."</td>";
echo "</tr>";
}
?>
while ($rij = mysql_fetch_array($resultaat)) {
echo "<tr>";
echo "<td>".$rij['ID']."</td> <td>".$rij['achternaam']."</td> <td>".$rij['deelnamenummer']."</td>";
echo "</tr>";
}
?>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$res = je_favoriete_query_functie('SELECT ID FROM test ORDER BY achternaam');
$volgorde = 1;
while ($row = je_favoriete_associatieve_fetch_functie[($res)) {
je_favoriete_query_functie(
'UPDATE test
SET deelnamenummer = '.$volgorde.'
WHERE ID = '.$row['ID']
);
$volgorde++;
}
// ge_Update tabel uitlezen
$sql_1 = "SELECT *
FROM test
ORDER BY deelnamenummer";
$resultaat_1 = mysql_query($sql_1);
if (!is_resource($resultaat_1)) {
echo mysql_error(); // Er is een fout
}
?>
$res = je_favoriete_query_functie('SELECT ID FROM test ORDER BY achternaam');
$volgorde = 1;
while ($row = je_favoriete_associatieve_fetch_functie[($res)) {
je_favoriete_query_functie(
'UPDATE test
SET deelnamenummer = '.$volgorde.'
WHERE ID = '.$row['ID']
);
$volgorde++;
}
// ge_Update tabel uitlezen
$sql_1 = "SELECT *
FROM test
ORDER BY deelnamenummer";
$resultaat_1 = mysql_query($sql_1);
if (!is_resource($resultaat_1)) {
echo mysql_error(); // Er is een fout
}
?>
<table>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
while ($rij_1 = mysql_fetch_array($resultaat_1)) {
echo "<tr>";
echo "<td>".$rij_1['ID']."</td> <td>".$rij_1['achternaam']."</td> <td>".$rij_1['deelnamenummer']."</td>";
echo "</tr>";
}
?>
while ($rij_1 = mysql_fetch_array($resultaat_1)) {
echo "<tr>";
echo "<td>".$rij_1['ID']."</td> <td>".$rij_1['achternaam']."</td> <td>".$rij_1['deelnamenummer']."</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
Toevoeging op 08/02/2015 13:42:23:
Sorry voor de ongelukkige weergave maar heb nog niet in de gaten hoe ik de code in één veld kan zetten ipv op deze manier
Toevoeging op 08/02/2015 14:15:08:
Heb het probleem zelf gevonden en het resultaat is wat ik bedoelde.
Stom van me maar natuurlijk, maar het brein van een 70 jarige werkt niet meer zo snel.
Ik moest:
- je_favoriete_query_functie veranderen in: mysql_query
- je_favoriete_associatieve_fetch_functie in: mysql_fetch_array
Dus Thomas van den Heuvel BEDANKT!!
Gewijzigd op 08/02/2015 14:04:25 door Alexander Pushkin