Checkbox - in_array Problem
cc
- php
Hallo Leute!
Hintergrund:
über ein Formular kann man mehrere Checkboxen auswählen. Diese werden dann über ein Array in die mysql-Datenbank eingetragen. Das Auslesen in einem String klappt auch wunderbar.
formular.php
...
echo "<input type=\"checkbox\" name=\"taktik[]\" value=\"vk\"> Viererkette<br>\n";
echo "<input type=\"checkbox\" name=\"taktik[]\" value=\"rd\"> Raumdeckung<br>\n";
echo "<input type=\"checkbox\" name=\"taktik[]\" value=\"pr\"> Pressing</td>\n";
...
formularscript.php
...
$taktikarray = array ();
foreach ($_POST['taktik'] as $taktiken) {
$taktikarray[] = htmlspecialchars ($taktiken);
}
$taktik = implode (', ', $taktikarray);
...
Problem:
Wenn eine Checkbox ausgewählt wurde und in der Datenbank steht, dann soll diese beim editier-Formular, welches die Daten aus der mysql-Datenbank holt, als checked markiert werden.
formularedit.php
...
<input type="checkbox" name="taktik[]" value="vk" <?php if (in_array("vk", $taktik)) { echo "checked"; } ?>> Viererkette<br>
<input type="checkbox" name="taktik[]" value="rd" <?php if (in_array("rd", $taktik)) { echo "checked"; } ?>> Raumdeckung<br>
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) { echo "checked"; } ?>> Pressing
...
Mit dieser Erklärung - http://de3.php.net/manual/de/function.in-array.php - komme ich nicht wirklich weiter.
Ich hoffe, mir kann geholfen werden! :-)
Problem:
Wenn eine Checkbox ausgewählt wurde und in der Datenbank steht, dann soll diese beim editier-Formular, welches die Daten aus der mysql-Datenbank holt, als checked markiert werden.formularedit.php
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) { echo "checked"; } ?>> Pressing
...
Echo?? Ist das nicht zur reinen Ausgabe? Müsste doch eher so sein:
<input type="checkbox" name="taktik[]" value="pr" <?php if (in\_array("pr", $taktik)) { checked } ?>>
Hi!
Echo??
Otto, bist Du's?
Ist das nicht zur reinen Ausgabe?
Ja - eine Ausgabe in das zu erzeugende HTML-Dokument ist hier wohl angesagt.
Müsste doch eher so sein:
Nein!
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) { checked } ?>>
Da steht der Name einer (wahrscheinlich) nicht existierenden Konstanten im Block - was sollte das bitte bewirken?
off:PP
Problem:
Wenn eine Checkbox ausgewählt wurde und in der Datenbank steht, dann soll diese beim editier-Formular, welches die Daten aus der mysql-Datenbank holt, als checked markiert werden.
Also das Problem ist nicht, was Du da geschrieben hast, sondern das problem ist, vermute ich: Es funktioniert nicht.
...
<input type="checkbox" name="taktik[]" value="vk" <?php if (in_array("vk", $taktik)) { echo "checked"; } ?>> Viererkette<br>
<input type="checkbox" name="taktik[]" value="rd" <?php if (in_array("rd", $taktik)) { echo "checked"; } ?>> Raumdeckung<br>
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) { echo "checked"; } ?>> Pressing
...
Du schienst mir ueberhaupt nichts aus der Datenbank zu lesen, um zu entscheiden, ob Du die Checkboxen checken willst oder nicht, sondern nur die POST-Daten auswerten zu wollen. Oder? Falls das nicht stimmt, dann poste bitte mal den Code zum Auslesen der Datenbank.
Uebrigens: Im Falle, wenn eine Deiner Checkboxen nicht gecheckt wird, produzierst Du ein ueberfluessiges Leerzeichen.
Viele Gruesse
der Bademeister
Problem:
Wenn eine Checkbox ausgewählt wurde und in der Datenbank steht, dann soll diese beim editier-Formular, welches die Daten aus der mysql-Datenbank holt, als checked markiert werden.Also das Problem ist nicht, was Du da geschrieben hast, sondern das problem ist, vermute ich: Es funktioniert nicht.
Ja es funktioniert nicht ;-)
...
<input type="checkbox" name="taktik[]" value="vk" <?php if (in_array("vk", $taktik)) { echo "checked"; } ?>> Viererkette<br>
<input type="checkbox" name="taktik[]" value="rd" <?php if (in_array("rd", $taktik)) { echo "checked"; } ?>> Raumdeckung<br>
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) { echo "checked"; } ?>> Pressing
...
>
>
> Du schienst mir ueberhaupt nichts aus der Datenbank zu lesen, um zu entscheiden, ob Du die Checkboxen checken willst oder nicht, sondern nur die POST-Daten auswerten zu wollen. Oder? Falls das nicht stimmt, dann poste bitte mal den Code zum Auslesen der Datenbank.
>
Folgendes steht am Anfang der formularedit.php
~~~php
<?php
error_reporting(E_ALL);
include ("config.php");
$connection = @mysql_connect($host, $user, $password);
$query = "SELECT * FROM spieler";
$id = $_GET['id'];
$query = "SELECT * FROM spieler WHERE ID='$id'";
$result = mysql_db_query ($database, $query, $connection);
$data = mysql_fetch_array($result);
?>
Uebrigens: Im Falle, wenn eine Deiner Checkboxen nicht gecheckt wird, produzierst Du ein ueberfluessiges Leerzeichen.
Viele Gruesse
der Bademeister
Hi!
Ich hoffe, mir kann geholfen werden! :-)
Bestimmt sogar: ich fürchte nur, der von Dir hier gepostete Code reicht nicht aus.
off:PP
Hi!
Ich hoffe, mir kann geholfen werden! :-)
Bestimmt sogar: ich fürchte nur, der von Dir hier gepostete Code reicht nicht aus.
off:PP
Hi Peter Pan,
das Beste wird wohl sein, den gesamten Code aller 3 Dateien zu posten, da hast du Recht!
SQL-Injections werden erst ganz am Ende eingefügt, bitte nicht damit nerven ;-) weils momentan eh nur lokal auf m Rechner läuft das Ganze. Es kann sein dass einiges überflüssig im Code ist, wenn einer Lust und Laune hat, kann er mich darin korregieren, ansonsten das auch unbeachtet lassen.
Lange Rede kurzer Sinn, hier der Code:
ins_player.php
<?php
echo "<form enctype=\"multipart/form-data\" action=\"content/insertplayer.php\" method=\"post\">\n";
echo " <fieldset>\n";
echo " <legend>Formular</legend>\n";
echo " <table>\n";
echo " <tr>\n";
echo " <td></td>\n";
echo " <td></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><label for=\"spielername\">Spielername:</label></td>\n";
echo " <td><input type=\"text\" name=\"spielername\" id=\"spielername\"></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Team:</td>\n";
echo " <td><select name=\"team[]\">\n";
echo " <option value=\"Barca\" selected>Barcelona</option>\n";
echo " <option value=\"Manu\">Man'United</option>\n";
echo " <option value=\"Fra\">Frankfreich</option>\n";
echo " </select></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Formation:</td>\n";
echo " <td><select name=\"formation[]\">\n";
echo " <option value=\"3-4-3\" selected>3-4-3</option>\n";
echo " <option value=\"4-3-3\">4-3-3</option>\n";
echo " <option value=\"4-2-2-2\">4-2-2-2</option>\n";
echo " </select></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Taktik:</td>\n";
echo " <td>";
echo " <input type=\"checkbox\" name=\"taktik[]\" value=\"vk\"> Viererkette<br>";
echo " <input type=\"checkbox\" name=\"taktik[]\" value=\"rd\"> Raumdeckung<br>";
echo " <input type=\"checkbox\" name=\"taktik[]\" value=\"pr\"> Pressing</td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Mentalität:</td>\n";
echo " <td><select name=\"mentalitaet[]\">\n";
echo " <option value=\"defensiv\" selected>defensiv</option>\n";
echo " <option value=\"neutral\">neutral</option>\n";
echo " <option value=\"defensiv\">offensiv</option>\n";
echo " </select></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Verbindung:</td>\n";
echo " <td>\n";
echo " <input type=\"radio\" name=\"verbindung[]\" value=\"sehr schlecht\"> sehr schlecht\n";
echo " <input type=\"radio\" name=\"verbindung[]\" value=\"schlecht\"> schlecht\n";
echo " <input type=\"radio\" name=\"verbindung[]\" value=\"mittelprächtig\"> mittelprächtig\n";
echo " <input type=\"radio\" name=\"verbindung[]\" value=\"gut\"> gut\n";
echo " <input type=\"radio\" name=\"verbindung[]\" value=\"sehr gut\"> sehr gut\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><label for=\"spielweise\">Spielweise:</label></td>\n";
echo " <td><textarea name=\"spielweise\" cols=\"40\" rows=\"4\" id=\"spielweise\"></textarea></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><label for=\"spielerfoto\">Foto:</label></td>\n";
echo " <td><input type=\"file\" name=\"spielerfoto\" id=\"spielerfoto\"></td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " <input type=\"submit\" name=\"SUBMIT\" value=\" Speichern \">\n";
echo " <input type=\"reset\" value=\" Felder leeren \">\n";
echo " </fieldset>\n";
echo "</form>\n";
?>
insertplayer.php
<?php
// header("location: weiterleitung.html");
error_reporting(E_ALL);
include ("../config.php");
$DatabasePointer = @mysql_connect($host, $user, $password);
mysql_select_db($database, $DatabasePointer);
$taktikarray = array ();
foreach ($_POST['taktik'] as $taktiken) {
$taktikarray[] = htmlspecialchars ($taktiken);
}
$taktik = implode (', ', $taktikarray);
$mentalitaet = htmlspecialchars ( $_POST['mentalitaet'][0] );
$formation = htmlspecialchars ( $_POST['formation'][0] );
$verbindung = htmlspecialchars ( $_POST['verbindung'][0] );
$team = htmlspecialchars ( $_POST['team'][0] );
$dateiname = $_FILES['spielerfoto']['name'];
$SQL = "INSERT INTO spieler (spielername, team, formation, taktik, mentalitaet,
verbindung, spielweise, spielerfoto) VALUES ('".$_REQUEST['spielername']."',
'".$team."',
'".$formation."',
'".$taktik."',
'".$mentalitaet."',
'".$verbindung."',
'".$_REQUEST['spielweise']."',
'".$dateiname."')";
mysql_query($SQL, $DatabasePointer);
$dateityp = GetImageSize($_FILES['spielerfoto']['tmp_name']);
if($dateityp[2] != 0) {
if($_FILES['spielerfoto']['size'] < 102400) {
move_uploaded_file($_FILES['spielerfoto']['tmp_name'], "upload/".$_FILES['spielerfoto']['name']);
echo "Das Bild wurde Erfolgreich nach upload/".$_FILES['spielerfoto']['name']." hochgeladen";
}
else {
echo "Das Bild darf nicht größer als 100 kb sein ";
}
}
else {
echo "Bitte nur Bilder jpg-Format hochladen";
}
?>
Und nun zu der entscheidenden Datei, worin sich der Fehler befindet und wo ich bei den Checkboxen nen checked hinbekommen will, falls diese bei der ins_player.phg markiert wurden und in die Datenbank geschrieben wurden durch die insertplayer.php.
playeredit.php
<?php
error_reporting(E_ALL);
include ("config.php");
$connection = @mysql_connect($host, $user, $password);
$query = "SELECT * FROM spieler";
$id = $_GET['id'];
$query = "SELECT * FROM spieler WHERE ID='$id'";
$result = mysql_db_query ($database, $query, $connection);
$data = mysql_fetch_array($result);
?>
<form enctype="multipartform-data" action="content/playereditaction.php" method="post">
<fieldset>
<legend>Formular</legend>
<table>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td><label for="spielername">Spielername:</label></td>
<td><input type="text" name="spielername" id="spielername" value="<?php echo $data['spielername']; ?>"></td>
</tr>
<tr>
<td>Team:</td>
<td>
<select name="team[]">
<option value="Barca">Barcelona</option>
<option value=\"Manu\">Man'United</option>
<option value=\"Fra\">Frankfreich</option>
</select>
</td>
</tr>
<tr>
<td><label for="formation">Formation:</label></td>
<td><input type="text" name="formation" id="formation" value="<?php echo $data['formation']; ?>"></td>
</tr>
<tr>
<td>Taktik:</td>
<td>
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) ( checked ) ?>> Viererkette<br>
<input type="checkbox" name="taktik[]" value="rd" <?php if (in_array("rd", $taktik)) ( checked ) ?>> Raumdeckung<br>
<input type="checkbox" name="taktik[]" value="pr" <?php if (in_array("pr", $taktik)) ( checked ) ?>> Pressing
</td>
</tr>
<tr>
<td><label for="verbindung">Verbindung:</label></td>
<td><input type="text" name="verbindung" id="verbindung" value="<?php echo $data['verbindung']; ?>"></td>
</tr>
<tr>
<td><label for="spielweise">Spielweise:</label></td>
<td><textarea name="spielweise" cols="40" rows="4" id="spielweise"><?php echo $data['spielweise']; ?></textarea></td>
</tr>
<tr>
<td><label for="spielerfoto">Foto:</label></td>
<td>
<img src="content/upload/<?php echo $data['spielerfoto']; ?>" width="100" height="133"><br>
<label for="spielerfoto">Ändern:</label><input type="file" name="spielerfoto" id="spielerfoto">
</td>
</tr>
</table>
<input type="submit" name="SUBMIT" value=" Speichern ">
<input type="hidden" name="id" value="<?php echo $data['id']; ?>">
</fieldset>
</form>
<?php
$ergebnis = mysql_query($query) OR die("Query: <pre>".$query."</pre>\n".
"Fehler: ".mysql_error());
?>
Hallöchen,
Hallo Leute!
Hintergrund:
über ein Formular kann man mehrere Checkboxen auswählen. Diese werden dann über ein Array in die mysql-Datenbank eingetragen. Das Auslesen in einem String klappt auch wunderbar.
OK, aber warum erzeugst du einen String-Variable, wenn du dann für die Auswertung eine Array-Funktion verwendest?
formularscript.php
...
$taktikarray = array ();
foreach ($_POST['taktik'] as $taktiken) {
$taktikarray[] = htmlspecialchars ($taktiken); // hier ist ja ein Array!
}
$taktik = implode (', ', $taktikarray); // dann ist diese Zeile möglicherweise unnötig
...
Frage doch das vorhandene Array ab:
> formularedit.php
> ~~~php
> ...
<input type="checkbox" name="taktik[]" value="vk"<?php if (in_array("vk", $taktikarray)) { echo " checked"; } ?>> Viererkette<br>
> ...
>
MfG
vaudi
Hallo vaudi,
Danke für deine Antwort!
Hallöchen,
Hallo Leute!
Hintergrund:
über ein Formular kann man mehrere Checkboxen auswählen. Diese werden dann über ein Array in die mysql-Datenbank eingetragen. Das Auslesen in einem String klappt auch wunderbar.OK, aber warum erzeugst du einen String-Variable, wenn du dann für die Auswertung eine Array-Funktion verwendest?
String daher, weil ich den Inhalt, welcher sich aus mehreren Checkboxen zusammensetzt (je nach dem), ausgegeben werden soll als.
formularscript.php
...
$taktikarray = array ();
foreach ($_POST['taktik'] as $taktiken) {
$taktikarray[] = htmlspecialchars ($taktiken); // hier ist ja ein Array!
}
$taktik = implode (', ', $taktikarray); // dann ist diese Zeile möglicherweise unnötig
...
>
> Frage doch das vorhandene Array ab:
>
> > formularedit.php
> > ~~~php
> > ...
> <input type="checkbox" name="taktik[]" value="vk"<?php if (in_array("vk", $taktikarray)) { echo " checked"; } ?>> Viererkette<br>
> > ...
> >
Wenn ich das Array Abfragen möchte kommt folgende Fehlermeldung:
Notice: Undefined variable: taktikarray
Gruß
cc
Hallöchen,
Wenn ich das Array Abfragen möchte kommt folgende Fehlermeldung:
Notice: Undefined variable: taktikarray
Dann liegt das wohl daran, dass $taktikarray in einer anderen Datei erzeugt, und nicht an die Formulardatei übergeben wird. In dem Fall sehe ich 2 Möglichkeiten:
a) sorge dafür, dass $taktikarray übergeben wird
b) wenn der String $taktik vorhanden ist und - wie es den Anschein hat - die Werte mit ', ' getrennt enthält, dann füge vor der Auswertung eine Zeile in der Art ein:
$taktikarray = explode(', ',$taktik);
Damit hast du dann das für die Auswertung gewünschte Array...
MfG
vaudi
Hallöchen,
Wenn ich das Array Abfragen möchte kommt folgende Fehlermeldung:
Notice: Undefined variable: taktikarray
Dann liegt das wohl daran, dass $taktikarray in einer anderen Datei erzeugt, und nicht an die Formulardatei übergeben wird. In dem Fall sehe ich 2 Möglichkeiten:
a) sorge dafür, dass $taktikarray übergeben wird
b) wenn der String $taktik vorhanden ist und - wie es den Anschein hat - die Werte mit ', ' getrennt enthält, dann füge vor der Auswertung eine Zeile in der Art ein:
$taktikarray = explode(', ',$taktik);
Damit hast du dann das für die Auswertung gewünschte Array...MfG
vaudi
Hallo vaudi,
prima, mit deinem Denkanstoß hats nun geklappt.
Habe mit mysql_fetch_array den Inhalt meiner Tabelle herangezogen, dann die Spalte Taktik ausgelesen und mit explode an das taktikarray übergeben!
...
$data = mysql_fetch_array($result);
$taktik = $data['taktik'];
$taktikarray = explode(', ',$taktik);
...
<input type="checkbox" name="taktik[]" value="pr"<?php if (in_array("vk", $taktikarray)) { echo " checked"; } ?>> Viererkette<br>
<input type="checkbox" name="taktik[]" value="rd"<?php if (in_array("rd", $taktikarray)) { echo " checked"; } ?>> Raumdeckung<br>
<input type="checkbox" name="taktik[]" value="pr"<?php if (in_array("pr", $taktikarray)) { echo " checked"; } ?>> Pressing
...
Guß
cc