Brauche Hilfe bei Formular
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abrufen
anfrage
ausgabe
button
code
datum
fehler
formular
host
http
post
problem
server
session
show
status
tag
url
variable leer form
verbindungsdaten
-
Hallo, ich brauche Hilfe, bei einem tag/formular">Formular.
Sehen könnt ihr es auf http://show-ts.bplaced.net/ts4.php
Und zwar: Errorposting ist on.
1. Ich möchte oben einen Server wählen.
2. Status abrufen -> in der unteren Tabelle wird ein Punkt gesetzt, ob der Server zur Zeit frei ist oder nicht.
3. den Punkt in der rechten Hälfte der Tabelle auf das jeweils andere setzen
4. Status ändern in der MySQL DB
Problem:
Serverwählen ok
Serverstatus abrufen ok
Serverstatus abgerufen -> Variable welcher Server gewählt wurde ist leer (zu erkennen an "Welcher Server" daneben steht keine Zahl, wenn man draufklickt)
Bin neu in php, und habs mit session versucht, aber nicht hinbekommen. Bitte jemanden mir zu helfen!
Info: die anderen Beiden Button sind nur um Fehler zu suchen, sie werden wieder entfernt.
<?php error_reporting(E_ALL); // Die Session in jeder Datei neu starten session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> </head> <body style="text-align:center; font-family:Arial, Helvetica, sans-serif;"> <?php $_SESSION['servervar'] = intval($_POST['server']); #include_once("tools.php"); #DB Verbindungsdaten. $host = "localhost"; $user = ""; $pass = ""; $db = ""; $link = @mysql_connect($host, $user, $pass); @mysql_select_db($db, $link); if (!$link) { die('Verbindung zur Datenbank fehlgeschlagen: ' . mysql_error()); } ?> <div>Welchen Serverstatus möchten Sie ändern?<br /> <br /> <form action="" method="post" /> <table border="1" style="text-align:center;" align="center"> <tr> <td><table> <tr> <td width="110">Teamspeak 2<br /> <br /></td> <td width="110">Teamspeak 3<br /> <br /></td> </tr> </table> <table style="text-align:left;"> <tr> <td width="35"><input type="radio" name="server" value="0" /></td> <td width="70">Server 1</td> <td width="35"><input type="radio" name="server" value="10" /></td> <td width="70">Server 1</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="1" /></td> <td width="70">Server 2</td> <td width="35"><input type="radio" name="server" value="11" /></td> <td width="70">Server 2</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="2" /></td> <td width="70">Server 3</td> <td width="35"><input type="radio" name="server" value="12" /></td> <td width="70">Server 3</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="3" /></td> <td width="70">Server 4</td> <td width="35"><input type="radio" name="server" value="13" /></td> <td width="70">Server 4</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="4" /></td> <td width="70">Server 5</td> <td width="35"><input type="radio" name="server" value="14" /></td> <td width="70">Server 5</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="5" /></td> <td width="70">Server 6</td> <td width="35"><input type="radio" name="server" value="15" /></td> <td width="70">Server 6</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="6" /></td> <td width="70">Server 7</td> <td width="35"><input type="radio" name="server" value="16" /></td> <td width="70">Server 7</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="7" /></td> <td width="70">Server 8</td> <td width="35"><input type="radio" name="server" value="17" /></td> <td width="70">Server 8</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="8" /></td> <td width="70">Server 9</td> <td width="35"><input type="radio" name="server" value="18" /></td> <td width="70">Server 9</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="9" /></td> <td width="70">Server 10</td> <td width="35"><input type="radio" name="server" value="19" /></td> <td width="70">Server 10</td> </tr> </table></td> </tr> </table> <br /> <input type="submit" name="submit_abrufen" value="Status abrufen" /> <br /> <br /> <table border="1" align="center" style="text-align:center;"> <tr> <td><table> <tr> <td width="150">aktueller Status</td> <td width="150">geänderter Status</td> </tr> </table> <table> <tr> <td width="73" style="background:#0F3;">frei</td> <td width="73" style="background:#F00;">belegt</td> <td width="73" style="background:#0F3;">frei</td> <td width="73" style="background:#F00;">belegt</td> </tr> <tr> <?php if(isset($_POST['submit_abrufen'])) { echo ('Server gewählt, SELECT-Anfrage Wert= ' .$_POST['server']. "/0-19"); $sql = mysql_query("SELECT ts_server_frei_besetzt FROM ts_server WHERE ts_server_id = '".intval($_POST['server'])."'"); $row = mysql_fetch_array($sql); $server_stat = intval($row['ts_server_frei_besetzt']); if(!$sql) { echo mysql_error(); } } if($server_stat == 1) { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" checked=\"checked\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } elseif($server_stat == 2) { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" checked=\"checked\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } else { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } ?> </tr> </table></td> </tr> </table> <br /> <br /> <input type="submit" name="submit_update" value="Status ändern" /> <input type="submit" name="submit_welcherstatus" value="Welcher Status" /> <input type="submit" name="submit_welcherstatus" value="Welcher Server" /> <?php /*if(isset($_POST['server'])) { echo $_POST['server']; }*/ echo $_SESSION['servervar']; /*****Status ändern*****/ if(isset($_POST['submit_update'])) { $sqlupdate = mysql_query("UPDATE ts_server SET ts_server_frei_besetzt = '".intval($_POST['status'])."' WHERE ts_server_id = '".$_SESSION['servervar']."'"); if(!$sqlupdate) { echo mysql_error(); echo ('Server sollte noch in Variable sein: Wert= ' .$_SESSION['servervar']. "/0-19"); } } if(isset($_POST['submit_welcherstatus'])) { echo $_POST['status']; } if(isset($_POST['submit_welcherserver'])) { echo ('Server sollte noch in Variable sein: Wert= ' .$_SESSION['servervar']. "/0-19"); } mysql_close($link); ?> </div> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich habe mir jetzt Deinen Code nicht im Detail angeschaut aber mir fällt auf das Du das <form>tag nicht beendet hast (</form>)
In Zeile 16 wird ja anscheinend kein "server" gefunden wenn man "welchen server" klickt also schließe ich mal daraus das keine variabel mit dem namen "server" geschickt wurde. (kannst du mit if isset($_POST(''server)) überprüfen )
Am besten schreibst du mal folgenden Code an den Start um Dir alle Post-Daten auszugeben die gesendet wurden:
foreach ($_POST as $key => $value) { echo "<b>$key </b>= $value<br>"; }
ungetestet
-
Habe deinen Code mal eingefügt.
Wenn man die Seite aufruft, kann ja noch kein "server" gefunden werden, weil ja noch keiner gewählt wurde, ist ja richtig. Aber wenn einer gewählt wurde, wir anscheinend die Seite irgendwie neugeladen, somit ist die Variable leer.
Form-Tag ist doch mit <form /> selbstgeschlossen ( /> ) -
show-teamspeak schrieb:
Habe deinen Code mal eingefügt.
Wenn man die Seite aufruft, kann ja noch kein "server" gefunden werden, weil ja noch keiner gewählt wurde, ist ja richtig. Aber wenn einer gewählt wurde, wir anscheinend die Seite irgendwie neugeladen, somit ist die Variable leer.
Form-Tag ist doch mit <form /> selbstgeschlossen ( /> )
Dann wird das wohl auch ein Fehler sein. Soweit ich weiß, muss ein <form>-Tag immer aus Open- und Close Tag bestehen, und darf nicht wie <br /> selbstschließend sein. Sonst behandelt der Browser doch den ganzen Rest der Seite auch als Formular. Das ist sicherlich nicht unbedingt ein Problem, aber dürfte HTML-mäßig nicht korrekt sein. -
So, ich weiß jetzt wo der Fehler liegt, weiß aber nicht, wie ich ihn beheben kann.
UNd zwar wird in die $_SESSION['servervar'] garnichts eingetragen. Ich will sie mir ganz unten ausgeben lassen, aber immer 0
Hier mein code, bisschen aufgeräumter:
<?php error_reporting(E_ALL); // Die Session in jeder Datei neu starten session_start(); foreach ($_POST as $key => $value) { echo "<b>$key </b>= $value<br>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> </head> <body style="text-align:center; font-family:Arial, Helvetica, sans-serif;"> <?php #include_once("tools.php"); #DB Verbindungsdaten. $host = "localhost"; $user = ""; $pass = ""; $db = ""; $link = @mysql_connect($host, $user, $pass); @mysql_select_db($db, $link); if (!$link) { die('Verbindung zur Datenbank fehlgeschlagen: ' . mysql_error()); } ?> <div>Welchen Serverstatus möchten Sie ändern?<br /> <br /> <form action="" method="post"> <table border="1" style="text-align:center;" align="center"> <tr> <td><table> <tr> <td width="110">Teamspeak 2<br /> <br /></td> <td width="110">Teamspeak 3<br /> <br /></td> </tr> </table> <table style="text-align:left;"> <tr> <td width="35"><input type="radio" name="server" value="0" /></td> <td width="70">Server 1</td> <td width="35"><input type="radio" name="server" value="10" /></td> <td width="70">Server 1</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="1" /></td> <td width="70">Server 2</td> <td width="35"><input type="radio" name="server" value="11" /></td> <td width="70">Server 2</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="2" /></td> <td width="70">Server 3</td> <td width="35"><input type="radio" name="server" value="12" /></td> <td width="70">Server 3</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="3" /></td> <td width="70">Server 4</td> <td width="35"><input type="radio" name="server" value="13" /></td> <td width="70">Server 4</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="4" /></td> <td width="70">Server 5</td> <td width="35"><input type="radio" name="server" value="14" /></td> <td width="70">Server 5</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="5" /></td> <td width="70">Server 6</td> <td width="35"><input type="radio" name="server" value="15" /></td> <td width="70">Server 6</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="6" /></td> <td width="70">Server 7</td> <td width="35"><input type="radio" name="server" value="16" /></td> <td width="70">Server 7</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="7" /></td> <td width="70">Server 8</td> <td width="35"><input type="radio" name="server" value="17" /></td> <td width="70">Server 8</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="8" /></td> <td width="70">Server 9</td> <td width="35"><input type="radio" name="server" value="18" /></td> <td width="70">Server 9</td> </tr> <tr> <td width="35"><input type="radio" name="server" value="9" /></td> <td width="70">Server 10</td> <td width="35"><input type="radio" name="server" value="19" /></td> <td width="70">Server 10</td> </tr> </table></td> </tr> </table> <br /> <input type="submit" name="submit_abrufen" value="Status abrufen" /> <br /> <br /> <table border="1" align="center" style="text-align:center;"> <tr> <td><table> <tr> <td width="150">aktueller Status</td> <td width="150">geänderter Status</td> </tr> </table> <table> <tr> <td width="73" style="background:#0F3;">frei</td> <td width="73" style="background:#F00;">belegt</td> <td width="73" style="background:#0F3;">frei</td> <td width="73" style="background:#F00;">belegt</td> </tr> <tr> <?php if(isset($_POST['submit_abrufen'])) { echo ('Server gewählt, SELECT-Anfrage Wert= ' .$_POST['server']. "/0-19"); $sql = mysql_query("SELECT ts_server_frei_besetzt FROM ts_server WHERE ts_server_id = '".intval($_POST['server'])."'"); $row = mysql_fetch_array($sql); $server_stat = intval($row['ts_server_frei_besetzt']); $_SESSION['servervar'] = intval($_POST[$server_stat]); if(!$sql) { echo mysql_error(); } } if($server_stat == 1) { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" checked=\"checked\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } elseif($server_stat == 2) { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" checked=\"checked\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } else { echo "<td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"\" /></td> <td width=\"40\" style=\"background:#0F3;\"> <input type=\"radio\" name=\"status\" value=\"1\" /></td> <td width=\"40\" style=\"background:#F00;\"> <input type=\"radio\" name=\"status\" value=\"2\" /></td>"; } ?> </tr> </table></td> </tr> </table> <br /> <br /> <input type="submit" name="submit_update" value="Status ändern" /> </form> <?php ################ Status ändern ###################### if(isset($_POST['submit_update'])) { $sqlupdate = mysql_query("UPDATE ts_server SET ts_server_frei_besetzt = '".intval($_POST['status'])."' WHERE ts_server_id = '".$_SESSION['servervar']."'"); echo mysql_error(); if(!$sqlupdate) { echo mysql_error(); } } mysql_close($link); echo "Die Session lautet: "; echo $_SESSION['servervar']; ?> </div> </body> </html>
-
show-teamspeak schrieb:
So, ich weiß jetzt wo der Fehler liegt, weiß aber nicht, wie ich ihn beheben kann.
UNd zwar wird in die $_SESSION['servervar'] garnichts eingetragen. Ich will sie mir ganz unten ausgeben lassen, aber immer 0
Da die Session über session_start() intialisierst, sollte die superglobale Variable $_SESSION definitiv beschreibbar sein. Dazu solltest du beachten, dass PHP dir eine Warnung geben würde, wenn du versuchst in $_SESSION zu schreiben, aber die Session gar nicht richtig gestartet wurde. Ich denke, das Problem liegt wohl eher am Füllen der Variable. Allerdings weiß ich gerade nicht, was falsch sein könnte. Du rufst die Variablen über POST auf. Keine Ahnung, aber $_SESSION sollte bei dir defintiv beschreibbar sein. -
Ich glaube entzwischen das die sache viel einfacher ist.
show-teamspeak schrieb:
(...)
wenn einer gewählt wurde, wir anscheinend die Seite irgendwie neugeladen, somit ist die Variable leer.
Form-Tag ist doch mit <form /> selbstgeschlossen ( /> )
Tusammen mit dem Code habe ich den Verdacht das Dir das Konzept von Formularen nicht ganz klar ist.
Allerdings wundert es mich das Du ohne dieses wissen so weit gekommen bist..
-wenn auf "Status abrufen" und "Status ändern" geklickt wird, wird die Seite neugeladen (soll auch so sein).
-alle input elemente (zB. radio buttons ) werden dabei als POST gesendet. (In der Form name=value)
-Beim neuladen werden alle vorher selektierten inputs wieder entfernt (weil die Seite ja neu geladen wurde)
versuch mal php und html teil zu trennen,auf Tabellen zu verzichten (css) und insgesamt Deinen Code ein bisschen übersichtlicher zu gestalten
klick mich!
<?php error_reporting(E_ALL); $error_out = ""; foreach ($_POST as $key => $value) { $error_out .= "<b>$key </b>= $value<br>"; } $server = Array("","","","","");$server_off = "";$server_on = ""; $ausgabe = ""; $dieser_server = ""; // ich hole mir den wert von "server" und prüfe ob es eine nummer ist (um sql-injection abzuwehren) if (isset($_POST['server'])) { if(is_numeric($_POST['server'])) { $dieser_server = $_POST['server']; //die servernummer die gewählt wurde $server[$dieser_server-1]=" checked ";//den gewählten server erneut eintragen } } if (isset($_POST['status_abrufen'])) //Status abrufen ! { if ($dieser_server != ""){ //hol Dir die Daten aus sql von $dieser_server // ich simuliere das mal indem ich immer sage der server ist online $server_on = " checked "; }else{ $ausgabe = "Es wurde kein Server gewählt<br>";} } if (isset($_POST['status_aendern'])) //Status ändern ! { //überprüfen ob "status" gesendet wurde & eine Zahl ist if (isset($_POST['status']) && $dieser_server != "") { if(is_numeric($_POST['status'])) { $diesen_wert = $_POST['status']; //ändere Die Daten in sql von $dieser_server zu $diesen_wert (0=off,1=on) //werte wieder eintragen if ( $diesen_wert==1) $server_on = " checked "; if ( $diesen_wert==0) $server_off = " checked "; $ausgabe = "Die Daten wurden geändert <br>"; } }else { //der "Status ändern" Button wurde gedrückt aber kein wert gewählt (on/off) if (!isset($_POST['status'])) $ausgabe .= "Es wurde vergessen einen Status zu wählen (on/off)<br>"; if ($dieser_server == "") $ausgabe .= "Es wurde kein Server gewählt<br>"; } } ?> <html> <head> <title>formular-beispiel</title> </head> <body> <div style="border:red solid 1px ;margin: 5px;"> <?php echo $error_out; ?> </div> <form action="" method="post"> Server 1<input type="radio" name="server" <? echo $server[0]; ?> value="1" /> Server 2<input type="radio" name="server" <? echo $server[1]; ?> value="2" /> Server 3<input type="radio" name="server" <? echo $server[2]; ?> value="3" /> Server 4<input type="radio" name="server" <? echo $server[3]; ?> value="4" /> Server 5<input type="radio" name="server" <? echo $server[4]; ?> value="5" /> <br> <input type="submit" name="status_abrufen" value="Status abrufen" /> <input type="submit" name="status_aendern" value="Status ändern" /> <br> Server status Online<input type="radio" name="status"<? echo $server_on; ?> value="1" /> Offline<input type="radio" name="status"<? echo $server_off; ?> value="0" /> </form> <? echo $ausgabe; ?> </body> </html>
Beitrag zuletzt geändert: 19.8.2010 17:12:25 von simuliertes -
Hallo, Vielen Dank erstmal!
Ich blick durch php leider noch nicht so durch, es wäre daher sehr nett, wenn du mir das formular fertigschreiben könntest, da ich es dringend brauche. Denn es muss ja auch irgendwo die Select-Anfrage rein etc.
Meine SQL DB sieht so aus: http://img3.imagebanana.com/img/4uoknb2s/db.PNG
Wäre dir sehr dankbar, wenn du was für haben möchtest, sag bescheid! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage