Avatar billede bacardil Nybegynder
09. januar 2003 - 12:13 Der er 11 kommentarer og
1 løsning

Oversat fra PHP til Perl

Er der nogen der kan hjælpe med at oversætte 10linierfra php til Perl?
Avatar billede bacardil Nybegynder
09. januar 2003 - 12:14 #1
Keyboardet drillet lidt så her kommer den igen..

Er der nogen der kan hjælpe med at oversætte 10 linier fra php til Perl?
Avatar billede otis Nybegynder
09. januar 2003 - 12:14 #2
Smid linierne, så prøver vi :)
Avatar billede bacardil Nybegynder
09. januar 2003 - 18:15 #3
mysql_connect("host","db","password");
mysql_select_db("db");
$Adato = time()-(3*60);
$Bdato = time()+(2*60);
$sql1 = "SELECT * FROM ml_ListBrev WHERE sendDato > '$Adato' AND sendDato < '$Bdato' AND afsendt = 'no'";

$q1 = mysql_query($sql1);

if (mysql_num_rows($q1) > 0) {
            while ($r1 = mysql_fetch_array($q1)) {
                $mailformat = $r1[mailFormat];
                $afsendnavn = stripslashes($r1[afsendNavn]);
                $afsendemail = stripslashes($r1[afsendEmail]);
                $mailemne = stripslashes($r1[mailEmne]);
                $mail = stripslashes($r1[Mail]);
                $sql2 = "SELECT mana.PayUser as PayUser FROM ml_Managers mana , ml_ListBrev brev, ml_Lister lister WHERE brev.listeID= lister.id AND lister.CustomerID = mana.id AND brev.id =  '$r1[id]'";
                $q2 = mysql_query($sql2);
                $r2 = mysql_fetch_array($q2);
                $t = $r2[PayUser];
            if ($mailformat == "text/plain") {
                $mail = strip_tags($mail);
                $mail = preg_replace("/&nbsp;/"," ",$mail);
                $rekl = "\n--[ANNONCE]---------------------\n";
            } else {
                $rekl = "<br>--[ANNONCE]---------------------<br>";
                $mail = nl2br($mail);
            }
            $q = mysql_query("SELECT reklameText as text FROM ml_reklame ORDER BY RAND() LIMIT 1");
            $r = mysql_fetch_array($q);
            extract($r);
            $rekl .= nl2br(stripslashes($text));
            if ($t == "no") {
                $mail = $mail.$rekl;
            } else {
                $mail =  $mail;
            }
            $headers = "FROM: $afsendnavn <$afsendemail>\n";
            $headers .= "Content-Type:$mailformat\n";
            $headers .= "Content-Transfer-Encoding: 8bit\n";
            $headers .= "Return-Path: <$r1[fejlmodtager]>\n";
            $headers .= "X-Priority: 3\n";
            $sql2 = "SELECT email FROM ml_ListUsers WHERE mailListID = '$r1[listeID]' AND valid = 'yes'";
            $q2 = mysql_query($sql2);
            while ($r2 = mysql_fetch_array($q2)) {
                mail($r2[email], $mailemne, $mail, $headers); // ordrebekræftelse sendes til brugeren
            }
            mysql_query("UPDATE ml_ListBrev SET afsendt = 'yes' WHERE id = '$r1[id]'");
        }
}
?>
Avatar billede thomasledet Nybegynder
09. januar 2003 - 21:25 #4
10 linier kun? hvilke 10 af dem så? :P
Avatar billede bacardil Nybegynder
10. januar 2003 - 00:33 #5
Så måske et par linier mere ;)
Avatar billede _darkstar_ Nybegynder
10. januar 2003 - 00:40 #6
For 15 points vil jeg gerne oversætte disse linier:

            $headers = "FROM: $afsendnavn <$afsendemail>\n";
            $headers .= "Content-Type:$mailformat\n";
            $headers .= "Content-Transfer-Encoding: 8bit\n";
            $headers .= "Return-Path: <$r1[fejlmodtager]>\n";
            $headers .= "X-Priority: 3\n";
            $sql2 = "SELECT email FROM ml_ListUsers WHERE mailListID = '$r1[listeID]' AND valid = 'yes'";

Oversættelsen er:

            $headers = "FROM: $afsendnavn <$afsendemail>\n";
            $headers .= "Content-Type:$mailformat\n";
            $headers .= "Content-Transfer-Encoding: 8bit\n";
            $headers .= "Return-Path: <$r1[fejlmodtager]>\n";
            $headers .= "X-Priority: 3\n";
            $sql2 = "SELECT email FROM ml_ListUsers WHERE mailListID = '$r1[listeID]' AND valid = 'yes'";

Hvis du vil give noget mere, kan vi snakke om resten :-)
Avatar billede bacardil Nybegynder
10. januar 2003 - 00:43 #7
Så får du 30 point for at oversætte det :o) Sig så ikke at jeg er fedtet..
Avatar billede mfalck Praktikant
10. januar 2003 - 09:58 #8
her er et "første skud" på en konvertering .. jeg har ikke db så jeg har ikke kunnet tjekke om det kører :-)

