kolom ophogen met waarde 1
Dus ieder nieuw record dat wordt aangemaakt heeft een kolom waarin vanaf 1 t/m n wordt geteld.
bijv.
rec ----- naam ---- email ------- tel --- uniek_id ---
25 ------ jan [email protected] --1-----1234adb
26 ------gijs [email protected] --2-----5645poi
27 -----alex [email protected] --3-----1893uyr
28 ------desi [email protected] --4-----82hju93
29 ----marjan [email protected] --5-----99eee88
30 -----femke [email protected] --6-----22tuk77
het lukt me niet, iedere refresh blijft de waarde van kolom tel op 1 staan.
Is mijn intentie mogelijk zonder de kolom tel opnieuw uit te lezen, of moet ik gebruik maken van $_SESSION of fopen/fwrite?
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
35
36
37
38
39
40
41
42
43
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
35
36
37
38
39
40
41
42
43
<?php
// $uniek_id wordt random toegewezen
$servername = "localhost";
$username = "naam";
$password = "passwoord";
$dbname = "gegevensbank_naam";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (empty($tel)) {
$tel='';
}
if ($tel == '') {
$tel ='1';
} else {
$tel++ ;
$stmt = $conn->prepare('UPDATE tabel SET tel = ? WHERE uniek_id = ? ');
$stmt->bind_param("is", $tel, $uniek_id);
$stmt->execute();
}
echo $tel;
echo '<br>';
?>
// $uniek_id wordt random toegewezen
$servername = "localhost";
$username = "naam";
$password = "passwoord";
$dbname = "gegevensbank_naam";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (empty($tel)) {
$tel='';
}
if ($tel == '') {
$tel ='1';
} else {
$tel++ ;
$stmt = $conn->prepare('UPDATE tabel SET tel = ? WHERE uniek_id = ? ');
$stmt->bind_param("is", $tel, $uniek_id);
$stmt->execute();
}
echo $tel;
echo '<br>';
?>
Je moet hiervoor een session gebruiken.
Bedankt voor de tip SanThe
Anyway je kunt een kolom heel simpel laten optellen met de volgende query
Waarvoor wordt tel gebruikt?
De enige manier om dit correct te doen lijkt mij door het aantal actieve records te tellen. Het zou namelijk mogelijk in de toekomst kunnen gebeuren dat:
- er statussen (active, deleted, noem het maar op) worden toegevoegd op grond waarvan een gebruiker "bestaat", en ik neem aan dat de "tel" kolom alleen van toepassing is op "bestaande" gebruikers?
- er gebruikers verwijderd worden (of de status veranderd wordt, zoals hierboven beschreven) zodat de "tel" kolom voor een of meer gebruikers bijgewerkt dient te worden
Het tellen en updaten zou dan in één ondeelbare actie moeten verlopen, dus hier zul je een database-transactie voor moeten gebruiken. Hier is het op zijn beurt voor nodig dat je de InnoDB database-engine gebruikt. Hoe luidt het creatie-statement van deze tabel (SHOW CREATE TABLE tabel)?
Misschien is het ook handig als je uitlegt wat je precies met deze kolom wilt bereiken / hoe je deze gebruikt. Nu is het gissen naar de aanpak - we zijn nu namelijk gedrag aan het bepalen zonder dat we precies weten hoe dit gedrag nou eigenlijk luidt...
EDIT: Wat @Obelix zegt dus :p
Gewijzigd op 01/02/2017 14:59:36 door Thomas van den Heuvel
Maar de vraag blijft dan ook wat er moet gebeuren als "tel" niet langer een aaneengesloten reeks meer bevat.
Ivo P op 01/02/2017 15:07:44:
Maar de vraag blijft dan ook wat er moet gebeuren als "tel" niet langer een aaneengesloten reeks meer bevat.
Of beter: wat er allemaal gedaan moet worden om te garanderen dat dit een aaneengesloten reeks (is en) blijft :).