PHP Unterstützung beim erstellen eines Erfassungsformulars

ekubij

Cadet 4th Year
Registriert
Dez. 2008
Beiträge
92
Guten Tag zusammen

Ich bräuchte ein wenig eure Hilfe, beim erstellen eines Spieler und Trainererfassungsformular. Ich habe auch schon begonnen, aber es gibt noch ein paar Probleme. Z. B dass die Seite einfach weiss ist http://handball-balsthal.ch/jere/html.php. Ein weiteres Problem, dass ich habe ist beim erfassen der Spieler, dort würde ich gerne ein Drowdown machen, damit man die verschidenen Mannschaften auswählen kann. Jetzt meine Frage muss ich das in der Aktion Spieler definieren oder beim mysql query?

Code zum Trainer hinzufügen:
PHP:
// Damit nur der Admin Spieler hinzufügen kann
if ($_SESSION['level'] == 2) {

//Aktion mit den verschidenen Input Type boxen
if ($_GET['aktion'] == 30) {
$inhalt = '<form name="input" action="html.php?aktion=30" method="post">
<table>
<tr><td>Name</td><td><input type="text" name="name" /></td></tr>
<tr><td>Vorname</td><td><input type="text" name="vorname" /></td></tr>
<tr><td>Jahrgang</td><td><input type="int" name="jahrgamg" /></td></tr>
</table>
</form>';
}

//Event neutrainer damit man als Admin den Hinzufügen Button sieht
 if ($_GET['event'] == “neutrainer”) {
 
$inhalt = '<form name="input" action="html.php?aktion=72"method="post">
<table>
<tr><td>Trainer hinzufügen</td><td><input type="text" name="trainerh" /></td></tr>
</table>
</form>';
}
echo $inhalt;
}

//Mysql query zum einfügen der Daten
mysql_query("INSERT INTO trainer (name, vorname, jahrgang) VALUES ('".$_POST[name]."', '".$_POST[vorname]."', '".$_POST[jahrgang]."')");

Code zum Hinzüfugen der Spieler (ebenfallls in der 2 Session:
PHP:
//Aktion Spieler hinzufügen
if ($_GET['aktion'] == spielerhinz) {
$inhalt = '<form name="input" action="html.php?aktion=71" method="post">
<table>
<tr><td>Name</td><td><input type="text" name="name" /></td></tr>
<tr><td>Vorname</td><td><input type="text" name="vorname" /></td></tr>
<tr><td>Jahrgang</td><td><input type="int" name="jahrgamg" /></td></tr>
<tr><td>Wohnort</td><td><input type="text" name="wohnort" /></td></tr>
<tr><td>Karrierestart</td><td><input type="int" name="karrierestart" /></td></tr>
<tr><td>Funktion</td><td><input type="text" name="funktion" /></td></tr>
mannschaften_fk mit drowpdown!!!!
</table>
</form>';
}

//Event neuspieler
 
if ($_GET['event'] == “neuspieler”) {
 
$inhalt = '<form name="input" action="html.php?aktion=72"method="post">
<table>
<tr><td>Spieler hinzufügen</td><td><input type="text" name="spielerh" /></td></tr>
</table>
</form>';
}
echo $inhalt
}

//Mysql Query für die Spieler
mysql_query("INSERT INTO spieler (name, vorname, jahrgang, wohnort, karrierestart, funktion) VALUES ('".$_POST[name]."', '".$_POST[vorname]."', '".$_POST[jahrgang]."', '".$_POST[wohnort]."', '".$_POST[karrierestart]."', '".$_POST[funktion]."', '".$_POST[mannschaften] == $row['id'] ? " selected": "")");

greez ekubij
 
Moin moin !
Leider ist der Link von dir nicht ereichbar.

Und als ersten fällt mir auf das du überhauot keinen Submit Button hast ?
Für das Dropdown menü musst du folgendes machen.

PHP:
// Anpassen für alle einträge müsstest das noch
$daten = mysql_fetch_object(mysql_query("SELECT name FROM manschaften")); // oder so ähnlich
// Über die Daten iterieren
echo "<select>";
for($i = 0; $i < count($daten); $i++) { //Oder mit foreach......
     echo "<option value='".$i."'>".$daten[$i]['name']."</option>";
}
echo "</select>";

Habs nu nich getestet aber so solllte es gehen.

Alternativ kannst du statt $i auch den namen als value für die option nehmen. Wenn während des bearbeitens aber weder die DB noch der Array geändert wird entspricht jedes $i genau einer mannschaft und lässt sich so eindeutig zuweisen.

Dann noch ein bissl allgemeines.
Du solltest die Aktionen nicht als Zahlen kodieren, sonst wirst du irgendwann irre wenn es mal in 2 Mionaten bearbeiten musst und k.A. mehr hast was die Zahlen bedeuten.

am besten du definierst dir irgendwie konstanten !

PHP:
define(AKTION_SPIELER_HINZUFUEGEN, 40);{

dann sind die Zahlen wenigstens immer gleich und wenn sich mal was ändert musst du nur einmal die definition ändern.
Und scheue dich nicht davor klartext zu benutzen ! Lieber einen etwas längeren aber eindeutigen Variablennamen nehmen.
Eclipse und Netbeans (und gewiss viele andere IDE's) nehmen einem das tippen ja eh ab ;)
 
Zuletzt bearbeitet:
Nun ja, es kann schon mal daran liegen, dass du gar nicht die Berechtigung für Level 2 hast. Du kannst ja eine Abfrage machen.
PHP:
if ($_SESSION['level'] != 2) { echo "Keine Berechtigung"; }

Am einfachsten wäre es, wenn du deine mysql_query in eine andere Datei auslagerst, zum Beispiel in eine "insert.php". Weil so wie es jetzt ist rufst du mysql_query immer auf.
Und dann nach ein paar Sekunden kannst du eine Weiterleitung auf deine Startseite machen.
PHP:
<meta http-equiv="refresh" content="3;url=http://handball-balsthal.ch/jere/" />
 
@ Mercsen und Meister_Alucard

Ich danke schon mal für die schnellen Antworten.

Den Submit Button habe ich wirklich vergessen xD

Ich weiss jetzt wiso die Seite weiss ist, es gibt einen Internal Server Error gibt. Aber ich kann mir nicht genau vorstellen weshalb es diesen Internal Server Error gibt, habt ihr eine Idee?

@Mercsen kämme dein Code dann dort rein? Und muss ich dann für alle Einträge(also alle Mannschaften z.B U21) ein jeweiliger Eintrag machen? Danke dann noch für deinen Hinweis wegen den Aktionen

PHP:
$inhalt = '<form name="input" action="html.php?aktion=72"method="post"> 
<table> 
<tr><td>Spieler hinzufügen</td><td><input type="text" name="spielerh" /></td></tr> 
</table> 
</form>'; 
} 

// Anpassen für alle einträge müsstest das noch
$daten = mysql_fetch_object(mysql_query("SELECT name FROM manschaften")); // oder so ähnlich
// Über die Daten iterieren
echo "<select>";
for($i = 0; $i < count($daten); $i++) { //Oder mit foreach......
     echo "<option value='".$i."'>".$daten[$i]['name']."</option>";
}
echo "</select>";  

echo $inhalt

@ Meister_Alucard
Die Abfrage habe ich ausgeführt, und du hattest Recht es kommt die Nachricht, dass ich keine Berechtigung hätte. Das kommt aber nur solange ich mich nicht als Admin angemeldet habe.

Das mit dem mysql_query auslagern wäre wohl noch eine gute Idee. Damit dass dann funktioniert muss einfach diesen Code und die mysql_querys drin habe?
<meta http-equiv="refresh" content="3;url=http://handball-balsthal.ch/jere/" />

Ich hoffe ihr könnt mir helfen

greez
 
Hmm also wie ich den code verstehe gehört das so:

PHP:
if ($_GET['aktion'] == spielerhinz) { 
$inhalt = '<form name="input" action="html.php?aktion=71" method="post"> 
<table> 
<tr><td>Name</td><td><input type="text" name="name" /></td></tr> 
<tr><td>Vorname</td><td><input type="text" name="vorname" /></td></tr> 
<tr><td>Jahrgang</td><td><input type="int" name="jahrgamg" /></td></tr> 
<tr><td>Wohnort</td><td><input type="text" name="wohnort" /></td></tr> 
<tr><td>Karrierestart</td><td><input type="int" name="karrierestart" /></td></tr> 
<tr><td>Funktion</td><td><input type="text" name="funktion" /></td></tr> 
<tr><td>Manschaft</td><td>'.makeDropdown().'</td></tr>
</table> 
</form>'; 

function makeDropdown() {
// Anpassen für alle einträge müsstest das noch
$daten = mysql_fetch_object(mysql_query("SELECT name FROM manschaften")); // oder so ähnlich
// Über die Daten iterieren
echo "<select name='manschaft'>";
for($i = 0; $i < count($daten); $i++) { //Oder mit foreach......
     echo "<option value='".$i."'>".$daten[$i]['name']."</option>";
}
echo "</select>";  }
}

Kannst makeDroodown() aufrufen wo du willst, es muss aber auf jedenfall zwischen <form> und </form> sein da es ebenfalls ein Formular Element ist.

Auf die Werte kannst du dann per $_POST['manschaft'] zugreifen.
Das hat dann den Wert den du bei value im option feld eingetragen hast :)

Und zu formularen nur soviel:
Am besten du checkst ob das Formular gesendet wurde und verarbeitest dann die daten, ansonsten eben lässt du das formular anzeigen.

