Avatar billede djicep Nybegynder
03. december 2006 - 03:29 Der er 42 kommentarer og
1 løsning

Lige for at hører om det kan lade sig gøre ?

Hejsa Eksperter.

Kan man få php til at oprette en mappe når der bliver oprettet en bruger ? Altså en mappe til den på gældene bruger hvor de kan evt smide alle deres private billeder og sådan ? Så det ikke ligger i en stor pære vælling ?? :)

Nogen der kan fortælle mig hvordan?? hvis det kan ?

På forhånd tak :D
Avatar billede showsource Seniormester
03. december 2006 - 04:10 #1
Avatar billede djicep Nybegynder
03. december 2006 - 11:29 #2
Ahhh okay :) Tak showsource :)
Avatar billede djicep Nybegynder
03. december 2006 - 11:30 #3
<?php
mkdir("/path/to/my/dir", 0700);
?>

Lige for at hører ?? de sidste 0700 er det max størrelse på mappen eller hva ? :S
Avatar billede djicep Nybegynder
03. december 2006 - 11:38 #4
Kan man restricte den mappe som brugerne for tildelt? tænker på hvis de har userId 1 at mappen kun er for userId 1 ?
Avatar billede showsource Seniormester
03. december 2006 - 11:45 #5
0700 er hvilken chmod mappen bliver tildelt.
Og du skal nok bruge 0777 (alle må alt) da du vil gemme billeder m.m. som brugeren uploader.

Umiddelbart mener jeg det er scriptet som laver mappen, som er "ejer"
Men du bruger jo PHP til at bestemme hvilket dir brugeren skal uploade til, så det klares vel her?
Avatar billede djicep Nybegynder
03. december 2006 - 14:58 #6
Tjah ? Ved det ikke har aldrig prøvet det før ? Men det er jo bare lidt skod hvis der er 2 bruger der har et billede der hedder det samme ? :S

Så konflikter de vel ? hvis de begge hedder billede 1 jo ? :S Det var derfor jeg godt kunne tænke mig at der kunne laves en mappe for hver bruger ?

Så undgik man jo det problem vel ?
Avatar billede djicep Nybegynder
03. december 2006 - 15:00 #7
Det er fordi der skal være et alm galleri som alle kan se og så skal brugerne ha et privat galleri hvor de selv kan give folk lov til at se hvad der er i mappen (Private galleri).
Avatar billede showsource Seniormester
03. december 2006 - 16:10 #8
Det kan løses på lidt forskellige måder.
Evt. med et underdir "privat" i brugerens "publicdir"
Avatar billede djicep Nybegynder
03. december 2006 - 16:54 #9
Ahh oki. Tjah det må jeg se om jeg kan finde noget om :S For det skal da laves :)
Avatar billede djicep Nybegynder
03. december 2006 - 17:09 #10
Hey showsource.

Har lige en ting jeg gerne vil ha dig til at kigge på som jeg heller ikke lige fatter

Det er min function:
?

    function cAge($bDate)
    {
        $d = substr($bDate, 0, 2);
        $m = substr($bDate, 2, 2);
        $y = substr($bDate, 4, 4);
       
        $nuaar = date("Y", time());
        $numaa = date("m", time());
        $nudag = date("d", time());
                       
        $aar = $nuaar-$y;
       
        if( $numaa < $m )
        {
            $aar--;
            return $aar;
        }
       
        if( $numaa == $m && $nudag > $d )
        {
            $aar--;
            return $aar;
        }
       
       
        return $aar;
    }

Og til at hente den frem i profilen:

$age = trim($user[birthDate])!="" ?cAge($user[birthDate]):$ia;

Det jeg så ikke forstår er at når jeg trykker min fødselsdags dato ind 29071985 så regner den min alder rigtig ud altså 21 år, Når jeg så trykker kærestens alder ind 23121990 så påstår den at konen er 16 :S Men det skal den jo først efter den 23 ? Kan du fortælle mig hvorfor ?
Avatar billede djicep Nybegynder
03. december 2006 - 18:03 #11
Ah okay nu har jeg fattet hvorfor den laver fejlen ? Men ved ikke lige hvorfor den fejler ? Det er når der er nået med 3 så den 13 fejler den igen? :S
Avatar billede showsource Seniormester
03. december 2006 - 19:19 #12
Hmm, lavede engang denne:

