• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Brauche bitte hilfe zu PHP Script <form> Frage:

revealed

Guru
Hallo!

Level "Hit me plently"! *bitte* :)

Also: Ich habe einen Script, mit dem möchte ich einen Datensatz zu einer Datenbank hinzufügen und entfernen. Das Hinzufügen script funktioniert auch schon soweit. Um dieses geht es hier. Da bin ich schon sehr froh dass ich diesen quasi anhand eines Tutorials aufbauen konnte! (quasi anhand einer art Template). Das sind so mit unter meine ersten Versuche mit PHP.

Jetzt habe ich allerdings eine Schwierigkeit und zwar sind in diesem Script Funktionen und der <form> (HTML) teil. In der Form ist ein Button" (submit). Bei dem Submit möchte ich noch ein Knopf einfügen der allerdings wieder zu einer anderen PHP Datei führt. Ich poste euch mal den Code.

Die Frage ist: Wie bekomme ich einen input button (submit) der auf eine andere Seite führt in diese TD:

Code:
<td>
<input name="add" type="submit" id="add" value="Hinzufügen!">
</td>
Bzw. dafür müsste ich vermutlich eine eigene Funktion schreiben? Wie muss diese aussehen?

Meine momentane Notlösung ist im script dieses echo":
Code:
echo "<div style='margin-left:257;'><form action='hm.php'><input type='submit' value='Cancel'></form>

Das ist aber wohl nicht so gedacht. Das wird auch an einer anderen Stelle dargestellt.

Vielen Dank für die Anfängerhilfe! Ich hänge den ganzen Script noch an!

Grüße,

R

Code:
<html>
<head>
<title>Add New Record TO FTP User Database</title>
</head>
<body>
<?php
if(isset($_POST['add']))
{
$host = 'localhost:3036';
$dbuser = 'geheim';
$dbpw = 'noch_geheimer';
$db = 'ftp';
$table = 'ftpaccounts';
$conn = mysql_connect($host, $dbuser, $dbpw);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() )
{
$User = addslashes ($_POST['User']);
$status = addslashes ($_POST['status']);
$Password = addslashes ($_POST['Password']);
$Uid = addslashes ($_POST['Uid']);
$Gid = addslashes ($_POST['Gid']);
$Dir = addslashes ($_POST['Dir']);
$ULBandwidth = addslashes ($_POST['ULBandwidth']);
$DLBandwidth = addslashes ($_POST['DLBandwidth']);
$comment = addslashes ($_POST['comment']);
$ipaccess = addslashes ($_POST['ipaccess']);
$QuotaSize = addslashes ($_POST['QuotaSize']);
$QuotaFiles = addslashes ($_POST['QuotaFiles']);
}
else
{
   echo "lal";
$User = $_POST['User'];
$status = $_POST['status'];
$Password = $_POST['Password'];
$Uid = $_POST['Uid'];
$Gid = $_POST['Gid'];
$Dir = $_POST['Dir'];
$ULBandwidth = $_POST['ULBandwidth'];
$DLBandwidth = $_POST['DLBandwidth'];
$comment = $_POST['comment'];
$ipaccess = $_POST['ipaccess'];
$QuotaSize = $_POST['QuotaSize'];
$QuotaFiles = $_POST['QuotaFiles'];
}

$sql = "INSERT INTO $table ".
       "(User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles) ".
       "VALUES ".
       "('$User', '$status', '$Password', '$Uid', '$Gid', '$Dir', '$ULBandwidth', '$DLBandwidth', '$comment', '$ipaccess', '$QuotaSize', '$QuotaFiles')";