Men 30 points er aligevel billigt sluppet :-)


#!/usr/bin/perl
use DBI;
use Net::SMTP;



    my ($dbh, $database,$databaseuser,$databasepassword);
    $database="host";
    $databaseuser="db";
    $databasepassword="password";
  $dbh = DBI->connect("dbi:mysql:$database","$databaseuser","$databasepassword") or die("Cannot connect:  $DBI::errstr");


my $Adato = time()-(3*60);
my $Bdato = time()+(2*60);
my $sql1 = "SELECT
                        mailFormat,afsendNavn,afsendEmail,
                        mailEmne,Mail,fejlmodtager,id,listeID
                        FROM ml_ListBrev
                        WHERE sendDato > '$Adato'
                        AND sendDato < '$Bdato'
                        AND afsendt = 'no'";

my $q1 = $dbh-> prepare($sql1) || print "prepare failed($DBI::errstr)\n";;
my $rv = $sth->execute;
            while (@r1 = $q1->fetchrow_array() ) {
                my $mailformat = $r1[0];
                my $afsendnavn = stripslashes($r1[1]);
                my $afsendemail = stripslashes($r1[2]);
                my $mailemne = stripslashes($r1[2]);
                my $mail = stripslashes($r1[3]);
                my $sql2 = qq{SELECT mana.PayUser as PayUser FROM ml_Managers mana , ml_ListBrev brev, ml_Lister lister WHERE brev.listeID= lister.id AND
lister.CustomerID = mana.id AND brev.id =  '$r1[0]'};
                        $t = $r2[0];
            if ($mailformat == "text/plain") {
                $mail = strip_tags($mail);
                $mail = preg_replace("/&nbsp;/"," ",$mail);
                $rekl = "\n--[ANNONCE]---------------------\n";
            } else {
                $rekl = "<br>--[ANNONCE]---------------------<br>";
                $mail = nl2br($mail);
            }

        $sql = "SELECT reklameText as text FROM ml_reklame ORDER BY RAND() LIMIT 1";
            my $q = $dbh-> prepare($sql) || print "prepare failed($DBI::errstr)\n";;
            $sth->execute;
        @r = $sth->fetchrow_array;
           
            $text = $r[0];


            $rekl .= nl2br(stripslashes($text));
            if ($t == "no") {
                $mail = $mail.$rekl;
            } else {
                $mail =  $mail;
            }
                        $headers{"FROM"}= "$afsendnavn <$afsendemail>\n";
            $headers{"Content-Type"} = "$mailformat\n";
            $headers{"Content-Transfer-Encoding"} ="8bit\n";
            $headers{"Return-Path"} = "<$r1[5]>\n";
            $headers{"X-Priority"} = "3\n";
           

            $sql2 = "SELECT email
                                        FROM ml_ListUsers
                                        WHERE mailListID = '$r1[8]'
                                        AND valid = 'yes'";

            $q2 = $dbh-> query($sql2) || print "prepare failed($DBI::errstr)\n";
       
            while (@r2 = $q2->fetchrow_array ) {
                mail($r2[0], $mailemne, $mail, $headers); # ordrebekræftelse sendes til brugeren
            }
            $dbh->do("UPDATE ml_ListBrev SET afsendt = 'yes' WHERE id =
'$r1[6]'");
        }





sub stripslashes {
  local($text) = @_;
  $text =~ s/\\\"/\"/g;
  $text =~ s/\\\'/\'/g;
  return $text;
}


sub nl2br {
  local($text) = @_;
  $text =~ s/\n/\<br\>/;
  return $text;
}


sub mail {
  local($email, $subject, $mail, %headers) = @_;
 
          $smtp = Net::SMTP->new('localhost');

                    $smtp->mail();
                    $smtp->to($email);

                    $smtp->data();
                    $smtp->datasend($headers{"FROM"});
                    $smtp->datasend($headers{"Content-Type"} );
                    $smtp->datasend($headers{"Return-Path"} );
                    $smtp->datasend($headers{"X-Priority"} );
                    $smtp->datasend("Subject:$subject\n");

                    $smtp->datasend("\n");
                    $smtp->datasend($mail);
                    $smtp->dataend();
                $smtp->quit;

}
Avatar billede mfalck Praktikant
10. januar 2003 - 09:59 #9
jeg kan ikke huske om Perl har en time - jeg mener at den hedder localtime()
Avatar billede thomasledet Nybegynder
10. januar 2003 - 22:38 #10
perl har time... den outputter epoch-tid...
Avatar billede mfalck Praktikant
15. januar 2003 - 12:44 #11
kom det til at virke ?!?!
Avatar billede bacardil Nybegynder
15. januar 2003 - 23:58 #12
Har ikke fået afprøvet, men ellers kommer jeg igen :o)
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
Kurser inden for grundlæggende programmering

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