Lord
Licked by Jan Itor
|
Folgendes: Ich möchte meine Cds mit MP3-Alben archivieren, zu dem Zweck hab ich ma ein Html - Formular (Formular.html) geschrieben, das per .php - Datei ausgewertet wird, die Einträge werden in eine MySql-Datenbank geschrieben... so weit, so simpel.
Das Formular hat folgenden Aufbau: Anfangs is nur ein Eingabefeld zu sehen, in dem ich die Anzahl der Alben eingeben muss. Dann werden auf Knopfdruck über ein php-script in Formular.html genau so viele Eingabefelder für Band und Album generiert.
Meine Frage lautet: Wie kann ich (am besten per php) die eingefügten Eingabefelder auf Knopfdruck wieder aus Formular.html entfernen?
TiA
Lo_Ord
Bearbeitet von Lord am 16.02.2004, 03:31
|
Ezekiel
OC Addicted
|
header("Location: formular.php?feld1=album&feld2=titel < .... >");
....
$feld1=$_Get['feld1'];
echo '<input type='text' name='$feld1'>';
....
so ungefähr könntest dus machen.
|
mat
AdministratorLegends never die
|
header("Location: formular.php?nRecords=5");
....
for ($i=0;$i != $nRecords;$i++)
{
echo "<input type=\"text\" name=\"szTitle$i\">";
...
}
|
Lord
Licked by Jan Itor
|
sry, bin noch anfänger... könntest ma des erklären? Meine Variante, etwas besser erklärt: Eintrag (in Formular.php) schaut so aus: $eintrag="<!--Beginn-->\n";
while($i<$albenanz) {
$eintrag.="<tr><td>Band</td><td><input type='text' name='band";
$eintrag.=$i+1;
$eintrag.="' maxlength='30'></td>";
$eintrag.="<td>Album</td><td><input type='text' name='album";
$eintrag.=$i+1;
$eintrag.="' maxlength='50'></td></tr>\n";
$i++;
}
In Formular.html werden dann die Eingabefelder bei <!--Beginn--> eingefügt, die Variablen 'band' und 'alben' durchnummeriert und dann die dortigen Eingaben von Datensatz.php ausgelesen und in die Datenbank geschrieben. :edit: so, die Variant vom Mat kapier ich halbwegs, nur: Was bedeudet die 1. Zeile?
Bearbeitet von Lord am 15.02.2004, 22:33
|
funka
Legend ex-prophet(down below)
|
nur: Was bedeudet die 1. Zeile? soll dir vermutlich erklaeren wie die seite aufzurufen ist
|
mat
AdministratorLegends never die
|
die soll nur den input symbolisieren.. das wäre eigentlich ein redirect.
|
tomstig
OC Addicted
|
header("Location: formular.php?nRecords=5"); = window.location() in javascript er leitet dich weiter... für solche sachen eignet sich in http://de.php.net/manual/de/index.php nachzuschauen... ist wie selfhtml @problem: eins versteh ich nicht... warum machst du es nicht so wie auf tomstig.webdesign-cct.de/anderes/linde/start.php : zuerst gibtst du ein, wieviele du einfügen möchtest, auf der nächsten, wie die heißen und auf der dritten seite einfach in die datenbank reinschreiben?? oder magst du, wenn du auf formular.html gehst, dass immer eine bestimmte anzahl felder angezeigt ist...
|
Lord
Licked by Jan Itor
|
@tomstig: eben nicht, sondern genau wie auf deiner hp... mein bisheriges php-Wissen beschränkt sich allerdings bis jetzt auf die Art, wie ichs gemacht hab, also etwas in eine html-datei reinschreiben, aber nicht wieder rauschschneiden können
Bearbeitet von Lord am 15.02.2004, 23:07
|
tomstig
OC Addicted
|
das ist eh easy... index.php <html>
<head>
<title>
Wieviele Einträge wollen Sie in Ihrem Menü haben?
</title>
</head>
<body>
<a href="hilfe.html" target="_blank">Hilfe</a><br>
<br>
Wieviele Einträge wollen Sie in Ihrem Menü haben??
<form action="eintraege.php" method="post">
<input type="text" name="eintrag">
<input type="submit" value="Einträge erstellen">
</form>
</body>
</html>
[/php
eintraege.php
[php]
<?php
$i = $_POST[eintrag];
if ($i == 0) { //Wenn der Eintrag null oder nichts ist! Komischerweise auch wenn man buchstaben eingibt
?>
<script type="text/javascript">
alert("Sie haben 0, nichts oder Buchstaben in das Feld eingetragen");
</script>
<a href="javascript:history.back()">Zurück</a>
<?php
} else {
?>
<html>
<head>
<title>
Welche Überschrift und welche Einträge soll das Menü haben?
</title>
</head>
<body>
<a href="hilfe.html" target="_blank">Hilfe</a><br>
<br>
<table border="0" cellpadding="5px" cellspacing="0px">
<tr>
<td>
<table>
<tr>
<td width="120px">
Geben Sie hier die Überschrift ein:
</td>
<td>
<form name="formular1" action="ergebnis.php" method="post">
<input type="text" name="header">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
 
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td colspan="4">
<li>Welche Einträge soll das Menü haben? <li>Welche Links haben die Einträge? <li>Bitte die Links ganz ausschreiben und wenn sie auf eine externe Seite verweisen, das <b>[url]http://[/url]</b> nicht vergessen. <li>Anklicken, ob der Link in demselben oder in einem neuen Fenster geöffnet werden soll.
</td>
</tr>
<tr>
<td>
<table border="0">
<?php
$i = $_POST[eintrag];
$a = $i+1;
$b = 2*$i;
for($a;$a<=$b;$a++) {
$c = $a - $i;
echo " <tr>\n <td>\n Eintrag Nr." . $c . ":\n </td>\n <td width=\"150px\">\n <input type=\"text\" name=\"eintrag" . $c . "\">\n </td>\n <td width=\"85px\">\n mit dem Link\n </td>\n <td width=\"140px\">\n <input type=\"text\" name=\"link" . $c . "\">\n </td>\n <td width=\"30px\">\n  \n </td>\n <td>\n Link in neuem Fenster öffnen?\n </td>\n <td>\n <input type=\"radio\" name=\"radiobutton" . $c . "\" value=\"1\">Ja\n </td>\n <td>\n <input type=\"radio\" name=\"radiobutton" . $c . "\" value=\"2\" checked>Nein\n </td>\n </tr>\n\n";
}
?>
<tr>
<td colspan="2">
<input type="hidden" name="zahl" value="<?php echo $c ?>">
</td>
</tr>
<tr>
<td>
 
</td>
</tr>
<tr>
<td colspan="6" align="center">
<input type="submit" value="Menü erstellen">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>
ergebnis.php <?php
$head = strip_tags($_POST[header]);
$z = $_POST[zahl];
$error = 1;
if($head == "") {
?>
<script type="text/javascript">
alert("Sie haben die Überschrift vergessen");
</script>
<?php
$error = 2;
}
for ($a=1;$a<=$z;$a++) {
$eintrag[$a] = strip_tags($_POST[eintrag.$a]);
$link[$a] = strip_tags($_POST[link.$a]);
if ($eintrag[$a] == "") {
?>
<script type="text/javascript">
alert("Eintrag vergessen bei Eintrag <?php echo $a?>");
</script>
<?php
$error = 2;
}
if ($link[$a] == "") {
?>
<script type="text/javascript">
alert("Eintrag vergessen bei Link <?php echo $a?>");
</script>
<?php
$error = 2;
}
}
if ($error == 2) {
echo "<a href=\"javascript:history.back()\">Zurück</a>";
} else {
?>
<html>
<head>
<title>
Das Menü und der Quellcode
</title>
</head>
<body>
<a href="hilfe.html" target="_blank">Hilfe</a><br>
<br>
<table border="1">
<?php
$head = $_POST[header]; //Die Überschrift holen
$z = $_POST[zahl]; //Die Anzahl der Einträge holen
echo "<tr><td>Die Überschrift lautet <b>" . $head . "</b></td></tr>\n";
for ($a=1;$a<=$z;$a++) {
$eintrag[$a] = strip_tags($_POST[eintrag.$a]);
$link[$a] = strip_tags($_POST[link.$a]);
$radion[$a] = $_POST[radiobutton.$a];
echo "<tr><td>Eintrag Nr. " . $a . " heißt <b>" . $eintrag[$a] . "</b>, hat den Link <b>" . $link[$a] . "</b> und soll ";
if($radion[$a] == 2) {
echo "<b>nicht</b>";
}
echo " in einem neuen Fenster geöffnet werden</td></tr>\n";
}
?>
</table>
<br>
<script type="text/javascript">
<?php
mt_srand(time());
$random=mt_rand(0,100000); //Dieses Random ist nötig, damit nicht zwei gleiche Menüs sind, denn unter 100000 zweimal die gleiche Zahl zu erzielen, ist seltener als die zwei WTC-Towers
mt_srand(time());
$random1=mt_rand(0,25); //Dieses Random ist für die Buchstaben
$fx = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
?>
var <?php echo $fx[$random1].$random ?> = 1; //Der durch Random ermittelte Buchstabe bekommt den Wert 1 zugewiesen.
function menue<?php echo $random ?>() { //Hier wird das vorig ermittelte §Random angewand
<?php
$head = $_POST[header]; //Die Überschrift holen
$z = $_POST[zahl]; //Die Anzahl der Einträge holen
for ($a=1;$a<=$z;$a++) {
$eintrag[$a] = strip_tags($_POST[eintrag.$a]); //§eintrag bekommt jetzt in einem array, von 1 beginnend, alle vorig eingetragenen Werte zugewiesen.
$link[$a] = strip_tags($_POST[link.$a]); //§link bekommt jetzt in einem array, von 1 beginnend, alle vorig eingetragenen Werte zugewiesen.
$radion[$a] = $_POST[radiobutton.$a];
}
?>
if (<?php echo $fx[$random1].$random?> == 1) { //Hier beginnt das geöffnete Menü
<?php echo $fx[$random1].$random ?> = 2; //Hier wird der Buchstabe der Wert 2 zugewiesen, damit beim nochmaligen Klicken die else-funktion ausgeführt wird
<?php
global $link; //$link wird globalisiert, das heißt, man kann den Wert, der außerhalb bearbeitet wurde, auch in der Funktion nützen - das Gegenteil wäre "return"
global $eintrag; //$eintrag wird globalisiert
global $radion; //$radion wird globalisiert
$a = 1;
?>
menu<?php echo $random ?>.innerHTML = <?php echo "\"<table border=0><tr><td width='25px'> </td><td>"; //Hier wird dem "menu" der Wert von Random hinzugefügt, und dann fangt das Drop-Down an.
while($eintrag[$a]) { //while-schleife wird angewandt, damit auch wirklich alle Einträge aufgezählt werden
if($radion[$a] == 1) { //Wenn $radion den Wert 1 hat, also "Ja", dann target="_blank"
$tab = "<a href='$link[$a]' target='_blank'>$eintrag[$a]</a><br>";
}
if($radion[$a] == 2) { //Wenn $radion den Wert 2 hat, also "Nein, dann nicht target="_blank"
$tab = "<a href='$link[$a]'>$eintrag[$a]</a><br>";
}
$a++;
echo $tab;
}
echo " </td></tr></table>\";\n"; // Das Ende des Drop-Down
?>
bild<?php echo $random ?>.innerHTML = "<img src=\"minus.jpg\">"; //Das Bild neben dem Drop-Down, wenn aktiv
}
else {
<?php echo $fx[$random1].$random ?> = 1; //Hier wird der Buchstabe der Wert 1 zugewiesen; für mehr Info siehe oben
menu<?php echo $random ?>.innerHTML = ""; //Hier hat das Drop-Down-Menü nix stehen
bild<?php echo $random ?>.innerHTML = "<img src=\"plus.jpg\">"; // Das Bild wenn drop-down inaktiv
}
}
</script>
<!-- -->
<h2><u>So schaut das ganze dann aus:</u></h2>
<table border="0" cellpadding="3px" cellspacing="0" width="150px">
<tr style="cursor:hand" onclick="menue<?php echo $random ?>()">
<td id="bild<?php echo $random ?>" width="11px"> <!-- Das Startbild -->
<img src="plus.jpg" width="9px" height="9px">
</td>
<td width="139px">
<?php echo $head ?> <!--Hier wird der ganz oben erfasste Wert §head wiedergegeben, nämlich als Überschrift-->
</td>
</tr>
<tr>
<td colspan="2" id="menu<?php echo $random ?>">
</td>
</tr>
</table>
<br>
<br>
<br>
<br>
<br>
<h2><u>Und diesen Quellcode muss man an der gewünschten Stelle einfügen:</u></h2>
<table border="10" style="border-collapse: collapse" width="100%" bgcolor="lightyellow" bordercolor="lightblue" cellpadding="10px">
<tr>
<td>
<pre>
<script type="text/javascript">
<?php
mt_srand(time());
$random=mt_rand(0,100000);
mt_srand(time());
$random1=mt_rand(0,25);
$fx = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
?>
var <?php echo $fx[$random1].$random ?> = 1;
function menue<?php echo $random ?>() {
<?php
$head = $_POST[header]; //Die Überschrift holen
$z = $_POST[zahl]; //Die Anzahl der Einträge holen
for ($a=1;$a<=$z;$a++) {
$eintrag[$a] = strip_tags($_POST[eintrag.$a]);
$link[$a] = strip_tags($_POST[link.$a]);
$radion[$a] = strip_tags($_POST[radiobutton.$a]);
}
?>
if (<?php echo $fx[$random1].$random?> == 1) {
<?php echo $fx[$random1].$random ?> = 2;
<?php global $link;
global $eintrag;
global $radion;
$a = 1;
?>
menu<?php echo $random ?>.innerHTML = <?php echo "\"<table border=0><tr><td width='25px'> </td><td>";
while($eintrag[$a]) {
if($radion[$a] == 1) {
$tab = "<a href='$link[$a]' target='_blank'>$eintrag[$a]</a><br>";
}
if($radion[$a] == 2) {
$tab = "<a href='$link[$a]'>$eintrag[$a]</a><br>";
}
$a++;
echo $tab;
}
echo " </td></tr></table>\";\n";
?>
bild<?php echo $random ?>.innerHTML = "<img src=\"minus.jpg\">";
}
else {
<?php echo $fx[$random1].$random ?> = 1;
menu<?php echo $random ?>.innerHTML = "";
bild<?php echo $random ?>.innerHTML = "<img src=\"plus.jpg\">";
}
}
</script>
<table border="0" cellpadding="3px" cellspacing="0" width="150px">
<tr style="cursor:hand" onclick="menue<?php echo $random ?>()">
<td id="bild<?php echo $random ?>" width="11px">
<img src="plus.jpg" width="9px" height="9px">
</td>
<td width="139px">
<?php echo $head ?>
</td>
</tr>
<tr>
<td colspan="2" id="menu<?php echo $random ?>">
</td>
</tr>
</table>
</pre>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>
der quellcode ist "kindisch", aber es war einer meiner ersten selbergemachten.... das hat mich damals einen ganzen nachmittag gekostet
Bearbeitet von tomstig am 15.02.2004, 23:28
|
Lord
Licked by Jan Itor
|
Hilfe!Gehts nicht einfacher? Ich bin ja froh, wenn ich meinen viel kürzeren Code an einem Nachmittag zambring... Könnt ich nicht einfach eine temporäre .html Datei mit der eingegebenen Anzahl Band/Alben-EingabeFeldern erstellen, die mit Datensatz.php auswerten und dann wieder löschen?
|
Lord
Licked by Jan Itor
|
So, Big THX @ Tomstig, hab deinen Code analysiert, seziert, gekürzt und dann endlich das Prinzip verstanden! Jetzt funzt alles so, wie ichs wollte! *freu*
|
tomstig
OC Addicted
|
sehr gut du kannst auch nur eine datei machen... geht wie folgt: (das ist das simpelste beispiel) <?php
if(!isset($_GET['[COLOR=deeppink]submit[/COLOR]'])){ //hier schaut er, ob in der adresszeile schon "submit=" steht.... wenn nein soll er den folgenden code ausführen
?>
<form action="<?php $PHP_SELF ?>" method="get"> //es gibt was besseres als $PHP_SELF, aber ich finde die global-variable nicht :(; $PHP_SELF leitet dich auf die gleiche seite weiter...
Name: <input type="text" name="name">
<input type="submit" value="Abschicken" name="[COLOR=deeppink]submit[/COLOR]"> //mit name wird später in die adresszeile "submit=Abschicken" geschrieben...
</form>
<?php
}else{ //wenn es ein submit in der adresszeile gibt, dann gehts hier weiter
echo "Hallo, " . $_GET['name'] . "!";
}?>
das ganze geht auch mit post... musst nur bei method "post" hinschreiben und $_GET mit $_POST austauschen.... mfg
|
funka
Legend ex-prophet(down below)
|
<?php
<form action="<?php $PHP_SELF ?>" method="get"> //es gibt was besseres als $PHP_SELF, aber ich finde die global-variable nicht :(; $PHP_SELF leitet dich auf die gleiche seite weiter...
?>
was besseres hm... $_SERVER['REQUEST_URI'] ? $_SERVER['SCRIPT_NAME'] ? __FILE__ koennts auch irgendwie sein - kommt auf die verwendung und umgebung (mod_rewrite etc) an aber ansich kannst es einfach weglassen die meisten browser schickens an die aktuelle uri - ist aber afair nicht in html 4.01 so definiert
|