kolom ophogen met waarde 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruard Weskriphuis

Ruard Weskriphuis

01/02/2017 10:41:05
Quote Anchor link
Mijn doel met dit script is de kolom tel ophogen dmv $tel.
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)
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
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>';

?>
 
PHP hulp

PHP hulp

23/12/2024 02:58:44
 
- SanThe -

- SanThe -

01/02/2017 10:44:06
Quote Anchor link
Je moet hiervoor een session gebruiken.
 
Ruard Weskriphuis

Ruard Weskriphuis

01/02/2017 11:09:38
Quote Anchor link
als dat de enige mogelijkheid is ga ik dat doen.

Bedankt voor de tip SanThe
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/02/2017 13:36:23
Quote Anchor link
Waarom moet je hier een sessie voor gebruiken? Een sessie is slechts een tijdelijke mogelijkheid om variabelen op te slaan en alleen per gebruiker apart. Dit is lang niet altijd de oplossing.

Anyway je kunt een kolom heel simpel laten optellen met de volgende query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE tabel SET tel = tel + 1 WHERE uniek_id = ?
 
Obelix Idefix

Obelix Idefix

01/02/2017 14:56:31
Quote Anchor link
Waarvoor wordt tel gebruikt?
 
Thomas van den Heuvel

Thomas van den Heuvel

01/02/2017 14:58:00
Quote Anchor link
Ik neem aan dat die "tel" kolom bedoeld is voor het bepalen van een volgorde? En dat, als je een record toevoegt, deze achter aan de lijst wordt toegevoegd met het juiste volgnummer?

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
 
Ivo P

Ivo P

01/02/2017 15:07:44
Quote Anchor link
een trigger na de insert query zou ook een optie zijn.

Maar de vraag blijft dan ook wat er moet gebeuren als "tel" niet langer een aaneengesloten reeks meer bevat.
 
Thomas van den Heuvel

Thomas van den Heuvel

01/02/2017 15:23:41
Quote Anchor link
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 :).
 



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.