• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Liste per PHP

  • Ersteller Ersteller matibaski
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin!
Habe eine Frage/Problem.

Ich lasse mit PHP eine Liste von Dateien in eine PHP Datei ausgeben, die zugleich verlinkt sind.
Nun ist es so, dass wenn ich 20 Dateien in einem Ordner habe, dass es dann einen haufen text gibt.... (Man muss scrollen)

Nun versuche ich den Code so umzuschreiben, dass eine DropDown Box erscheint.
Kein Problem für mich. Doch wie mache ich es, dass wenn ich etwas ausgewählt habe, dass sich das gleich zum Link vergibt, den ich haben möchte?
Also der Code sieht momentan so aus:
PHP:
if(!isset($file))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad)) 
{
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo '-<a href=admin.php?file=$file>$file</a><br>\n';
       }
   }
   closedir($handle);
}
So erstellt es die liste.

Nun dachte ich, dass ich es so machen kann:
PHP:
if(!isset($file))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad)) 
{
 echo'<select>';
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo '<option>$file</option>';
       }
   }
  echo'</select>';
   closedir($handle);
}
Dies würde auch funktionieren, doch wie mache ich einen Hyperlink draus?

Wenns geht ohne JavaScript, denn es ist ein Tool das ich zum Download anbiete. Ich dachte vielleicht kann man das mit dem Submit-Button machen, doch wie? Die onclick funktion wäre auch 'ne möglichkeit, aber ich weiss nicht wie.


MfG, matibaski

edit:
Da fällt mir 'ne Frage ein.
Kann man an dem Code was ändern, dass er nur Datein anzeigt? Also es kann ja sein, dass ein anderer Ordner drin ist. Zum Beispiel so machen, dass es nur Dateien anzeigt, die eine endung haben. datei.* (.html, .php, .css, etc)
 
Gib deinem option ein value, und du kannst nach einem normalen Submit-Button die Variable vom Select auswerten und weiterleiten kannst.

PHP:
if(!isset($file))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad))
{
echo'<select name="wohin">';
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo '<option value="'.$file.'">$file</option>';
       }
   }
  echo'</select>';
   closedir($handle);
}

dann in der "neuen"? Datei:
PHP:
<?php
header("Location: $_REQUEST['wohin']");
?>
 
1. Kann man in value bei option 'nen Hyperlink angeben?
2. Es ist so:
Man ist auf admin.php und geht auf eine Kategorie, wo man was verarbeitet.
admin.php?site=verarbeiten

Nun erscheint oben die Liste, und man kann eine Datei auswählen. Dann erscheint oben:
admin.php?site=verarbeiten&file=dieausgewähltedatei.html
und dann erscheint unten im Textfeld die Datei, die angeklickt wurde, um sie zu verarbeiten.
Ich möchte, dass wenn man beim DropDown Menü etwas auswählt (beim anklicken oder mit submit-Button), dass dann die Seite "aktualisiert" wird und dass oben einfach eine $_GET Variable erscheint, nämlich wie oben: file=$file, damit der Editor diese einbinden kann.

Vielleicht ist es ein wenig klarer.


MfG, matibaski

edit:
Wenn bei value="" bei <option> eine URL angegeben werden kann, dann ist es praktisch gelöst. Ich muss dann einfach eine <form> Draus machen.
 
PHP:
<?php
echo '<form name="dateibearbeiten" method="get" action="admin.php">';
if(!isset($_GET['file']))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad))
{
echo'<select name="file">';
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo '<option value="'.$file.'">$file</option>';
       }
   }
  echo'</select>';
   closedir($handle);
echo '<input type="submit" value="bearbeiten">';
echo '<input type="hidden" name="site" value="bearbeiten">';
echo '</form>';
}
?>

$file muss dann halt ausgewählteDatei.txt oder so heißen...
 
Danke... Funktioniert, bis zum Editor.
Also hier ist mal die ganze Seite:
PHP:
<html>
<head>
<script language="javascript" type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
    tinyMCE.init({
        mode : "textareas",
    });
</script>
</head><?php
include("config.php");
echo '<form name="file" method="get" action="admin.php?site=content_bearbeiten">';
if(!isset($_GET['file']))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad))
{
echo'<select name="file">';
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo '<option value="'.$pfad.$file.'">'.$file.'</option>';
       }
   }
  echo'</select>';
   closedir($handle);
