Durch Klick im Menü Daten in Textfeld schreiben

A

andyK

Hallo..

Trotz stundenlanger Suche in sämtlichen Bereichen, konnte ich leider nichts passendes für mein heutiges Problem finden. :(

Folgendes Problem:

Ich hab eine Menüleiste, die ihre Daten aus einer seperaten Datei (menu.store.php) holt.
Der Inhalt ist so aufgebaut:

Navigation
Home,news.php,1
Mitglieder,members.php,2
...
usw.

Der Code, der das Menü nun erstellt, liest diese Datei nun Zeile für Zeile aus und bastelt dabei eine Tabelle, mit den Menüpunkten und ihren entsprechenden Links.

Bis dahin klappt alles wunderbar und ohne Probleme.

Dieses Menü will ich über eine Admin Seite beliebig verändern. Also Einträge hinzufügen, bearbeiten und löschen.
Meine Idee war nun, das Menü in die Admin Seite zu laden, allerdings nicht mit den Links, sondern mit den ID-Nummern. - Hat auch geklappt

Nun habe ich auf dieser Seite auch zwei Textfelder und drei Buttons, Add, Edit und Delete.

Wenn ich nun auf einen Link, zum Beispiel "Home" klicke, soll in dem einen Textfeld die Bezeichnung und in dem anderen die dazu gehörige Seite stehen.

Da gehts schon los. Ich habe absolut keinen Plan, wie ich das realisieren kann. Ich hab auch schon einiges ausprobiert, aber immer vergebens.

Das zweite Problem wäre dann (wenn das erste zu lösen geht) wie hauche ich meinen drei Buttons Leben ein?
Ich sag mal, dass hinzufügen und bearbeiten (also den aktuellen Eintrag verändern) würde ich vielleicht noch hinbekommen, aber das Löschen bereitet mir Kopfzerbrechen..

Ich hab auch schon überlegt, mit einer Schleife für jeden Eintrag ein Textfeld zu erstellen. Hab das auch schon ausprobiert und es ging, aber das sieht nicht gut aus. Bei 10 Einträgen 20 Textfelder auf dem Monitor zu haben. :(

Mit diesem Code erstelle ich das Menü:

PHP:
$data=file($datafile);
$headline=$data[0];
$nb_menupoints=count($data)-1;

for($nb=1;$nb <= $nb_menupoints; $nb++){
$menu_point=explode(",","$data[$nb]");

echo "<tr><TD class=\"menuheader\" width=\"140\"><A href=\"$menu_point[1]\">$menu_point[0]</A></TD></tr>";

In der Admin Seite habe ich nur das
PHP:
$menu_point[1]
gegen
PHP:
$menu_point[2]
ausgetauscht.

Ich weiß, ein Beitrag hier beschäftigt sich mit diesem Thema, aber da muss keine Zeile vorher gesplittet werden. (Der Beitrag mit dem
$text[1] = "bla bla";
$text[2] = "bla bla";
$text[3] = "bla bla";

Das Problem wurde mit den IDs gelöst. Nur bezogen auf mein Prob. komm ich damit irgendwie nicht weiter.

Wenn ihr andere Vorschläge zur Lösung habt, ich bin für alles offen.
Nur nicht mySQL, weil das hab ich nicht in meinem Serverpaket.


Vielen Dank schon mal für eure Mühe,

Andy
 
Zuletzt bearbeitet von einem Moderator:
Nein ein Textfeld. So ein <input type="text" ...>

Davon habe ich zwei auf meiner Seite.
Wenn ich nun auf einen Link klicke, soll in dem einen Textfeld die Bezeichnung und in dem anderen die Url stehen, so dass ich diese dann bearbeiten kann.
 
Hier ist mal der komplette code, um das Menü zu erstellen:

<html>
---
PHP:
<?php

//Header erzeugen
function menu_head()
	{
	include('config/menu.config.php');

	 echo "
			<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"140\">
			<tr>
			  <TD class=\"$styleheadline\" vAlign=\"top\" width=\"140\" height=\"15\">&nbsp;Navigation</TD>
			</tr>
	      ";
	}


function menu_foot ()
	{
	 echo "</td></tr></table>";
	}


function menu_form($PHP_SELF){
include('config/menu.config.php');

menu_head();

$data=file($datafile);
$headline=$data[0];
$nb_menupoints=count($data)-1;

for($nb=1;$nb <= $nb_menupoints; $nb++){
$menu_point=explode("]--[","$data[$nb]");

echo "<tr><TD class=\"$stylemenu\" width=\"140\"><A href='menu_admin.php?id=".$menu_point[2]."'>$menu_point[0]</A></TD></tr>";
echo "<input type='text' value='" .  $menu_point[0] . "'>";

}


menu_foot ();
}


menu_form($PHP_SELF);
?>
...
<td width="49%"><input type="text" name="men_Link" size="32" class="tinput" value="<?php echo $menu_point[0]; ?>"></td>

<td width="49%"><input type="text" name="men_Link" size="32" class="tinput" value="<?php echo $menu_point[1]; ?>"></td>

...


Wie füll ich denn nun diese beiden Textfelder, wenn ich auf einen Link klicke?

Jetzt im Moment passiert da nix. Irgendwo muss da ein Denkfehler sein.

Die Datei mit den Daten ist so aufgebaut:
Code:
Name]--[URL]--[ID
 
1. in einem Link eine GET-Variable mit ?p=home/wasweisich/etc. mitgeben.
2. Dann im Script mit
if (isset ($_GET["p"]) )

abfragen ob eine solche Variable gesetzt wurde.

3. Entsprechende Variablen in die Textfelder in "value=" eintragen
 
Ich bin absoluter Anfänger und habe mir den Code auch nur aus Schnipseln zusammengebastelt.

Könntest Du deine Lösung bitte so formulieren, dass sie irgendwie nach quelltext aussieht?
 
Naja, die Grundlagen solltest du dir schon aneignen.

Es könnte so ähnlich aussehen:
PHP:
if (isset ($_GET["p"]) )
{
  echo "<input type='text' value='" . $menu_point[$_GET["p"]] . "' name='egal'>";
}
echo "<a href='$PHP_SELF?p=home'>Home bearbeiten</a>";

Der Link verweist auf das PHP-Script an sich. Alle GET Variablen kannst du über das assoziierte Array $_GET auslesen.
Die Voraussetzung bei dem Beispiel ist aber auch, dass du alle Menüpunkte als assoziiertes Array abspeicherst.

Aber ich schlage vor, dass du dich mit den PHP Grundlagen beschäftigst, weil du sonst nicht sehr weit kommst.
 
Kann mir jemand sagen, wo hier der Fehler liegt?

Wenn ich auf "Ändern" klicke, sollte eigentlich die ausgewählte Zeile geändert werden. Aber da passiert nix.
Irgendwie komme ich nicht zu dem "else"-Teil, wo gespeichert wird. Aber warum?

PHP:
<?
require("config/menu.config.php");


	 $show = fread(fopen( $template[menuheader] ,"r"), filesize($template[menuheader]));
	 $show = ereg_replace("{box1titel}","$box1titel",$show);
	 $show = stripslashes($show);
	 echo $show;

	$data = file ( $file[menudata] );
	 	for($i=0; $i<count($data); $i++)
	 	 {
			$array = explode("]--[", $data[$i]);

    	 	$center = fread(fopen( $template[menucenter] ,"r"), filesize($template[menucenter]));
    	 	$center = ereg_replace("{menuepunkt}",'<a href="'.$PHP_SELF.'?var=edit&id='.$i.'">'.$array[1].'</a>',$center);
    	 	
		 	$center = stripslashes($center);
			echo $center;
		 }

if ( $var == "edit" ) 
{
     $data = file ( $file[menudata] );
	 $array = explode("]--[", $data[$id]);
			
  if ( $submit != "Ändern" ) 
  {

	$data = file ( $file[menudata] );
	$array = explode("]--[", $data[$id]);

	$footer = fread(fopen( $template[menufooter] ,"r"), filesize($template[menufooter]));
	$footer = ereg_replace("{box2titel}","$box2titel",$footer);
    $footer = ereg_replace("{action}","$PHP_SELF?var=edit&id=$id",$footer);
	$footer = ereg_replace("{menuepunkt}","<input type='text' name='men' size='24' class='bginput' value='$array[1]' $size>",$footer);
	$footer = ereg_replace("{link}","<input type='text' name='url' size='32' class='bginput' value='$array[2]' $size>",$footer);
    $footer = stripslashes($footer);
	echo $footer;
  }	 
	 else {
			$new_entry ="]--[$men]--[$url]--[\n";
			$fla = file( $file[menudata] );
			$fla[$id] = $new_entry;
			$string = join("" , $fla);
			$fp = fopen( $file[menudata] , "w");
			fwrite($fp,$string);
			fclose($fp);
			echo $editmenu ;
		  } 
		  
		  
}
?>
 
Zurück