Avatar billede proviben Novice
14. august 2004 - 10:43 Der er 18 kommentarer og
2 løsninger

Gererer en fil "USER","EMAIL"

Ønsker at få scriptet til, at gererer en fil fx mailliste.txt med følgende struktur - "USER","EMAIL":

"test1","test1@test1.dk"
"test2","test1@test2.dk"

Alle tomme EMAIL-felter skal bare droppes.

<?php

$conn = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
$result = mysql_query("select * from account");
while ($row = mysql_fetch_array($result)) { 
echo $row["USER"];

echo "&nbsp&nbsp&nbsp";

echo $row["EMAIL"];

echo("<br>");
}
mysql_close($conn);
?>
Avatar billede dennismp Nybegynder
14. august 2004 - 10:53 #1
<?php

$conn = mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());

$fp = fopen('mailliste.txt','w') or die("Kan ikke åbne mailliste.txt");

$result = mysql_query("select user, email from account where email is not null and email != ''");
while ($row = mysql_fetch_array($result)) {
  fwrite($fp, '"'.$row['USER'] . '",' );
  fwrite($fp, '"'.$row['EMAIL'] . "\"\n" );
}
fclose($fp);
?>


utestet
Avatar billede sukos Juniormester
14. august 2004 - 11:04 #2
I stedet for at skrive til fil for hvergang, ville jeg nok hellere bruge


<?php

$conn = mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());


$tofile = "";
$result = mysql_query("select user, email from account where email is not null and email != ''");
while ($row = mysql_fetch_array($result)) {
$tofile .= $row['USER'] ."|". $row['EMAIL'] ."\n";
}

$filnavn = "from_db.txt";
$path = $_SERVER["DOCUMENT_ROOT"] ."/";

$fp = fopen($path . $filnavn, 'w+');
if ($fp) {
fputs($fp, $tonewfile);
fclose($fp);
    }

?>

Testet! :O)
Du får så navn og email adskilt af en |
Avatar billede sukos Juniormester
14. august 2004 - 11:05 #3
hov, $tonewfile i fputs skal så være $tofile
Avatar billede dennismp Nybegynder
14. august 2004 - 11:10 #4
sukos: OS'et / filesystemet laver caching, så det burde i princippet give det samme. Borset fra at jeg lader OS'et om at bestemme hvornår der skal skrives.

Hvis nu det er en 7mb fil han ender med - så er det måske ikke så fedt at det skrives efter man har smidt det hele i en variabel :)
Avatar billede sukos Juniormester
14. august 2004 - 11:11 #5
Og så nok lige trim() for ikke at få en ny linie uden noget på
Avatar billede sukos Juniormester
14. august 2004 - 11:11 #6
Rigtigt, dennismp!
Avatar billede proviben Novice
14. august 2004 - 11:32 #7
I både dennismp & sukos scripts, får jeg desværre følgende output;

Warning: Supplied argument is not a valid MySQL result resource in /var/www/web/html/xxx.php on line 6

<?php
$conn = mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$tofile = "";
$result = mysql_query("select user, email from account where email is not null and email != ''");
while ($row = mysql_fetch_array($result)) {
$tofile .= $row['USER'] ."|". $row['EMAIL'] ."\n";
}
$filnavn = "mailliste.txt";
$path = $_SERVER["DOCUMENT_ROOT"] ."/";
$fp = fopen($path . $filnavn, 'w+');
if ($fp) {
fputs($fp, $tonewfile);
fclose($fp);
}
?>
Avatar billede proviben Novice
14. august 2004 - 11:38 #8
Og ja, fangede også $tonewfile --> $tofile
Avatar billede sukos Juniormester
14. august 2004 - 11:39 #9
Prøv

<?php
$conn = mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$tofile = "";
$result = mysql_query("SELECT `user`, `email` FROM `account`");
while ($row = mysql_fetch_array($result)) {
$tofile .= $row['USER'] ."|". $row['EMAIL'] ."\n";
}

$filnavn = "mailliste.txt";
$path = $_SERVER["DOCUMENT_ROOT"] ."/";
$tofile = trim($tofile);

$fp = fopen($path . $filnavn, 'w+');
if ($fp) {
fputs($fp, $tofile);
fclose($fp);
}

?>

Men ellers er det nu rigtigt nok hvad denninsmp pointerer, altså med str. på $tofile inden der skrives til filen
Avatar billede dennismp Nybegynder
14. august 2004 - 11:47 #10
ret denne linje;
$result = mysql_query("select user, email from account where email is not null and email != ''");
til
$result = mysql_query("select user, email from account where email is not null and email != ''") or die(mysql_error());

hvad siger den nu?
Avatar billede proviben Novice
14. august 2004 - 11:51 #11
Samme fejl: Warning: Supplied argument is not a valid MySQL result resource in /var/www/web/html/xxx.php on line 6.
Avatar billede proviben Novice
14. august 2004 - 11:54 #12
Vent!
Avatar billede dennismp Nybegynder
14. august 2004 - 12:00 #13
Yessir :)
Avatar billede proviben Novice
14. august 2004 - 12:01 #14
Scriptet kører nu, men indholdet af mailliste.txt er blot følgende:
|
|
|
|
|
osv.
Avatar billede dennismp Nybegynder
14. august 2004 - 12:04 #15
erstat:
$tofile .= $row['USER'] ."|". $row['EMAIL'] ."\n";
med:
$tofile .= $row[0] ."|". $row[1] ."\n";
Avatar billede proviben Novice
14. august 2004 - 12:13 #16
Nu virker det, men tegnet "|" skal dog fjernes, samt USER & EMAIL skal omklamres med ":

test1 | test1@test1.dk  -->  "test1","test1@test1.dk"
Avatar billede dennismp Nybegynder
14. august 2004 - 12:15 #17
prøv:
$tofile .= '"'.$row[0] .'","'. $row[1] ."\"\n";
Avatar billede proviben Novice
14. august 2004 - 12:24 #18
Helt super nu virker det, mange tak dennismp, sukos - point på vej.
Avatar billede dennismp Nybegynder
14. august 2004 - 12:32 #19
Det var så lidt
Avatar billede sukos Juniormester
14. august 2004 - 12:35 #20
Osse lige et svar herfra! :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
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