select grootste die begint met jaar

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Veenstra

Jan Veenstra

16/07/2008 10:24:00
Quote Anchor link
Heey,

ik ben bezig met een contacten adminstratie applicatie.
ieder contact heeft een code. De eerste 2 cijfers zijn het jaar (08) en de overige 5 het nummer, eerste = 1, tweede = 2, ...
nu moet er automatisch een nieuwe bedacht worden en bnij 2009 moet hij weer op 1 springen.

Nu heb ik het tweede probleempje. Als ik de contactcode beginnent met een 0 op slaan verdwijnt de nul als ik int gebruik, ik heb nu varchar maar das een beetje omslagtig...

Gr Johan
 
PHP hulp

PHP hulp

20/04/2024 09:34:03
 
Emmanuel Delay

Emmanuel Delay

16/07/2008 12:48:00
Quote Anchor link
Ik denk dat het beter is dat je die code uit elkaar trekt.

Zet je jaar in een veld, zet die volgende cijfers in een ander veld.

Zo kan je bv. onmiddellijk sorteren op jaar.

Het is geen enkel probleem om strings terug aan mekaar te plakken. Het is al net iets moeilijker om strings uit mekaar te trekken.

Niet dat het veel uitmaakt, maar ik zou het jaar in 4 cijfers in de db zetten. Daarna kan je nog doen wat je wil.

Johan Versteeg schreef op 16.07.2008 10:24:
... De eerste 2 cijfers zijn het jaar (08) en de overige 5 het nummer, eerste = 1, tweede = 2, ...
nu moet er automatisch een nieuwe bedacht worden en bnij 2009 moet hij weer op 1 springen.


Dit zal je toch wat beter moeten uitleggen.
 
Frank -

Frank -

16/07/2008 21:30:00
Quote Anchor link
Wanneer je bv. PostgreSQL gebruikt, kun je zelf een datatype aanmaken. Dan kun je dus ook dit soort dingen laten maken, geen enkel probleem. Het begint in elk geval met een sequence en een stored procedure.
 
Jan Veenstra

Jan Veenstra

16/07/2008 22:28:00
Quote Anchor link
Een watte:p
is het niet mogelijk om alle codes uit te leven die beginnen met jaar(vanuit php.

Dis zoiets als

$Sql = "Select * WHERE Contactcode = " . date(Y) . "*";
dat kan met LIKE of nie...
 
Emmanuel Delay

Emmanuel Delay

17/07/2008 12:09:00
Quote Anchor link
Leg eerst eens deftig uit wat er in die code precies moet komen, na die twee cijfers die het jaar moeten voorstellen.
 
- SanThe -

- SanThe -

17/07/2008 13:28:00
Quote Anchor link
Voor die code maak je een apart veld (varchar 7) bij je contacten.
Je maakt een nieuwe tabel aan voor het bijhouden van het jaar en het nummer dat samen die code maakt.
CREATE TABLE `tellerkolom` (
`jaar` YEAR NOT NULL ,
`nummer` INT NOT NULL
) TYPE = MYISAM ;
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$server        = "****";
$user        = "****";
$password    = "****";
$database    = "****";

mysql_connect($server, $user, $password);
mysql_select_db($database);

function
check_nieuw_jaar()
{

    $sql_sel = "SELECT jaar, nummer FROM tellerkolom";
    $res_sel = mysql_query($sql_sel);
    if(!$res_sel)
    {

        return 'Select Error';
    }

    else
    {
        if(mysql_num_rows($res_sel) == 0)
        {

            // Hier is er nog geen record dus wordt er een gemaakt met de beginwaarden
            $sql_ins = "INSERT INTO tellerkolom (jaar, nummer) VALUES (" . date("Y") . ", 1)";
            $res_ins = mysql_query($sql_ins);
            if(!$res_ins)
            {

                return 'Insert Error';
            }
        }

        else
        {
            $row = mysql_fetch_assoc($res_sel);
            if($row['jaar'] != date("Y"))
            {

                // Hier is het blijkbaar een nieuw jaar dus resetten en het jaar verhogen
                $sql_upd = "UPDATE tellerkolom SET jaar = " . date("Y") . ", nummer = 1";
                $res_upd = mysql_query($sql_upd);
                if(!$res_upd)
                {

                    return 'Update Error';
                }
            }
        }
    }

    return false;
}

function
nieuwe_code()
{

    $sql_sel = "SELECT jaar, nummer FROM tellerkolom";
    $res_sel = mysql_query($sql_sel);
    if(!$res_sel)
    {

        return 'Select Error';
    }

    else
    {
        $row = mysql_fetch_assoc($res_sel);
        // Hier wordt de code samengesteld
        return substr($row['jaar'], 2) . str_pad($row['nummer'], 5, "0", STR_PAD_LEFT);
    }
}


function
verhoog_nummer()
{

    // Hier wordt de teller met 1 verhoogd
    $sql_upd = "UPDATE tellerkolom SET nummer = nummer + 1";
    $res_upd = mysql_query($sql_upd);
    if(!$res_upd)
    {

        return 'Update Error';
    }

    return false;
}


$fout = check_nieuw_jaar();
if($fout)
{

     echo $fout;
}


// Hier komt je script te staan.
// Als je een nieuw contact invoert haal je zijn/haar code op met

$code = nieuwe_code();

// Dan insert je dat contact met die code
// En alléén als de insert is gelukt (checken dus) doe je dit

if('het inserten is gelukt')
{

    $fout = verhoog_nummer();
    if($fout)
    {

         echo $fout;
    }
}

  
?>

Edit: Beetje commentaar er bij gezet
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Jan Veenstra

Jan Veenstra

17/07/2008 21:11:00
Quote Anchor link
het is gelukt.
wat dacht je hiervan..;)

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
    $Jaar = date('y');
  $Sql = "SELECT * FROM persoonlijke_gegevens WHERE Contactcode Like '" . $Jaar . "%' ORDER BY Contactcode DESC LIMIT 0 , 1";
    // Als er errors zijn
  if(!$Res = mysql_query($Sql)) { trigger_error(mysql_error().'<br />In query: '.$Sql);}
    // Als er GEEN velden gevonden zijn
  elseif(mysql_num_rows($Res) == 0)
    {
      echo $Jaar . "00001";
    }
  else
  {
         while($Row = mysql_fetch_assoc($Res))
    {
   //   echo $Row['Contactcode'] ." <br>";
            $Contactcode = $Row['Contactcode'] + 1;    
      }
      If($Jaar < 10)
      {
           echo "0" . $Contactcode;    
      }
      else
      {
           echo $Contactcode;    
      }
  }
 



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.