function alder($var) {

    if(trim($var) !="") {
    $nu = date("d-m-Y", time());
    $split1 = explode("-", $var);
    $split2 = explode("-", $nu);

        if($split2[1] . $split2[0] >= $split1[1] . $split1[0]) {
        $antal_aar = ($split2[2]-$split1[2]);
        }else{
        $antal_aar = (($split2[2]-$split1[2])-1);
        }

    return $antal_aar ." &aring;r";

    }else{
    return "n/a";
    }

Men så skal det gemmes som f.eks. 27-12-1963

Anyway, er helt gået ovet til at bruge datetime felter for tidspunkter, så det i DB gemmes som f.eks.
2006-12-03 12:00:00

For en fødselsdato kan du bruge formatet DATE
2006-12-03

Derefter kan du i en query bruge flg. til at udregne alderen: (feltet heder "birth")

    $sql = "SELECT (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) as `alder` FROM `tabel`";
Avatar billede djicep Nybegynder
03. december 2006 - 19:28 #13
Hmm okay :S Forstår den ikke lige altså i DB under birthdate står der jo 29071985

Kan man ikke gå ind i det jeg har skrevet og rette ? :S Tror det ville være nemmere
Avatar billede djicep Nybegynder
03. december 2006 - 19:34 #14
function cAge($bDate)
    {
        $d = substr($bDate, 0, 2);
        $m = substr($bDate, 2, 2);
        $y = substr($bDate, 4, 4);
     
        $nuaar = date("Y", time());
        $numaa = date("m", time());
        $nudag = date("d", time());
                     
        $aar = $nuaar-$y;
     
        if( $numaa < $m )
        {
            $aar--;
            return $aar;
        }
     
        if( $numaa == $m && $nudag > $d )
        {
            $aar--;
            return $aar;
        }
     
     
        return $aar;
    }

Kan det være fordi nået af det står i forkert række følge ? for mig er det ligemeget om der skal stå i db 29071985 eller 19850729 eller hvordan det nu end er :P Eller 27-12-1963
Avatar billede showsource Seniormester
03. december 2006 - 20:48 #15
ehmm, hvis det er ligemeget for dig, så lav et nyt felt i tabellen som er et DATE felt.
Lad os kalde det "birth"
Og så prøv:

$hent = mysql_query("SELECT navn, ditgamlefelt FROM dintabel") or die (mysql_error());

while($vis = mysql_fetch_array($hent)) {

    $d = substr($vis["ditgamlefelt"], 0, 2);
    $m = substr($vis["ditgamlefelt"], 2, 2);
    $y = substr($vis["ditgamlefelt"], 4, 4);
    $new = $y ."-". $m ."-". $d;
   

mysql_query("UPDATE dintabel SET birth = '". $new ."' WHERE navn = '". $vis["navn"] ."'") or die (mysql_error());
}
Avatar billede showsource Seniormester
03. december 2006 - 20:50 #16
Så kan du

$hent = mysql_query("SELECT navn, (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) as alder FROM dintabel") or die (mysql_error());

while($vis = mysql_fetch_array($hent)) {
echo $vis["navn"] ." er ". $vis["alder"] ." år gammel<br />";
}
Avatar billede djicep Nybegynder
04. december 2006 - 13:53 #17
Jamen tror ikke det er det jeg skal bruge helt ? :S Men skal da selvfølgelig ikke kunne sige om det giver det som jeg skal bruge. Jeg skal bare ha en alder som skal placeres på den måde M21 = Mand 21. :S Men hvad gør det date felt? hvis jeg alligevel skal bruge den som jeg har altså birthdate hvor der står 29071985 :S
Avatar billede djicep Nybegynder
04. december 2006 - 16:01 #18
Ahhh Showsource. Nu tror jeg den er feset ind. Skulle lige ha en kammerat til at forklare hvad det var du mente :)

hehe
Avatar billede djicep Nybegynder
04. december 2006 - 16:07 #19
Nu har jeg så sat det ind men det virker ikke helt efter planen ? hehe
Avatar billede djicep Nybegynder
04. december 2006 - 16:56 #20
Oki nu virker det med at regne alderen ud ? :S Nu fatter jeg så bare ikke når jeg sætter en if sætning ind med f.eks som skal skrive ikke angivet hvis datoen = 0000-00-00 :S Der skriver den så bare 2006 :S
Avatar billede showsource Seniormester
04. december 2006 - 23:32 #21
Nu kan jeg jo ikke se din if, så jeg ved mindre end dig! :O)
Avatar billede djicep Nybegynder
04. december 2006 - 23:42 #22
Lige 2 sek :) Ved ud fra dit navn du vil ha koden jo :P

$bage = mysql_query("SELECT (YEAR(CURDATE())-YEAR(birthDate))-(RIGHT(CURDATE(), 5)<RIGHT(birthDate, 5)) as 'alder' FROM brugerprofiler WHERE userId='$id'") or die (mysql_error());
    $visb = mysql_fetch_array($bage);

        if( $visb[alder] == "0000-00-00" )
            $visb[alder] = "Ikke angivet.";