echo '<input type="submit" value="bearbeiten">';
echo '<input type="hidden" name="site" value="content_bearbeiten">';
echo '</form>';
} 

}
echo'<form name="editieren" action="admin.php?site=content_insert" method="post">';
echo'<hr>';
echo'<p>Momentan wird folgende Datei verarbeitet:<br>';
echo'!!!Bitte immer darauf achten, dass die gewünschte Datei, <br>sowie der Ordner in dem sie sich befindet, den CHMOD 777 haben muss!!!<br>';
echo'<input type="text" value="'.$file.'" name="dataid" size="20"><br>'; // Dieses input ist da, damit die nächste Datei, die alles schreibt, weiss, welcher Pfad und was für eine Datei man schreiben will.
echo'<p><textarea name="content" cols="50" rows="15">';

$include = $pfad.$_GET['file'];
if(!isset($_GET['file']))
{
print"Wähle eine Datei aus!";
}
$filename = $include;
$handle = fopen($filename, "r"); //r steht für read/lesen
$text = fread($handle, filesize($filename));
echo $text; 

echo'</textarea>';
echo'<input type="submit" value="Speichern" name="Send">';
echo'<hr>';
echo'</form>';
?>
Nun ist das Problem, wenn ich es speichern will, geht es zu admin.php?site=content_insert
sollte, aber es macht es nicht.
Es erscheint die Standartseite (admin.php) und einen haufen GET-Variablen (oben meine ich)

admin.php?dataid=..%2F_private%2Fcommunity.php&content=Community&Send=Speichern
Es sollte beim 2. <form> alles mit Methode "post" an admin.php?site=content_insert. (Da wird alles auf die Datei geschrieben).

Anscheinend macht er es mit der methode post und führt die Seite nicht richtig weiter. Weiss jemand, wieso?


MfG, matibaski
 
Weil du GET und POST miteinander mischt.
Du kannst beim 2ten Form nicht als action="admin.php?site=content_insert" angeben!
Dort muss einfach nur admin.php drin stehen, und du musst site als hidden field mit übergeben, und dann mit $_POST['site'] auslesen.
Da du teilweise mit GET und teilweise mit POST arbeitest, würde ich dir empfehlen deine seite mit $_REQUEST['site'] abzufragen.
 
Danke..
Hab nun beide per post gemacht.
Ich könnte dir alles erklären, aber um Zeit zu sparen:
PHP:
<html>
<head>
<script language="javascript" type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
    tinyMCE.init({
        mode : "textareas",
    });
</script>
</head>

<?php
// Liste mit vorhandenen Dateien
include("config.php");
echo "<form name=\"file\" method=\"post\" action=\"admin.php?site=content_bearbeiten\">\n";
if(!isset($_GET['file']))
{
echo" Wähle aus, welche Datei du bearbeiten möchtest.<br><br>\n";
if ($handle = opendir($pfad))
{
echo"<select name=\"file\">\n";
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo"<option value=\"".$pfad.$file."\">".$file."</option>\n";
       }
   }
  echo"</select>\n";
   closedir($handle);
echo"<input type=\"submit\" value=\"bearbeiten\">\n";
echo"<input type=\"hidden\" name=\"site\" value=\"content_bearbeiten\">\n";
echo"</form>\n";
} 

}

// Editor
echo"<form name=\"editieren\" action=\"admin.php?site=content_insert\" method=\"post\">\n";
echo"<hr>\n";
echo"<span style=\"font:-size:2\">!!!Bitte immer darauf achten, dass die gewünschte Datei, <br>sowie der Ordner in dem sie sich befindet, den<b> CHMOD 777 haben muss</b>!!!</span><br>\n";
echo"<input type=\"hidden\" value=\"".$_REQUEST['file']."\" name=\"dataid\" size=\"20\"><br>\n";
echo"<p><textarea name=\"content\" cols=\"50\" rows=\"15\">\n";

$include = $pfad.$_REQUEST['file'];
if(!isset($_REQUEST['file']))
{
print"Wähle eine Datei aus!";
}
$filename = $include;
$handle = fopen($filename, "r");
$text = fread($handle, filesize($filename));
echo $text; 

echo"</textarea>\n";
echo"<input type=\"submit\" value=\"Speichern\" name=\"Send\">\n";
echo"<hr>\n";
echo"</form>";
?>
Muss arbeiten gehen.

Danke für deine Hilfe.


MfG, matibaski
 
PHP:
<html>
<head>
<script language="javascript" type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
    tinyMCE.init({
        mode : "textareas",
    });
</script>
</head>

<?php
// Liste mit vorhandenen Dateien
include("config.php");
echo "<form name=\"file\" method=\"post\" action=\"admin.php\">\n";
if(!isset($_REQUEST['file']))
{
echo" Wähle aus, welche Datei du bearbeiten möchtest.<br><br>\n";
if ($handle = opendir($pfad))
{
echo"<select name=\"file\">\n";
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo"<option value=\"".$pfad.$file."\">".$file."</option>\n";
       }
   }
  echo"</select>\n";
   closedir($handle);