mysql_select_db($db);
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
echo "$sql";
  die('Could not enter data: ' . mysql_error()
  . '<br><br>' . "<form action='hm.php'><input type='submit' value='Zurück!'></form><br>\n");
}
echo "Entered data successfully!\n<br><br>";
echo "<form action='hm.php'><input type='submit' value='Zurück!'></form><br>\n";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="250">User</td>
<td>
<input name="User" type="text" id="User">
</td>
</tr>
<tr>
<td width="250">status</td>
<td>
<input name="status" type="text" id="status">
</td>
</tr>
<tr>
<td width="250">Password</td>
<td>
<input name="Password" type="text" id="Password">
</td>
</tr>
<tr>
<td width="250">Uid</td>
<td>
<input name="Uid" type="text" id="Uid">
</td>
</tr>
<tr>
<td width="250">Gid</td>
<td>
<input name="Gid" type="text" id="Gid">
</td>
</tr>
<tr>
<td width="250">Dir</td>
<td>
<input name="Dir" type="text" id="Dir">
</td>
</tr>
<tr>
<td width="250">ULBandwidth</td>
<td>
<input name="ULBandwidth" type="text" id="ULBandwidth">
</td>
</tr>
<tr>
<td width="250">DLBandwidth</td>
<td>
<input name="DLBandwidth" type="text" id="DLBandwidth">
</td>
</tr>
<tr>
<td width="250">comment</td>
<td>
<input name="comment" type="text" id="comment">
</td>
</tr>
<tr>
<td width="250">ipaccess</td>
<td>
<input name="ipaccess" type="text" id="ipaccess">
</td>
</tr>
<tr>
<td width="250">QuotaSize</td>
<td>
<input name="QuotaSize" type="text" id="QuotaSize">
</td>
</tr>
<tr>
<td width="250">QuotaFiles</td>
<td>
<input name="QuotaFiles" type="text" id="QuotaFiles">
</td>
</tr>
<tr>
<td width="250"> </td>
<td> </td>
</tr>
<tr>
<td width="250"> </td>
<td>
<input name="add" type="submit" id="add" value="Hinzufügen!">
</form>
</td>
<td>
</td>
</tr>
</table>
</form>
<?php
echo "<div style='margin-left:257;'><form action='hm.php'><input type='submit' value='Cancel'></form></div><br>\n"; 
}
?>
</body>
</html>

,,, ich erhoffe mir, dass ich es irgendwann vielleicht hinbekomme dass ich einfach einen User für FTP erstellen entfernen oder bearbeiten kann. Mit einem kleinen interface.

Der Zurück Knopf soll dann zu einer Seite führen wo alle Accounts Tabellarisch gelistet werden. In der Auflistung hat jede zweite Zeile eine andere Farbe. Das ist auch schon fertig.
 
Du solltest das so nicht lösen.
Wir setzen 3 Bereiche unterschiedlicher Aufgaben voraus.
1. html, xhtml, xul, etc.
2. client_seitiges scripting, eg. javascript
3. server_seitiges scripting, eg. perl,php

Trenne das. Es ist eine Unart, html, selbst wenn dynamisch, aus dem serverscript heraus zu erstellen.
Denke an css, Erweiterungen über js oder AJAX. Diese clientseitigen Änderungen sollten niemals das serverseitige script betreffen.

Bau dir eine schöne Seite aus html und css mit allen notwendigen form_tags, denke dabei gar nicht an php.
Verzichte auf submit und erstelle statt dessen einen <input type="button" onclick="formclick(this) ...>
Aus dieser strikten Trennung ergeben sich schon eine Menge Vorteile,
z.B. einfaches styling und simples Ändern der Seite,
in deiner js function formclick(..) kannst du wählen zwischen POST und GET, du kannst deine formdaten prüfen
und den user entsprechend warnen oder Daten anpassen, aber vor allem kannst du später dein AJAX dort implementieren.
Danach setzt du dein query oder auch mehrere aus dieser funktion ab, wenn nötig auch an unterschiedliche php's.
Empfangen am client kannst du einstweilen provisorisch in einem iframe mit size 0, oder später über AJAX gezielt in gewählte tags.
Mit diesem Aufbau der strikten Trennung stellt sich dein Problem nicht.

also
 

panamajo

Guru
Du kannst pro Formular beliebig viele Submit Buttons definieren. Mit PHP ist es eine gute Idee diese als Array zu behandeln:
Code:
<input type="submit" name="submit[delete]" value="Löschen" />
<input type="submit" name="submit[add]" value="Hinzufügen" />
...

