Zur Navigation

mit Variable aus Dropdown Datei öffnen

1 uwe

Hallo,
ich habe eine Textdatei (auswahl.txt) mit Dateinamen.

2007.txt
2008.txt
2009.txt

Diese will ich als Dropdown einlesen.
Der Varialblenname soll dann weiterverarbeitet werden.

<html><head><title>Liste in Dropdown zeigen</title></head>
<body bgcolor="#ffffff">
<?php
// in der Datei auswahl.txt stehen die Dateinamen
$datei1=file("auswahl.txt");
?>

// die Variable $dateiname soll unten übergeben werden
//  wie?
<form><select name="datei1[]">
<?php
foreach ($datei1 as $element) {
  echo "<option> <value=$element> $element</option>";
}
// bis hier das Select, dann die Variabel übergeben


//==============================================
//Lesen aller Zeilen einer Textdatei
// $dateiname von oben soll eingesetzt werden
$fp = fopen($dateiname,"r"); // Datei öffnen
if ($fp)
{
    while(!feof($fp))//Solange bis der Dateizeiger am Ende der Datei ist
    {


 $gast = fgets($fp,1000);//Einlesem der Zeilen


       echo"$gast <p>";//Ausgabe
    }
fclose($fp); // Datei schließen
}
else
{
echo "Datei wurde nicht gefunden"; // Sollte Datei nicht vorhanden sein
} 



?>

</body></html>


?>

</body></html>

Gruss Uwe

24.12.2007 10:12

2 Rudy

So?

<html>
  <head>
    <title>Liste in Dropdown zeigen</title>
  </head>
<body>
<?php
// in der Datei auswahl.txt stehen die Dateinamen
$datei1=file("auswahl.txt");
?>
<form method="post" action="<?=$_SERVER['REQUEST_URI']?>">
  <select name="datei1">
<?php foreach ($datei1 as $element) { ?>
 <option value="<?=htmlspecialchars($element)?>"><?=htmlspecialchars($element)?></option>
<?php } ?>
  </select>
  <input type="submit" value="OK" />
</form>
<?php
// bis hier das Select, dann die Variable übergeben
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
  $dateiname = $_POST['datei1'];
  if (file_exists('./'.$dateiname)) { 
    echo nl2br(htmlspecialchars(file_get_contents('./'.$dateiname)));
  } else {
    echo "Datei wurde nicht gefunden"; // Sollte Datei nicht vorhanden sein
  }
}
?>

</body>
</html>

24.12.2007 13:36

3 uwe

Hallo Rudy,
so hatte ich das gedacht!!
Vielen Dank
Schöne Weihnachten

Gruss
Uwe

24.12.2007 15:00

4 uwe

Hallo,
ich will das Script noch an einer anderen Stelle einsetzen:
Bei einem Mail-Programm will ich oben aus dem
Drop-Down eine Datei auswählen, die dann die e-Mail Adressen enthält.

Wie wird die Variable $dateiname von dem Dropdown zu dem E-Mail Teil übergeben?
Gruss
Uwe

<?
// in der Datei auswahl.txt stehen die Dateinamen
$datei1=file("auswahl.txt");
?>
<form method="post" action="<?=$_SERVER['REQUEST_URI']?>">
 <select name="datei1">
<?php foreach ($datei1 as $element) { ?>
<option value="<?=htmlspecialchars($element)?>"><?=htmlspecialchars($element)?></option>
<?php } ?>
 </select>

// dieses wird eigendlich jetzt nicht gebraucht
//<input type="submit" value="OK" /> 
</form>
<?php
// bis hier das Select, dann die Variable übergeben
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {

// Hier ist der Dateiname der unten gebraucht wird
$dateiname = $_POST['datei1'];
}

?>
// E-MAIL TEIL
<?
error_reporting(0);
//#############################################################
//#################   CONFIGURATION  ##########################

// choose a password
$my_password="xxxx";
// the email from which emails are send
//  mydomain.com must be your real domain, otherways,
//  the server will not send any emails
$from_email="test <test@test.de>";
// Your replay to email (whatever you want).
$replayto="test@test.de";
// A message to be attached to the bottom of the message
//   We recommend to add a link to subscription page
$message_at_bottom="
------------------------------------------------------------
Hinweis
";
// The file where emails are stored

// HIER MUSS DIE VARIALBE übergeben werden:
$emails_file= $dateiname;

//###############   END CONFIGURATION  ########################
//#############################################################

// IF INFO IS NOT POSTED, PRINT THE FORM AND DIE
if (!$_POST["mensaje"]){
        print_form();
        die();
}

// IF INFO IS POSTED YOU WILL BE HERE
// Check whether the password is correct
//  (only webmaster is supposed to know the password, which has been specified above)
if ($_POST["p"]!=$my_password){die("Incorrect password");}

// Get the subject of message
$subject =$_POST["subject"];
// Get the body of message
$message=$_POST["mensaje"];
// Add to body of message the bottom
$message.=$message_at_bottom;
// Read the file with emails to variable $emails_file
$emails_file=file_get_contents($emails_file);
// Extract list of emails to array $emails_array
preg_match_all("/<.{0,100}?>/",$emails_file,$emails_array);

// Start output
print "<b>Sending messages...</b>";

// Send email to each email
foreach ($emails_array[0] as $email){
        // remove "<" and ">" from each email
        $email=substr($email,1,strlen($email)-2);
        // Next line is the one sending the email: the key command of this script
        mail($email, $subject, $message,"From: $from_email\nReply-To: $replayto\nContent-Type: text/plain");
        // Each time an email is send, output it
        print "<br>$email\n";
        // After sending each email, send previous line (the email) to the browser
        flush();

}

?>


</body>
</html>



<?php
// THIS FUNCTION WILL SHOW THE FORM
// MODIFY IT AS REQUIRED
function print_form(){
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"  http-equiv="content-type">
  <title>My email list</title>
</head>
<body style="background-color: rgb(255, 255, 255);">
<center>
<h2>Form to send email to the mailing list</h2>
<table style="font-family: times new roman;" border="0" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="vertical-align: top;">
                <form method=POST action="<? $PHP_SELF; ?>".php>
                Subject
                <br><input type=text name=subject size=40>
                <br>Message
                <br><textarea name=mensaje cols=50 rows=8></textarea>
                <br>Password <input type=password name=p size=10>
                <br><input type=submit value=Send>
                </form>
      </td>
    </tr>
  </tbody>
</table>
</center>
</body>
</html>

<? } ?>

24.12.2007 19:12

5 Jörg

Hallo Uwe,

wenn ich das richtig verstanden habe, sollte das Dropdown-Menü mit im Email-Formular integriert sein - dann kannst du die Auswahl nach dessen Absenden auswerten

25.12.2007 19:14

6 uwe

Hallo Jörg,
wo ist der Fehler bei der Variablenübergabe?
Gruss
Uwe

<?
// in der Datei auswahl.txt stehen die Dateinamen
$datei1=file("auswahl.txt");
?>
<form method="post" action="<?=$_SERVER['REQUEST_URI']?>">
<select name="datei1">
<?php foreach ($datei1 as $element) { ?>
<option value="<?=htmlspecialchars($element)?>"><?=htmlspecialchars($element)?></option>
<?php } ?>
</select>

</form>
<?php
// bis hier das Select, dann die Variable übergeben
//if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {

// Hier ist der Dateiname der unten gebraucht wird
//$emails_file  = $_POST['datei1'];
//}

//?>

//<?
// E-MAIL TEIL
error_reporting(0);
//#############################################################
//#################   CONFIGURATION  ##########################

// choose a password
$my_password="xxx";
// the email from which emails are send
//  mydomain.com must be your real domain, otherways,
//  the server will not send any emails
$from_email="test <test@testde>";
// Your replay to email (whatever you want).
$replayto="test@test.de";
// A message to be attached to the bottom of the message
//   We recommend to add a link to subscription page
$message_at_bottom="
------------------------------------------------------------
Hinweis
";
// The file where emails are stored

// HIER MUSS DIE VARIALBE übergeben werden:
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {

$emails_file = $_POST['datei1'];}
//$emails_file= $dateiname;

//###############   END CONFIGURATION  ########################
//#############################################################

// IF INFO IS NOT POSTED, PRINT THE FORM AND DIE
if (!$_POST["mensaje"]){
       print_form();
       die();
}

// IF INFO IS POSTED YOU WILL BE HERE
// Check whether the password is correct
//  (only webmaster is supposed to know the password, which has been specified above)
if ($_POST["p"]!=$my_password){die("Incorrect password");}

// Get the subject of message
$subject =$_POST["subject"];
// Get the body of message
$message=$_POST["mensaje"];
// Add to body of message the bottom
$message.=$message_at_bottom;
// Read the file with emails to variable $emails_file
$emails_file=file_get_contents($emails_file);
// Extract list of emails to array $emails_array
preg_match_all("/<.{0,100}?>/",$emails_file,$emails_array);

// Start output
print "<b>Sending messages...</b>";

