Avatar billede taager-kongen Nybegynder
10. juni 2003 - 18:45 Der er 22 kommentarer og
1 løsning

Tjek om kode er brugt

Hejza gutter .. dette er squ svært både at forklarer og lave !:
Har denne test, hvor indholdet af array senere vil blive skiftet ud:
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
den spilter den op:
$delt = split("\,", $bogstaver);
for($i=0; $i < sizeof($delt); $i++) {
og laver en kode:
$a = rand(1,9);
$b = rand(1,9);
$c = rand(1,9);
$d = rand(1,9);
$e = rand(1,9);
$code = $a .$b .$c .$d .$e;
Nu kommer det svære så... Det skal tjekke om koden (den der bliver randommet) er brugt før...
På en eller anden måde skal tjekke om $code er brugt før.. Ved at spilte $tjek, som indsamler alle koderne efterfult at komma.. Og hvis koden findes skal den lave en ny, som igen skal tjekkes !! Er i med.. den er lidt svært.. Det må ikke være to ens koder...
koden til at samle coder ser sådan ud:
$tjek .= "," .$code;

Kan i hjælpe mig?
Avatar billede detox Nybegynder
10. juni 2003 - 19:37 #1
For det første forstår jeg ikke din konstruktion med:
$a = rand(1,9);
$b = rand(1,9);
$c = rand(1,9);
$d = rand(1,9);
$e = rand(1,9);
$code = $a .$b .$c .$d .$e;
Du kan jo bare bruge:
$code = rand(10000,99999);
Dernæst kan du skifte: $tjek .= "," .$code; ud med: $tjek[] = $code; så er du fri for at splitte den op bagefter.
Så kunne du tjekke sådan her:
if (array_search($code,$kode) == NULL) {
$tjek[] = $code;
}
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 19:49 #2
er ikke helt med... vil du ikke samme sættee det for mig?
Avatar billede detox Nybegynder
10. juni 2003 - 20:06 #3
<?php
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
$delt = split("\,", $bogstaver);
$tjek[0] = 0;
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,99999);
if (array_search($code, $tjek) == NULL) {
$tjek[] = $code;
}
}
?>
----------------
Men hvilken rolle spiller bogstaverne?
Avatar billede detox Nybegynder
10. juni 2003 - 20:17 #4
du skal lige huske den her:
<?php
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
$delt = split("\,", $bogstaver);
$tjek[0] = 0;
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,99999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
else $i--;
}
?>
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 20:25 #5
tror der fejl i koden :(
Avatar billede detox Nybegynder
10. juni 2003 - 20:31 #6
Ja, jeg skulle lige se om du var vågen!
Mere korrekt er:
<?php
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
$delt = split("\,", $bogstaver);
settype($tjek, "array");
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,99999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
else $i--;
}
?>
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 20:34 #7
hvor skal jeg udskrive kodene? alt så det kommer til se sådan ud:
A 154125874
b 35768534

osv.?
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 20:37 #8
sådan:
<?php
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
$delt = split("\,", $bogstaver);
$tjek[0] = 0;
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,99999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
else $i--;
echo $delt[$i] ." " .$code ."<br>";
}
?>