PHP:
if(isset($_POST['submit'])) { //oder irgendein element des formulars
        // Auswertung hier, z.b. eingaben prüfen, Daten in DB kkloppen etc.
} else {
        // Formular anzeigen
}

Es gibt natürlich noch andere und evtl. schönere wege aber so sollte es vorerst reichen.
 
Zuletzt bearbeitet:
Hallo zusammen

Ich bins nochmals, also das Erfassungsformular für den Trainer funktioniert nun. Jetzt muss ich es einfach bei den Spieler auch noch zum laufen bringen.

@Mercsen
// Anpassen für alle einträge müsstest das noch
$daten = mysql_fetch_object(mysql_query("SELECT name FROM manschaften"));

Ehm verstehe ich das richtig , das ich jetzt bei ($daten = ) di verschiedene IDs der Mannschaften angeben könnte oder? In der Tabelle Mannschaften habe ich z.b die 3 Liga Mannschaft mit der ID 1. Kann ich jetzt dort das anhand der ID anpassen?


Hätte jemand eine andere Idee wie ich das bei den Spieler machen könnte, damit man von einem Drowpdownmenu aus die Mannschaften auswählen kann, oder findet Ihr die Lösung von Mercsen am besten?

greez
 
Wäre das mit dem Drowpdownmenu Code so richtig?

PHP:
if ($_GET['aktion'] == spielerhinz) { 
$inhalt = '<form name="input" action="html.php?aktion=71" method="post"> 
<table> 
<tr><td>Name</td><td><input type="text" name="name" /></td></tr> 
<tr><td>Vorname</td><td><input type="text" name="vorname" /></td></tr> 
<tr><td>Jahrgang</td><td><input type="int" name="jahrgamg" /></td></tr> 
<tr><td>Wohnort</td><td><input type="text" name="wohnort" /></td></tr> 
<tr><td>Karrierestart</td><td><input type="int" name="karrierestart" /></td></tr> 
<tr><td>Funktion</td><td><input type="text" name="funktion" /></td></tr> 
<tr><td>Manschaft</td><td>'.makeDropdown().'</td></tr>
<tr><td><input type="submit" value="Absenden" /></td></tr>
</table> 
</form>'; 

function makeDropdown() {
// Anpassen für alle einträge müsstest das noch
$daten = 1, 3Liga(mysql_query("SELECT name FROM manschaften")); 
$daten = 2, U21(mysql_query("SELECT name FROM manschaften")); 



// Über die Daten iterieren
echo "<select name='manschaft'>";
for($i = 0; $i < count($daten); $i++) { //Oder mit foreach......
     echo "<option value='".$i."'>".$daten[$i]['name'].”-”.$daten[$i]['id']."'>".$daten[$i]['name']."</option>";
}

echo "</select>";  }
}

greez
 
hi Bauergiesen

Danke für deine Antwort!

Danke für den Hinweis, habe den Fehler auch gerade gesehn. Das mit der Funktion werde ich mir ans Herz legen:)

Hast du oder jemand ander sonst noch ein Fehler gesehen? Sollte das so funktionieren?

greez
 
Deine Funktion kann so nicht funktionieren.
Du gibts in deiner Funktion per echo schon Dinge aus, obwohl du eigentlich an der Stelle des Funktionsaufrufs als Rückgabewert einen String erwartet.
Du solltest dir somit die Werte, welche an der Stelle in die Tabelle/Formular sollen in einer Variable speichern und zurückgeben.

Ich hoffe, dass dir dies an Erklärung reicht.
 
Verstehe ich das richtig, dass ich anstatt denn echos, eine Textadditon machen müsste, und diese dann per return zurückgeben?

So in diesem Style:

PHP:
$jere = test();

 
Function test() {

 

$returnstring = „test1“;

$returnstring .= „ test2“;

$returnstring .= „test3“;

 

return($returnstring)

}

greez
 
ja das mit den Anführungszeichen ist ja nur ein Detail :) aber trotzdem danke für den Hinweis.

Beziehe mich hier vorallem auf den Post von Bauergiesen:
Deine Funktion kann so nicht funktionieren.
Du gibts in deiner Funktion per echo schon Dinge aus, obwohl du eigentlich an der Stelle des Funktionsaufrufs als Rückgabewert einen String erwartet.
Du solltest dir somit die Werte, welche an der Stelle in die Tabelle/Formular sollen in einer Variable speichern und zurückgeben.

Ich hoffe, dass dir dies an Erklärung reicht.
 
Ja, der Einwand ist korrekt. Du musst die Funktion so wie von Dir beschrieben aufbauen.

PHP:
<?php function abc(){ $str = "abc"; $str .= "def"; return $str; } ?>
 
Zurück
Oben