16. november 2006 - 13:43
Der er
11 kommentarer og 1 løsning
tilføje værdier i et array der er lavet
Jeg har dette script... <Perl> use DBI; my ($sth, $dbh, $domain, $domainID, $created, $sql, $sqlsa); $dbh = DBI->connect("DBI:xxxx:localhost","xxxx","xxxx"); $sth = $dbh->prepare("SELECT domainID, domain, created FROM domain ORDER BY domainID ASC"); $sth->execute(); while (($domainID, $domain, $created) = $sth->fetchrow_array()) { if($created == 0) { system("/bin/mkdir /home/$domain"); system("/bin/mkdir /home/$domain/www"); system("/bin/mkdir /home/$domain/ErrorLog"); system("/bin/cp /home/index.php /home/$domain/www/index.php"); system("/bin/chown apache:apache -R /home/$domain"); $sql = $dbh->prepare("UPDATE domain SET created = 1 WHERE domainID = $domainID"); $sql->execute(); } push @{ $VirtualHost{'*:80'} }, { ServerName => "$domain", ServerAdmin => "postmaster@$domain", ServerAlias => "www.$domain", DocumentRoot => "/home/$domain/www", ErrorLog => "/home/$domain/ErrorLog/$domain-error_log", CustomLog => qq{"|/usr/sbin/cronolog /websitelog/${domain}_access_log.\%Y-\%m-\%d" combined}, }; } $sth->finish(); $dbh->disconnect(); </Perl> og det virker også... men hvordan tilføjer jeg ServerAlias fra en anden mysql tabel, til det her array, så de kommer ind og ligge sammen med de andre ServerAlias... Jeg kan sagtens lave forbindelse og det hele til db'en, men jeg ved bare ikke hvad den smarteste måde er at tilføje dem på..
Annonceindlæg fra Barco
16. november 2006 - 14:56
#1
er der en sammenhæng mellem domain-.tabellen og den som indeholder serveralias ? I givet fald er det vel et spørgsmål om at joine de to tabeller i sql-sætningen
16. november 2006 - 15:05
#2
Ja... domainDI er PK i domain og FK i serverAlias Men vil jeg ikke får flere resultater ud, end kun et per domæne som jeg gør nu f.eks. hvis der er 4 server aliaser der passer til et domæne, får jeg vil 5 resultater ud.. domænet og de 4 serveraliaser, men jeg er jo kun interesseret i at den laver en virtualhost og sætter 4 serveraliaser i netop det array
16. november 2006 - 15:12
#3
ellers skal man lave endnu en forbindelse til dben og så hive de aliaser ud i en streng som du kan lægge ned i push-kommandoen.
16. november 2006 - 15:22
#4
du tænker på at lave sådan en streng her... $SAstr = "ServerAlias => \"xxxx.xxxx.xx\", ServerAlias => \"yyy.xxxx.xx<"," I dur eller hvad
16. november 2006 - 15:23
#5
og så sætte det ind i push { ServerName => "$domain", ServerAdmin => "postmaster@$domain", ServerAlias => "www.$domain", $SAstr DocumentRoot => "/home/$domain/www", ErrorLog => "/home/$domain/ErrorLog/$domain-error_log", CustomLog => qq{"|/usr/sbin/cronolog /websitelog/${domain}_access_log.\%Y-\%m-\%d" combined}, };
16. november 2006 - 20:48
#6
jeps
16. november 2006 - 21:31
#7
Det prøvede jeg, men den laver fejl i det.. Prøvede også: $SAstr = 'ServerAlias => "xxxx.xxxx.xx", ServerAlias => "yyy.xxxx.xx",' Og andre varianter, ved ikke om der er andre forslag
16. november 2006 - 21:38
#8
hvordan laver den fejl i det ?
16. november 2006 - 21:41
#9
jeg ville gætte på at det skulle se nogenlunde sådan ud: my ($sth1, $sql1, $alias); $sth = $dbh->prepare("SELECT alias FROM alias where domainid = $domainID"); $sth->execute(); while (($alias) = $sth->fetchrow_array()) { $SAstr .= 'ServerAlias => "$alias" }
17. november 2006 - 11:50
#10
Lavede den her... ikke kønt, men det virker... <Perl> use DBI; my ($sth, $dbh, $domain, $domainID, $created, $sql, $sqlsa, $alias, $path); $dbh = DBI->connect("DBI:mysql:xxx:xxx","xxx","Xxx"); $sth = $dbh->prepare("SELECT domainID, domain, created FROM domain ORDER BY domainID ASC"); $sth->execute(); while (($domainID, $domain, $created) = $sth->fetchrow_array()) { if($created == 0) { system("/bin/mkdir /home/$domain"); system("/bin/mkdir /home/$domain/www"); system("/bin/mkdir /home/$domain/ErrorLog"); system("/bin/cp /home/index.php /home/$domain/www/index.php"); system("/bin/chown apache:apache -R /home/$domain"); $sql = $dbh->prepare("UPDATE domain SET created = 1 WHERE domainID = $domainID"); $sql->execute(); } push @{ $VirtualHost{'*:80'} }, { ServerName => "$domain", ServerAdmin => "postmaster@$domain", ServerAlias => "www.$domain", DocumentRoot => "/home/$domain/www", ErrorLog => "/home/$domain/ErrorLog/$domain-error_log", CustomLog => qq{"|/usr/sbin/cronolog /websitelog/${domain}_access_log.\%Y-\%m-\%d" combined}, }; $sqlsa = $dbh->prepare("SELECT domain, path FROM serveralias WHERE domainID =" . $domainID); $sqlsa->execute(); while (($alias, $path) = $sqlsa->fetchrow_array()) { push@{ $VirtualHost{'*:80'} }, { ServerName => $alias, ServerAdmin => "postmaster@$domain", DocumentRoot => $path, ErrorLog => "/home/$domain/ErrorLog/$domain-error_log", CustomLog => qq{"|/usr/sbin/cronolog /websitelog/${domain}_access_log.\%Y-\%m-\%d" combined}, }; } } $sth->finish(); $dbh->disconnect(); </Perl>
17. november 2006 - 13:08
#11
well - du har vel lavet det meste selv så pointene er vel dine :-)
21. november 2006 - 17:33
#12
Så lukker jeg
Kurser inden for grundlæggende programmering