Avatar billede cpfrande Nybegynder
25. juli 2003 - 14:19 Der er 15 kommentarer og
1 løsning

Problem med genering af medlemsnummer.

Hej !

Jeg har fremstillet følgende kode (bemærk, uddrag fra min fil create_user.php):
http://php.frande.dk/kode.txt

Forklaring af koden:
Selve filen create_user.php opretter en "passiv" bruger.

Derefter genere den et medlemsnummer bestående af følgende algoritme:

LLL-SSSS-NNNNN

LLL = Landkode (i dette tilfælde 045 for Danmark)
SSSS = Serie (Serier findes i min database i tabellen serie)
NNNNN = Nummer (Skal være et nummer større end det højeste nummer lavet).

Når jeg forsøger at oprette en bruger første gang, udskrives følgende fejl, hvorefter resten af siden loades korrekt:
Warning: Missing argument 1 for find_serie() in /home/httpd/vhosts/files.esports-union.dk/httpdocs/site/create_user.php on line 45

Linie 45 er linie 1 i tidligere refereret fil.
Så vidt jeg forstår er problemet at den mangler en argument til funktionen, men jeg mener også, at jeg tildeler funktionen et argument.

Jeg kan ikke selv finde, hvor problemet er.

Desuden vil jeg også gerne hører om I har andre forslag til kodningen af dette.

Det skal kunne:
Tildele brugeren lavest passive serie. Serien må ikke være fyldt med numre (en serie kan maksimalt have 99999 registrere medlemmer).
Er det tilfældet skal den finde næste laveste passive serie og tjekke igen osv osv.

Er det tilfældet, at serien kan have flere numre i sig skal man bagefter genere lavest mulige nummer til.
Dvs. at, hvis sidste nummer skrevet i databasen er 4059 og at det er det største nummer i serien lægges der bare et nummer til.

Den skal tjekke både om serien er gyldig og om nummeret er gyldigt og ikke i forvejen er brugt.

Håber I forstår min lange forklaring, ellers er I meget velkomne til at stille spørgsmål.

På forhånd tusind tak !

Mvh.
frande
Avatar billede erikjacobsen Ekspert
25. juli 2003 - 15:25 #1
Mon ikke din fejl med agumentet er i linien:

if (!isset($user_serie)) { find_serie(); }
Avatar billede Slettet bruger
25. juli 2003 - 15:50 #2
Eller

function find_serie($where = "")

istedet for

function find_serie($where)
Avatar billede cpfrande Nybegynder
25. juli 2003 - 16:43 #3
Hej igen !

erikjacobsens svar fik rettet problemet.
Nu er der dog istedet opstået et nyt problem.

Denne gang sætter den ikke variablerne $user_serie og $user_memID

Hvad skyldes dette? Kan nemlig ikke selv se det.
I må gerne lave som svar, sådan jeg senere hen kan fordele pointene.

På forhånd tak !

Mvh.
frande
Avatar billede cpfrande Nybegynder
01. august 2003 - 10:35 #4
Ingen forslag til dette ??
Avatar billede erikjacobsen Ekspert
01. august 2003 - 10:58 #5
Lidt svært, når koden er forsvundet.
Avatar billede cpfrande Nybegynder
01. august 2003 - 11:53 #6
Tror der er sket en fejl, men koden er atter oppe igen.
Avatar billede erikjacobsen Ekspert
01. august 2003 - 11:58 #7
Nedenstående funktion er fejlbehæftet. Du bruger så vidt jeg kan se
globale variabler, $user_serie, uden at sige
  global $user_serie;

og hvor kommer $serie_check fra?



function find_serie($where) {
    if ($where == "" || !$where || $where == "0") { $where_result = "WHERE type='passiv'"; }
    else { $where_result = $where; }
    $my_res_findserie = mysql_query("SELECT serie FROM serier $where_result ORDER BY serie ASC LIMIT 1");
    $my_db_findserie = mysql_fetch_array($my_res_findserie);

    check_serie($my_db_findserie[serie],$where_result);

    if ($serie_check == "1") {
        $user_serie = $my_db_findserie[serie];
    }
}
Avatar billede cpfrande Nybegynder
01. august 2003 - 12:26 #8
Hvordan mener du, jeg skal bruge det global $user_serie; ??
Forstår ikke helt princippet i det.

Min $serie_check skulle gerne komme ud fra check_serie (ved ikke helt om man kan, men har ikke arbejdet med funktionerne på denne måde før).
Avatar billede erikjacobsen Ekspert
01. august 2003 - 12:39 #9
Måske ikke lige på denne måde ;)

Variabler der ikke står i parameterlisten til en funktion i PHP kan ikke
refereres i en funktion. Derfor global.
Avatar billede cpfrande Nybegynder
02. august 2003 - 11:33 #10
Okey, det sidste forstod jeg ikke helt.

Vil det sige, at jeg skal skrive global $user_serie; efter $user_serie = $my_db_findserie[serie];
og kan jeg hente $serie_check fra min check_serie() ??

Er der et link til noget vedr. det global halløj der ?

På forhånd tak
Avatar billede erikjacobsen Ekspert
02. august 2003 - 14:44 #11
Avatar billede cpfrande Nybegynder
03. august 2003 - 12:12 #12
Mange tak for hjælpen, vil jeg kigge nærmere på.

Ønsker du pointene, bedes du lave et svar :)

På forhånd tak !
Avatar billede erikjacobsen Ekspert
03. august 2003 - 13:24 #13
Så virker det bare ??
Avatar billede cpfrande Nybegynder
03. august 2003 - 14:33 #14
Jeg vil bruge nogle dage på, at sætte mig ind i det og måske udviklet en anderledes kodning på det jeg skal have lavet.

Desuden er mit egentlig spørgsmål blevet besvaret.
Avatar billede erikjacobsen Ekspert
03. august 2003 - 16:07 #15
ok da
Avatar billede cpfrande Nybegynder
03. august 2003 - 18:08 #16
Takker for hjælpen til jer alle !

Forsat god sommer ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester