Checkboxlisten gruppieren oder zusammenfassen um übersicht reinzubekommen

MisterMi

Erfahrenes Mitglied
PHP:
<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
session_start();
echo '<h2>Willkommen '.$_SESSION['user'].'</h2>';

//Verbindung herstellen
$db = mysql_connect("xxx.de.mysql", "xxx_de", "xxx") or die ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db("xxx_de",$db) or die ("Keine Verbindung möglich: ".mysql_error());

    mysql_select_db('mirkolinho_de', $db)
            OR die ('Keine Verbindung möglich: ' . mysql_error());

    $sql="SELECT spielerid FROM kader WHERE username = '" .mysql_real_escape_string($_SESSION["user"]) ."'";

    $db_erg = mysql_query($sql);

if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";

  echo "<td>". $zeile['spielerid'] . "</td>";
  echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );


    //Verbindung beenden
    mysql_close($db);
?>

Ich versuche Spieler auswählen zu lassen und das ergebnis dann zu speichern und per mail zu senden.


mich würde interessieren ob man mehrere Checkboxen auch in einem Auswahlfenster zusammenfassen kann? Ich habe jetzt eine sehr lange Liste die Spieler anzeigt. Vor jedem ist eine Checkbox zum auswählen. Ich hätte gern am Ende 4 Kästen wo zu jeder Position die Spieler mit Checkbox Marker drin sind, um es übersichtlicher zu haben. Geht das?
Bzw. wenigstens die listen nebeneinander und nicht mehr untereinander.

Danke

unter http://www.mirkolinho.de/Easy.html sieht man so eine liste
 
Sry aber ich verstehe es noch nicht ganz, wie du das mit den Auswahlboxen meinst.
Deine Seite sieht jetzt so aus wie diese Beispielseite, die du verlinkt hast? Und du möchtest stattdessen aber das wie aussehen haben? Vllt kannst ne kleine Skizze mit Paint oder so machen ;)
 
Am liebsten wären mir eben 4 Boxen die man erst aufklappen kann oder so wenn man sie braucht oder die nur 20 anzeigen und den Rest muss man scrollen. Eine Sortiermöglichkeit nach gewissen Kriterien wäre auch nicht schlecht. Geht das nur mit Javascript oder sowas?
 
Also wenn ich es richtig verstehe, willst du das nicht alle Spieler untereinander stehen und die Seite deshalb so lang wird. Es soll nur eine scrollbare Liste zu sehen sein wo man die Spieler auswählen kann!?
Das könnest du mit einem einfachen DIV-Container lösen:

Javascript:
function liste(id){
	if (document.getElementById(id).style.display == "block"){
		document.getElementById(id).style.display = "none";
	} else {
		document.getElementById(id).style.display = "block";
	}
}
HTML:
<label for="liste1" onclick="liste('liste1')">Liste 1:</label>
<div id="liste1" style="width: 250px; height: 100px; overflow-y: scroll; display: block;">
<input type="checkbox" name="check1" value="Peter" /> Peter<br />
<input type="checkbox" name="check2" value="Frank" /> Frank<br />
<input type="checkbox" name="check3" value="Martin" /> Martin<br />
<input type="checkbox" name="check4" value="Stefan" /> Stefan<br />
<input type="checkbox" name="check5" value="Hans" /> Hans<br />
<input type="checkbox" name="check6" value="Claudia" /> Claudia<br />
<input type="checkbox" name="check7" value="Petra" /> Petra<br />
<input type="checkbox" name="check8" value="Susanne" /> Susanne<br />
<input type="checkbox" name="check9" value="Barbara" /> Barbara<br />
<input type="checkbox" name="check10" value="Martina" /> Martina<br />
</div>
 
Ich habe das mal Testweise so eingefügt bekomme allerdings folgende Fehlermeldung : Parse error: syntax error, unexpected ')', expecting '&' or T_VARIABLE in /customers/b/3/5/mirkolinho.de/httpd.www/Check_EF.php on line 12 -> Line 12 ist die "function liste(id){" ...

Desweiteren habe ich gleich eine Anschlussfrage:

Ich habe derzeit eine Tabelle mit den Spielern mit folgenden Aufbau:
id spieler position verein marktwert punkte lastp

Nun baue ich die Checkboxen im folgenden Style ja noch manuell auf:
<input type="checkbox" name="spieler[]" value="Fuhry" />Fuhry - 100.000 € - Hannover - 0 Punkte<br />
<input type="checkbox" name="spieler[]" value="Uphoff" />Uphoff - 100.000 € - Nürnberg - 0 Punkte<br />

...

Kann man die Zeilen irgendwie anhand der Tabelle aufbauen lassen, so dass wenn ich die Daten in der Datenbank ändere, die Checkboxen sich gleich mit aktualisieren was die Werte angeht?

Vielen Dank
 
Zum ersten Fehler kann ich nichts sagen, weil ich den Code nicht kenne. Sieht aber so aus als ob du dich einfach verschrieben hättest!

Wenn du die Daten zu den Spielern in der Datenbank gespeichert hast, dann kannst du doch in einer Schleife die Angaben durchlaufen und dabei die Checkboxen erstellen.

PHP:
echo '<input type="checkbox" name="spieler[]" value="' .$spieler .'" />' .$spieler .' - ' .$wert .' € - ' .$verein .' - ' .$punkte .' Punkte<br/>';

Die Werte für die hier verwendeten Variablen $spieler, $wert, ... holst du dir aus der Datenbank.
 
PHP:
<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
session_start();

//Verbindung herstellen
xxx

// Schutz vor XSS
$e = function ($s) {
return htmlspecialchars($s, ENT_QUOTES, 'ISO-8859-1');
};

// Variablen für Ausgabe-Template
$tpl = array(
    'sent'    => false,
    'players' => array(),
    'user'    => ''
);

echo '<h2 align="center">"Diese Testfunktion schreibt die Auswahl bereits in die Datenbank und schickt sie zeitgleich per Mail"</h2>';
echo '<h1 align="center">Willkommen ' .$_SESSION['user'].' - wähle bitte 15 Spieler!</h1>';
echo '<h3 align="center">Die Punkte der Spieler basieren auf dem Stand vom 3. Spieltag (29.08.2013)</h3>';

// echo '<h2>Willkommen '.$_SESSION['user'].'</h2>';

  $sql_Tor="SELECT spieler, position, marktwert, verein, punkte, lastp FROM MarktSpieler WHERE position ='Tor'";
  $db_Tor = mysql_query($sql_Tor);

  $sql_Abwehr="SELECT spieler, position, marktwert, verein, punkte, lastp FROM MarktSpieler WHERE position ='Abwehr'";
  $db_Abwehr = mysql_query($sql_Abwehr);

  $sql_Mittelfeld="SELECT spieler, position, marktwert, verein, punkte, lastp FROM MarktSpieler WHERE position ='Mittelfeld'";
  $db_Mittelfeld = mysql_query($sql_Mittelfeld);

  $sql_Sturm="SELECT spieler, position, marktwert, verein, punkte, lastp FROM MarktSpieler WHERE position ='Sturm'";
  $db_Sturm = mysql_query($sql_Sturm);

echo '<p align="center">&nbsp;</p>';
echo '<table border="1">';
echo '<tr>';
echo '<td  align="left" valign="top" width="350" height="1000"><h5>';
echo '<p><b><font size="+3">Torwart:</font></b><br />';

  if ( ! $db_Tor )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

while ($zeile = mysql_fetch_array( $db_Tor, MYSQL_ASSOC))
{
  echo '<input type="checkbox" name="spieler[]" value="'. $zeile['spieler'] . '" />' . $zeile['spieler'] . ' - ' . $zeile['marktwert'] . ' € - ' . $zeile['verein'] . ' - ' . $zeile['punkte'] . ' Punkte<br/>';
}
mysql_free_result( $db_Tor );

echo '</h5></td>';
echo '<td align="left" valign="top" width="350" height="1000"><h5>';

echo '<p><b><font size="+3">Abwehr:</font></b><br />';

  if ( ! $db_Abwehr )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

while ($zeile = mysql_fetch_array( $db_Abwehr, MYSQL_ASSOC))
{
  echo '<input type="checkbox" name="spieler[]" value="'. $zeile['spieler'] . '" />' . $zeile['spieler'] . ' - ' . $zeile['marktwert'] . ' € - ' . $zeile['verein'] . ' - ' . $zeile['punkte'] . ' Punkte<br/>';
}
mysql_free_result( $db_Abwehr );

echo '</h5></td>';
echo '<td align="left" valign="top" width="350" height="1000"><h5>';

echo '<p><b><font size="+3">Mittelfeld:</font></b><br />';

  if ( ! $db_Mittelfeld )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

while ($zeile = mysql_fetch_array( $db_Mittelfeld, MYSQL_ASSOC))
{
  echo '<input type="checkbox" name="spieler[]" value="'. $zeile['spieler'] . '" />' . $zeile['spieler'] . ' - ' . $zeile['marktwert'] . ' € - ' . $zeile['verein'] . ' - ' . $zeile['punkte'] . ' Punkte<br/>';
}
mysql_free_result( $db_Mittelfeld );

echo '</h5></td>';
echo '<td align="left" valign="top" width="350" height="1000"><h5>';

echo '<p><b><font size="+3">Sturm:</font></b><br />';

  if ( ! $db_Sturm )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

while ($zeile = mysql_fetch_array( $db_Sturm, MYSQL_ASSOC))
{
  echo '<input type="checkbox" name="spieler[]" value="'. $zeile['spieler'] . '" />' . $zeile['spieler'] . ' - ' . $zeile['marktwert'] . ' € - ' . $zeile['verein'] . ' - ' . $zeile['punkte'] . ' Punkte<br/>';
}
mysql_free_result( $db_Sturm );

echo '</h5></td>';
echo '</tr>';
echo '</table>';


if (isset($_GET['sent']) && $_GET['sent'] === 'yes') {


    $val = array();

    foreach ($_GET['spieler'] as $spieler) {
        $val[] = "('" . mysql_real_escape_string($_SESSION['user']) . "', "
               . "'" .mysql_real_escape_string($spieler) . "')";
    }

    $values = implode(', ', $val);

    $sql1 = "INSERT INTO kader (username, spielerid) VALUES " . $values;
    $sql_delete = "DELETE FROM kader WHERE username = '" .mysql_real_escape_string($_SESSION["user"]) ."'";

    mysql_query($sql_delete);
    mysql_query($sql1);


    //Verbindung beenden
    mysql_close($db);

    $tpl['sent']    = true;
    $tpl['players'] = $_GET['spieler'];
    $tpl['user']    = $_SESSION['user'];

  // Wenn die Nachricht länger als 70 Zeichen ist braucht man ein wordwrap()
 // Wenn die Nachricht länger als 70 Zeichen ist braucht man ein wordwrap()
    $message = wordwrap($sql1, 70, "\r\n");
    $to      = 'aufstellungen@mirkolinho.de';
    $subject = 'Aufstellung';
    $headers = 'From: aufstellungen@mirkolinho.de' . "\r\n"
             . 'Reply-To: aufstellungen@mirkolinho.de' . "\r\n"
             . 'X-Mailer: PHP/' . phpversion();


    mail($to, $subject, $message, $headers);
}

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
    <title>Checkboxen mit PHP auswerten</title>
</head>

<body bgcolor="#008000">


    <?php if ($tpl['sent']) : ?>

        <h1>Ihre Mannschaft &quot;<?=$e($tpl['user'])?>&quot;:</h1>
        <p>
            Spieler:<br><br>
            <?=$e(implode(', ', $tpl['players']))?>
        </p>

    <?php endif; ?>
    <form action="Check_EF.php">
        <input type="hidden" name="sent" value="yes">
         <p align="center">&nbsp;</p>

 </br>

  <div style="text-align: center;">
        <input type="submit" value="Aufstellung senden" style="width: 150px; height: 50px">
</div>
    </form>
</body>

</html>

Habe das jetzt mal so angepasst. Er zeigt auch die Spieler richtig aus der DB an. Danke dafür.

Leider kennt er nun die Werte nicht mehr nach dem senden. Ist da ein Denkfehler drin?
Vorher hatte ich ja die Checkboxen im HTML Teil und von da wurden sie bearbeitet. Nun sind sie aber im PHP Teil weil es ja nicht anders geht.
 
Dann platziere es einfach wieder im HTML-Teil und zwar innerhalb der form-Tags, dann sind die Werte auch wieder vorhanden!
 
Richtig mit PHP Rand drumrum :( Hätte ich auch drauf kommen können.

Geht auch! Ich habe in der Datenbank bei Wert derzeit die Zahl iM Format 1.000.000 € stehen. Um es sortieren zu können würde ich es aber gern als 1000000 abspeichern und dann als 1.000.000 € ausgeben. Das € ist ja schnell dahintergesetzt als String aber gibt es eine Möglichkeit das in das Format bei der Ausgabe zu konvertieren?
 

Neue Beiträge

Zurück