Übermittelt wird nur der Wert des tatsächlich verwendeten Buttons:
Code:
if(isset($_REQUEST['submit']['delete']) {
        delete($_REQUEST);
} else if(isset($_REQUEST['submit']['add']) {
        add($_REQUEST);
}
 
OP
revealed

revealed

Guru
Danke für die Antwort! Das werde ich mir bald genau ansehen.

Auf die schnelle ist mir dies hier quasi beim Lesen klar geworden:
Code:
if(isset($_REQUEST['submit']['delete']) {
        delete($_REQUEST);

Wie schreibe ich jetzt das 'delete' die andere PHP Datei öffnet? Dann wäre das gelöst quasi :) Entschuldige falls ich die Frage zu schlecht geschildert habe. Weil mit der Funktion könnte ich ja dann beispielsweise... Also wie definiere ich 'delete'`? (ich nehm das einfach mal.. zum seiten öffnen)?

Falls ich das zunächst ohne Array tun wollte kann ich das mit $_POST tun?
Code:
if(isset($_POST['delete']))
{
// (Öffne Webseite) o. php File? Was muss ich hier schreiben dass die andere PHP Datei 
// geöffnet wird oder bin ich in die Falsche Richtung abgeschweift?
}
Code:
<form>
...
<td>
<input name="add" type="submit" id="add" value="Hinzufügen!">
<input name="delete" type="submit" id="delete" value="Zurück!">
...
</form>

@Gräfin Klara:
Du solltest das so nicht lösen.
Ja :) Zum probieren geht das jetzt schon. So weit bin ich da noch garnicht... Danke für den Wegweiser durch die Galaxis....

Ich hab schonmal ein bisschen von einem scrollbaren DIV gelesen.... mal schaun was noch so passiert..

Ich selbst würde das was du mir eben sehr gut deutlich gemacht hast lieber später umsetzen wenn ich ein bisschen herumgespielt habe..

Ich sitz ja noch im Sandkasten hier... Was mir sehr imponiert hat, beispielsweise finde ich jquery. Aber das ist mir noch nicht sooo wichtig. Es ginge mir momentan konkret darum, nachdem ich gefragt habe.

Das was ich momentan hauptsächlich meine ich verstanden habe bei der ganzen Geschichte ist:

1. Verbindung zu MySQL aufbauen
2. Abfrage oder MySQL statement verwenden.
3. Verbindung schliessen.

Das war das ziel für mich. Ich wüsste jetzt noch gerne wie ich:
4. Andere Seite öffnen kann. Im selben Form Tag.

Gruß,

R
 

panamajo

Guru
revealed schrieb:
Wie schreibe ich jetzt das 'delete' die andere PHP Datei öffnet?
Hm, vielleicht habe ich dein Problem noch nicht verstanden. Ich ging davon aus dass es darum geht mehrere Aktionen in einem HTML Formular anzubieten.

Das Beispiel mit "delete()" ist dabei generisch zu verstehen. Wenn du ein anderes PHP Skript ausführen willst dann mach das doch per require().
 
OP
revealed

revealed

Guru
Hallo!

Danke! Require ist natürlich auch schik... ( wird alles auf einer Seite dargestellt... )

Ich habe jetzt nochmal ein bisschen gelesen und habe das dann mit eueren Tipps so gemacht:

Code:
...
if(isset($_POST['back']))
{
  header("Location: hm.php"); 
}
if(isset($_POST['add']))
{
...

Code:
...
<td>
<input name="add" type="submit" id="add" value="Hinzufügen!">
<input name="back" type="submit" id="back" value="Zurück!">
</td>
...

Das leuchtet mir so jetzt erstmal ein glaub ich :)

Vielen Dank nochmals für den Schupss! :)

Jetzt sind halt in dieser Zelle beide Knöpfe nebeneinander das war was ich wollte.

Gruß,

R
 
Oben