Er du sikker på der ikke er to ens koder?
Avatar billede detox Nybegynder
10. juni 2003 - 20:43 #9
Ja, for så vidt at php funktionen array_search fungerer og det er jeg overbevist om at den gør :-)
Avatar billede detox Nybegynder
10. juni 2003 - 20:47 #10
Nej lav en løkke mere til udskrivning sådan her:
<?php
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z";
$delt = split("\,", $bogstaver);
settype($tjek, "array");
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,99999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
else print "Hov";
}
for($i=0; $i < sizeof($tjek); $i++) {
print $delt[$i] . " = " . $tjek[$i] . "</br>";
}
?>
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 21:26 #11
takker meget ! vil du have points?
Avatar billede detox Nybegynder
10. juni 2003 - 21:31 #12
Nevermind, jeg kan se du er ved at være flad c",)
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 21:51 #13
ok.. takker :)
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 21:52 #14
jeg fik et hov, ¨på et tidspunkt... kan det ikke løses med denne break?:
<?php
function kode() {
$code = "";
skriv = "";
global $skriv;
$klar = "ja";
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z,!,\",#,¤,%,&,/,(,),=,?,`,@,£,$,€,{,[,],},|,-,+,/,*,_,',^,~,>,<,§,½,1,2,3,4,5,6,7,8,9,0,/**/,;,.,:";
$delt = split("\,", $bogstaver);
settype($tjek, "array");
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
$klar = "nej";
}
If ($klar = "ja") {
$skriv = "";
for($i=0; $i < sizeof($tjek); $i++) {
$skriv .= $delt[$i] . " = " . $tjek[$i] . "</br>";
}
} else {
echo "hov";
break;
kode();
}
}
kode();
echo $skriv;
?>
Avatar billede taager-kongen Nybegynder
10. juni 2003 - 21:53 #15
sådan her:
<?php
function kode() {
$code = "";
skriv = "";
global $skriv;
$klar = "ja";
$bogstaver = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,u,v,w,y,z,!,\",#,¤,%,&,/,(,),=,?,`,@,£,$,€,{,[,],},|,-,+,/,*,_,',^,~,>,<,§,½,1,2,3,4,5,6,7,8,9,0,/**/,;,.,:";
$delt = split("\,", $bogstaver);
settype($tjek, "array");
for($i=0; $i < sizeof($delt); $i++) {
$code = rand(10000,999);
if (array_search($code, $tjek) == NULL) $tjek[] = $code;
$klar = "nej";
}
If ($klar = "ja") {
$skriv = "";
for($i=0; $i < sizeof($tjek); $i++) {
$skriv .= $delt[$i] . " = " . $tjek[$i] . "</br>";
}
} else {
echo "hov";
break;
kode();
}
}
kode();
echo $skriv;
?>
Avatar billede olebole Juniormester
11. juni 2003 - 03:29 #16
<ole>

detox >> array_search() fungerer ganske rigtig fint ... blot skulle du måske checke manualen for, hvordan den skal bruges  ;o)

At checke, om den returnerer NULL er gammel syntaks. Du skal i PHP 4.02 og senere bruge:
  if (array_search($code, $tjek) === false) $tjek[] = $code;

Eller du kan bruge in_array().

/mvh
</bole>
Avatar billede olebole Juniormester
11. juni 2003 - 03:43 #17
PS: Så er mt_rand() langt, langt bedre end rand(), der kun giver en dårlig tilnærmelse til et tilfældigt tal.
Det kan man i øvrigt også læse om i manualen. Den er slet ikke så tosset - den PHP-manual  ;o)
/mvh
Avatar billede detox Nybegynder
11. juni 2003 - 05:39 #18
Ok, du har helt ret mht manualen er et godt sted at starte. Men skal det nu være helt præcist er det først efter ver. 4.2.0 at syntaxen er lavet om.
Jeg har skrevet mt_rand() bag øret. c",)
Avatar billede taager-kongen Nybegynder
11. juni 2003 - 11:12 #19
olebole ---> vil du ikke lave det ind i mit eks? bebe :)
Avatar billede olebole Juniormester
12. juni 2003 - 16:48 #20
search_array() - koden kan du se, jeg skrev ovenfor.

Hvad angår mt_rand(), så ændrer du bare fra rand() til mt_rand(), sådan:
  $code = mt_rand(10000,999);

/mvh
Avatar billede detox Nybegynder
12. juni 2003 - 19:02 #21
Skal lige rettes til:
$code = mt_rand(10000,99999);
Avatar billede olebole Juniormester
13. juni 2003 - 03:45 #22
yups .... man skal passe på med copy/waste  ;o)
Avatar billede taager-kongen Nybegynder
23. august 2003 - 17:02 #23
lukker... lukker...
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