Avatar billede showsource Seniormester
04. december 2006 - 23:59 #23
aahh, ja, lige en detalje,
mit felt med fødselsdato, kan også ha' NULL som værdi.
Altså, er der ingen info om dato gemt, er værdien af feltet NULL

Og bruger så:
echo (!empty($vis->alder) ? $vis->alder ." &aring;r" : "n/a");

::OO))
Avatar billede djicep Nybegynder
05. december 2006 - 00:05 #24
A hvad for en nød ? :S dvs jeg skal gi den Null i myadmin ? og så skal jeg bruge echo ? :S
Avatar billede djicep Nybegynder
05. december 2006 - 00:09 #25
null betyder vel bare 0 ?? :S Så kan jeg vel bruge min sætning if($visb[alder] == "0")
$visb[alder] ="Ikke Angivet";
Avatar billede djicep Nybegynder
05. december 2006 - 00:09 #26
eller hva :O)
Avatar billede showsource Seniormester
05. december 2006 - 00:15 #27
Avatar billede showsource Seniormester
05. december 2006 - 00:17 #28
Nåh, nej det kan du IKKE
NULL er tom
mellemrum f.eks. er IKKE tom
Og 0 er ikke det samme som NULL

http://dev.mysql.com/doc/refman/5.1/en/problems-with-null.html
Avatar billede djicep Nybegynder
05. december 2006 - 00:18 #29
Ja okay ? Men er det helt forkert eller ? :D

Altså at jeg kan nu hvor date har en Null værdi bruge min if med == "0" i? eller ?? :D
Avatar billede djicep Nybegynder
05. december 2006 - 00:18 #30
Dooh :S okay så jeg skal altså bruge det echo der ??
Avatar billede djicep Nybegynder
05. december 2006 - 00:19 #31
Oki sådan som jeg forstår det så skal jeg også ændre i mysql_query nu hvor der er NULL med i ? eller er det forkert ??
Avatar billede showsource Seniormester
05. december 2006 - 00:28 #32
Forkert, ja!

Hvis feltet kan ha' en "NULL-værdi", (der er ikke noget input, ingen data gemt), så vil query også være tom. (query med alder)
Avatar billede showsource Seniormester
05. december 2006 - 00:29 #33
Og nu skal jeg godt nok i seng!
Avatar billede djicep Nybegynder
05. december 2006 - 00:32 #34
Ahhh okay :) På den måde..

Jamen tak for hjælpen indtil videre. Håber du vil hjælpe mig færdig imorgen ? for har haft en kammerat til at kigge på det ? Han fatter det heller ikke lige ? :S
Avatar billede djicep Nybegynder
07. december 2006 - 00:40 #35
Piv
Avatar billede showsource Seniormester
07. december 2006 - 05:25 #36
Fandt du ikke ud af det?
Avatar billede djicep Nybegynder
07. december 2006 - 15:14 #37
Ikke det med at få den til at vise Ikke angivet når der er 0000-00-00 i DB, men det går nok med det :)
Avatar billede showsource Seniormester
07. december 2006 - 15:19 #38
Du kan vel

if( strlen($visb["alder"]) > 2 ) {
$visb["alder"] = "Ikke angivet.";
}
Avatar billede showsource Seniormester
07. december 2006 - 15:21 #39
Og ellers, hvis du lader dit dato felt i Mysql ha' en NULL værdi pr. default, er det nok mest korrekt at bruge:

echo (!is_null($vis->alder) ? $vis->alder ." &aring;r" : "Ikke angivet.");
Avatar billede djicep Nybegynder
07. december 2006 - 15:23 #40
Nåååh jamen jeg har jo lavet den til en null :) Men jeg lader bare være med at skrive nået ? Laver bare sådan at de skal trykke deres alder ind før de opretter en bruger og tjekker om de er over 15 ? :)
Avatar billede showsource Seniormester
07. december 2006 - 15:26 #41
15 ?
Hvad er det for en side? :O)
Avatar billede djicep Nybegynder
07. december 2006 - 15:27 #42
En hud side :P
Avatar billede djicep Nybegynder
07. december 2006 - 15:29 #43
Ihvertfald en side for dem som er over 15 :P Og hvis de er under er det sQ på eget ansvar :P
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

IT-JOB

Capgemini Danmark A/S

Microsoft AI Solution Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operationscenter i Cyberdivisionen Hvidovre

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger analytisk stærk og erfaren medarbejder i Hvidovre