echo"<input type=\"submit\" value=\"bearbeiten\">\n";
echo"<input type=\"hidden\" name=\"site\" value=\"content_bearbeiten\">\n";
echo"</form>\n";
}

}

// Editor
echo"<form name=\"editieren\" action=\"admin.php\" method=\"post\">\n";
echo '<input type="hidden" name="site" value="content_insert" />';
echo"<hr>\n";
echo"<span style=\"font:-size:2\">!!!Bitte immer darauf achten, dass die gewünschte Datei, <br>sowie der Ordner in dem sie sich befindet, den<b> CHMOD 777 haben muss</b>!!!</span><br>\n";
echo"<input type=\"hidden\" value=\"".$_REQUEST['file']."\" name=\"dataid\" size=\"20\"><br>\n";
echo"<p><textarea name=\"content\" cols=\"50\" rows=\"15\">\n";

$include = $pfad.$_REQUEST['file'];
if(!isset($_REQUEST['file']))
{
print"Wähle eine Datei aus!";
}
$filename = $include;
$handle = fopen($filename, "r");
$text = fread($handle, filesize($filename));
echo $text;

echo"</textarea>\n";
echo"<input type=\"submit\" value=\"Speichern\" name=\"Send\">\n";
echo"<hr>\n";
echo"</form>";
?>

so sollte es theoretisch funktionieren ;)
 
Ich glaube ich habe mich falsch ausgedrückt beim vorherigen Post.
Es funktioniert schon. Aber danke, dass du es neu geschrieben hast :D.


MfG, matibaski
 
Ah ok ^^

Habe mich nur gewundert, dass ein Formular als action GET Paraneter zulässt, wobei das gesamte Formular als POST übertragen wird ;)

Jetzt ist es halt einheitlich geworden ^^

mfg
loki
 
hey hab mal nen bissl auf deiner seite rumgestöbert
ein paar fragen / anregungen:

  • wieso nutzt du frames??! :shock:
  • dein gb funzt nicht ?!
  • wie wäre es mit online-demos deiner scripte?
 
Zum 1.
Das sind keine Frames :D
Ist ein Container mit der Eigenschaft
Code:
overflow:auto;

Zum 2.
Ja ich weiss auch nicht wieso.. Ich habe zwar alles Korrekt gemacht, aber es kommt, dass es die Datenbank nicht erreicht.
Ich werde das später mal machen

Zum 3.
Ja das wäre eine gute Idee :D
Werd ich später mal machen

Fragen geklärt?


MfG, matibaski
 
PHP:
<HTML><HEAD><!-- Kostenlose Domains (www.nic.ch.vu)	-->
<TITLE>MyB - Matija Baskarad</TITLE>
...
</HEAD>
<frameset id="QQx" rows="100%,*" border="0" frameborder="0" framespacing="0">
<frame src="http://matibaski.paradoxe.de/MyB" name="fid1" id="fid1" scrolling="Auto">
<frame scrolling="No" noresize src="/spr/zk.html">
<noframes>
<body><CENTER><h1><a href="http://myb.ch.vu">MyB - Matija Baskarad</a></h1>
<br><br><H2><a href="http://matibaski.paradoxe.de/MyB">myb - erfahren Sie mehr über myb. Hier finden Sie Informationen zum Thema myb...</a></H2>
<br><br><A HREF="http://www.toolbar.de/myb.ch.vu.html">Navigation / Sitemap</A>
<br><br><a href="http://www.nic.ch.vu/">Kostenlose Domains für alle! Registrieren Sie kostenlos Ihre eigene Domain! - Free Domains</a>
<br><br><A HREF="http://www.nic.ch.vu/start/kostenlose-angebote.php" TARGET="_top">Kostenlose Angebote und Gewinnspiele!</A>
<BR><BR></CENTER></body>
</noframes></frameset>
<!-- FC:f --> </HTML>
liegt wohl aber am free-provider :roll:

wieso nutzt du für deine navi überhaupt noch js, wenn es doch in der css schon "deklariert" wurde?!
PHP:
onmouseover="this.style.backgroundColor='#cfcccc'" onmouseout="this.style.backgroundColor=''"

ach noch eine frage :)
warum nutzt du keine listen für deine navi, denn so entsteht ne extreme div suppe?!

naja ich will nicht weiter kritisieren, hab ja selbst noch mein projekt nicht fertiggestellt :D
 
Genau das wäre meine letzte Frage gewesen.
Wie kann ich ein ganzes Div "hovern", dass ich kein Js mehr benutzen muss?
Denn wenn jemand JS deaktiviert hat, wird nur die Zeile mit dem Text markiert beim hover, und nicht das ganze.
Aber da du gesagt hast, mit Listenelementen geht das, dann mache ich das so..

MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben