Later eenTabel Nummer toevoegen in databank

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alexander Pushkin

Alexander Pushkin

07/02/2015 21:13:47
Quote Anchor link
Ik heb het volgende probleem met een databank waar ik geen oplossing voor weet. Wie kan me helpen.
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.
 
PHP hulp

PHP hulp

16/11/2024 17:35:12
 
Pipo Clown

Pipo Clown

07/02/2015 21:23:00
Quote Anchor link
Lees de tabel uit en plaats ieder record in een array.
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.
 
Alexander Pushkin

Alexander Pushkin

07/02/2015 21:31:42
Quote Anchor link
Da's nou net mijn probleem. Ik kan niet zo goed met arrays overweg en hoe zet ik een record in een array
Zou je dat misschien in code kunnen schrijven. Zou je zeer erkentelijk zijn.
Mvg.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/02/2015 21:44:50
Quote Anchor link
Je hebt niet eens per se een hulparray nodig.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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++;
}

?>


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).
 
Alexander Pushkin

Alexander Pushkin

07/02/2015 21:47:54
Quote Anchor link
Super, ik ga het morgen uitproberen.
Hartstikke bedankt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2015 21:54:49
Quote Anchor link
Met één query kun je de tabel ophalen uit de database en direct in de gewenste volgorde hebben.
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)
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
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>




Toevoeging op 07/02/2015 21:57:50:

Oh ik ben te laat :-)
Gewijzigd op 07/02/2015 22:00:18 door Frank Nietbelangrijk
 
Alexander Pushkin

Alexander Pushkin

08/02/2015 13:26:24
Quote Anchor link
Ik heb nu het volgende opgezet, maar krijg deze foutmelding "Fatal error: Call to undefined function je_favoriete_query_functie() in N:\xampp\htdocs\ROOT\test_1.php on line 37". Wat moet ik bij de vetgerukte weergaven in de code anders invullen? Hoe los ik dit nu op?

Onderstaand de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!");
?>

<!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)
PHP script in nieuw venster Selecteer het PHP script
1
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
    }
?>

<table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    while ($rij = mysql_fetch_array($resultaat)) {
        echo "<tr>";
        echo "<td>".$rij['ID']."</td>&nbsp;<td>".$rij['achternaam']."</td>&nbsp;<td>".$rij['deelnamenummer']."</td>";
        echo "</tr>";
    }

    ?>

</table>
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
<?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
        }
?>

<table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while ($rij_1 = mysql_fetch_array($resultaat_1)) {
    echo "<tr>";
    echo "<td>".$rij_1['ID']."</td>&nbsp;<td>".$rij_1['achternaam']."</td>&nbsp;<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
 



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.