// Send email to each email
foreach ($emails_array[0] as $email){
       // remove "<" and ">" from each email
       $email=substr($email,1,strlen($email)-2);
       // Next line is the one sending the email: the key command of this script
       mail($email, $subject, $message,"From: $from_email\nReply-To: $replayto\nContent-Type: text/plain");
       // Each time an email is send, output it
       print "<br>$email\n";
       // After sending each email, send previous line (the email) to the browser
       flush();

}

?>


</body>
</html>



<?php
// THIS FUNCTION WILL SHOW THE FORM
// MODIFY IT AS REQUIRED
function print_form(){
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <meta content="text/html; charset=ISO-8859-1"  http-equiv="content-type">
 <title>My email list</title>
</head>
<body style="background-color: rgb(255, 255, 255);">
<center>
<h2>Form to send email to the mailing list</h2>
<table style="font-family: times new roman;" border="0" cellpadding="0" cellspacing="0">
 <tbody>
   <tr>
     <td style="vertical-align: top;">
               <form method=POST action="<? $PHP_SELF; ?>".php>
               Subject
               <br><input type=text name=subject size=40>
               <br>Message
               <br><textarea name=mensaje cols=50 rows=8></textarea>
               <br>Password <input type=password name=p size=10>
               <br><input type=submit value=Send>
               </form>
     </td>
   </tr>
 </tbody>
</table>
</center>
</body>
</html>

<? } ?>

[Edit Jörg: kaputten Code-Block repariert]

26.12.2007 07:06 | geändert von Jörg: 26.12.2007 15:44

7 Jörg

Das select Element muss innerhalb des unteren Formulars eingebaut sein, dann wird die Auswahl mit übergeben, z.B.:

<form method=POST action="<? $PHP_SELF; ?>">
Subject
<br><input type=text name=subject size=40>
<br>Message
<br><textarea name=mensaje cols=50 rows=8></textarea>

<?
$datei1=file("auswahl.txt");
?>
<select name="datei1">
<?php foreach ($datei1 as $element) { ?>
<option value="<?=htmlspecialchars($element)?>"><?=htmlspecialchars($element)?></option>
<?php } ?>
</select>

<br>Password <input type=password name=p size=10>
<br><input type=submit value=Send>
</form>

26.12.2007 15:49

8 uwe

Hallo Jörg,
besten Dank....!!

Gruss
Uwe

26.12.2007 22:07

9 uwe

Hallo,
um Zeilen aus einer Textdatei zu löschen, verwende ich folgendes Script:

<H2>Löschen E-Mailliste</H2>
______________________
<?php
//name der Datei die bearbeitet werden soll
$textdatei = "gaeste.txt";

#Datenverarbeitung
if (isset($HTTP_POST_VARS['delete'])) {
$inhalt = file($textdatei);
$fp = fopen($textdatei,'w');
flock($fp,2);
while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
if (!isset($HTTP_POST_VARS['delete'.$inhalt_key])) {
fwrite($fp,$inhalt_val);
}
}
flock($fp,3);
fclose($fp);
}
#ENDE: Datenverarbeitung

#Datenausgabe
$inhalt = file($textdatei);

echo '<form method="post" action="'.$HTTP_SERVER_VARS['PHP_SELF'].'">';

//HIER müßte dann der neue Quellcode für die Selection rein
$inhalt_val = substr($inhalt_val, 1); 

while (list($inhalt_key,$inhalt_val) = each($inhalt)) {
echo substr($inhalt_val, 1).'<input type="checkbox" name="delete'.$inhalt_key.'"><br>';
}

echo '<input type="submit" name="delete" value="Zeilen löschen"></form>';




#ENDE: Datenausgabe

?>

Wenn ich jetzt wieder die Dropdown-Liste mit den Dateinamen haben will, funtioniert das nicht
echo '<form method="post" action="'.$HTTP_SERVER_VARS['PHP_SELF'].'">';
<?
$datei1=file("auswahl.txt");
?>
<select name="datei1">
<?php foreach ($datei1 as $element) { ?>
<option value="<?=htmlspecialchars($element)?>"><?=htmlspecialchars($element)?></option>
<?php } ?>
</select>
$inhalt_val = substr($inhalt_val, 1);

Gruss
Uwe

30.12.2007 17:05

10 Jörg

Hallo Uwe,

diese beiden Abschnitte müssen auch noch innerhalb von <?php ?> platziert werden:

echo '<form method="post" action="'.$HTTP_SERVER_VARS['PHP_SELF'].'">';

$inhalt_val = substr($inhalt_val, 1);

Und das form Element muss noc hgeschlossen werden..

Ich würde zudem nicht mehr die veralteten $HTTP_SERVER_VARS und $HTTP_POST_VARS verwenden, sondern stattdessen $_SERVER und $_POST

30.12.2007 20:13