Fragen zu einer Function

Kann es sein, dass die ganze FUnktion tunierergebniss() 2 mal ausgeführt wird?

sollte nicht sein also in der function.inc.php ist es nur einmal drin hatte die andere gelöscht

hier der Code zum jetzigen Standpunkt

PHP:
function tunierergebniss(){
    $nr = filter_input(INPUT_POST, 'nr', FILTER_VALIDATE_INT);
    if($nr !== FALSE){
        saveTunierErgebniss($nr, 1, 16, 'platzeins');
        saveTunierErgebniss($nr, 2, 14, 'platzzwei');
        saveTunierErgebniss($nr, 3, 12, 'platzdrei');
        saveTunierErgebniss($nr, 4, 10, 'platzvier');
        saveTunierErgebniss($nr, 5, 8, 'platzfuenf');
        saveTunierErgebniss($nr, 5, 8, 'platzsechs');
        saveTunierErgebniss($nr, 7, 6, 'platzsieben');
        saveTunierErgebniss($nr, 7, 6, 'platzacht');
        saveTunierErgebniss($nr, 9, 4, 'platzneun');
        saveTunierErgebniss($nr, 9, 4, 'platzzehn');
        saveTunierErgebniss($nr, 9, 4, 'platzelf');
        saveTunierErgebniss($nr, 9, 4, 'platzzwoelf');
        saveTunierErgebniss($nr, 13, 2, 'platzdreizehn');
        saveTunierErgebniss($nr, 13, 2, 'platzvierzehn');
        saveTunierErgebniss($nr, 13, 2, 'platzfuenfzehn');
        saveTunierErgebniss($nr, 13, 2, 'platzsechszehn');
        saveTunierErgebniss($nr, 17, 0, 'luckeins');
        saveTunierErgebniss($nr, 17, 0, 'luckzwei');
        saveTunierErgebniss($nr, 17, 0, 'luckdrei');
        saveTunierErgebniss($nr, 17, 0, 'luckvier');
        saveTunierErgebniss($nr, 17, 0, 'luckfuenf');
        saveTunierErgebniss($nr, 17, 0, 'lucksechs');
        saveTunierErgebniss($nr, 17, 0, 'lucksieben');
        saveTunierErgebniss($nr, 17, 0, 'luckacht');
        saveTunierErgebniss($nr, 17, 0, 'luckneun');
        saveTunierErgebniss($nr, 17, 0, 'luckzehn');
        saveTunierErgebniss($nr, 17, 0, 'luckelf');
        saveTunierErgebniss($nr, 17, 0, 'luckzwoelf');
        saveTunierErgebniss($nr, 17, 0, 'luckdreizehn');
        saveTunierErgebniss($nr, 17, 0, 'luckvierzehn');
        saveTunierErgebniss($nr, 17, 0, 'luckfuenfzehn');
        saveTunierErgebniss($nr, 17, 0, 'lucksechszehn');
    }
} 

function saveTunierErgebniss($nr, $platz, $punkte, $fieldName, $default = '', $len = 30){
    global $db_link; 
    $value = filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRIPPED);
    if($value !== FALSE){
        $insert = mysqli_query($db_link, "Insert Into ".DB."_tunierergebniss (`id`, `nr`, `platz`, `name`, `saison`, `punkte`, `teilnahme`) Values ('', {$nr}, {$platz}, '{$value}', 15, {$punkte}, 1)");  
  
      
    }
}

Hab dann versucht Folgendes zu machen

PHP:
function saveTunierErgebniss($nr, $platz, $punkte, $fieldName, $default = '', $len = 30){
    global $db_link;  
    $value = filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRIPPED);
    if($value !== FALSE){
        $insert = mysqli_query($db_link, "Insert Into ".DB."_tunierergebniss (`id`, `nr`, `platz`, `name`, `saison`, `punkte`, `teilnahme`) Values ('', {$nr}, {$platz}, '{$value}', 15, {$punkte}, 1)");   
   
        if($insert){ // Pürft ob das eintragen erfolgreich war
            header('Location: ./?p=tunierergebniss&h=tunierergebniss'); // Leitet den User auf die Seite lokal und setzt den Parameter "h" auf "tunierergebniss" somit wird in der zuvor Definierten run.inc.php eine Meldung ausgeben, das der Vorgang erfolgreich war
            exit(); // Beendet die Datei, somit muss der Server nicht weiter laden und spart ressourcen
        } else { // War esnicht erfolgreich, wird die folgende Fehlermeldung ausgegeben und die Error-Mail an den Administrator verschickt
            $error = 'Fehler beim eintragen des Tunierergebnisses! Bitte versuche Sie es zu einem späterem Zeitpunkt erneut.';
            errormail('MySQL-Fehler beim eintragen der news! Bitte überprüfe das Script. Funktion "tunierergebniss()"');
        }
    }
}

bewirkt aber nur das er das insert nur einmal macht also für den Platz 1......
 
Zuletzt bearbeitet:
Ist klar, das er nur einmal macht. Du verlässt die Seite ja bei einem erfolgreichen Insert.

Nur einmal eingebunden heisst nicht, dass eine Funktion nur einmal ausgeführt wird. Du kannst die Funktion tunierergebniss() auch zehn mal starten und dann hast du alles 10 mal drin.

Mach mal ganz am Anfang von der Funktion tunierergebniss() ein Echo rein, damit du prüfen kannst, wieviele male sie aufgerufen wird.
 
Also es wird 2 mal das Echo ausgegeben aber wieso nutze ja nur das Formular

PHP:
    <!-- Page Content -->
    <div class="container">

        <!-- Page Heading/Breadcrumbs -->
        <div class="row">
            <div class="col-lg-12">
                <h1 class="page-header">Tunier
                    <small>Ergebniss eintragen</small>
                </h1>
                <ol class="breadcrumb">
                    <li><a href="./">Home</a></li>
                    <li class="active">Tunier Ergebniss</li>
                </ol>
            </div>
        </div>
        <!-- /.row -->

        <!-- Content Row -->
        <div class="row">
            <div class="col-lg-12">

            <? if($log){ 

function spieleroptionen($team, $select){
    if($team != ''){
        $sql = mysql_query("Select * From mhdl_spieler Where mannschaft = '$team' And saison = 15");
    } else {
        $sql = mysql_query("Select * From mhdl_spieler Where saison = 15 ORDER BY name ASC");
    }
    while($out = mysql_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['name'].'">'.$out['name'].'</option>';
    }
    return $outp;
}

?>
<div class="login-container">
    <div class="login-containerbox">
        <div class="login-box">
            <div class="login-title">
            </div>
            <center><table>
            <div class="login-content">
                <form action="./?p=tunierergebniss" method="post">
                   
                    <div class="form-group input-group">
                            <span class="input-group-addon">Tunier:</span>
                            <select name="nr" class="form-control cursor">
                                <option value="">Bitte wählen....</option>
                                <option value="1">1</option>
                                  <option value="2">2</option>
                                  <option value="3">3</option>
                                  <option value="4">4</option>
                                  <option value="5">5</option>
                                  <option value="6">6</option>
                                  <option value="7">7</option>
                                <option value="8">8</option>
                                <option value="9">9</option>
                                <option value="10">10</option>
                                </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">1.Platz*:</span>
                            <select class="form-control" name="platzeins">
                                <option value="">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzeins']) ? $_POST['platzeins'] : ''); ?>
                            </select>
                    </div>
                   
                    <div class="form-group input-group">
                            <span class="input-group-addon">2.Platz*:</span>
                            <select class="form-control" name="platzzwei">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzzwei']) ? $_POST['platzzwei'] : ''); ?>
                            </select>
                    </div>
                   
                    <div class="form-group input-group">
                            <span class="input-group-addon">3.Platz*:</span>
                            <select class="form-control" name="platzdrei">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzdrei']) ? $_POST['platzdrei'] : ''); ?>
                            </select>
                    </div>
                   
                    <div class="form-group input-group">
                            <span class="input-group-addon">4.Platz*:</span>
                            <select class="form-control" name="platzvier">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzvier']) ? $_POST['platzvier'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">5.Platz*:</span>
                            <select class="form-control" name="platzfuenf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzfuenf']) ? $_POST['platzfuenf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">5.Platz*:</span>
                            <select class="form-control" name="platzsechs">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzsechs']) ? $_POST['platzsechs'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">7.Platz*:</span>
                            <select class="form-control" name="platzsieben">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzsieben']) ? $_POST['platzsieben'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">7.Platz*:</span>
                            <select class="form-control" name="platzacht">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzacht']) ? $_POST['platzacht'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">9.Platz*:</span>
                            <select class="form-control" name="platzneun">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzneun']) ? $_POST['platzneun'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">9.Platz*:</span>
                            <select class="form-control" name="platzzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzzehn']) ? $_POST['platzzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">9.Platz*:</span>
                            <select class="form-control" name="platzelf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzelf']) ? $_POST['platzelf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">9.Platz*:</span>
                            <select class="form-control" name="platzzwoelf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzzwoelf']) ? $_POST['platzzwoelf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">13.Platz*:</span>
                            <select class="form-control" name="platzdreizehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzdreizehn']) ? $_POST['platzdreizehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">13.Platz*:</span>
                            <select class="form-control" name="platzvierzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzvierzehn']) ? $_POST['platzvierzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">13.Platz*:</span>
                            <select class="form-control" name="platzfuenfzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzfuenfzehn']) ? $_POST['platzfuenfzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">13.Platz*:</span>
                            <select class="form-control" name="platzsechszehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['platzsechszehn']) ? $_POST['platzsechszehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">1.luck*:</span>
                            <select class="form-control" name="luckeins">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckeins']) ? $_POST['luckeins'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">2.luck*:</span>
                            <select class="form-control" name="luckzwei">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckzwei']) ? $_POST['luckzwei'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">3.luck*:</span>
                            <select class="form-control" name="luckdrei">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckdrei']) ? $_POST['luckdrei'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">4.luck*:</span>
                            <select class="form-control" name="luckvier">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckvier']) ? $_POST['luckvier'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">5.luck*:</span>
                            <select class="form-control" name="luckfuenf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckfuenf']) ? $_POST['luckfuenf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">6.luck*:</span>
                            <select class="form-control" name="lucksechs">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['lucksechs']) ? $_POST['lucksechs'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">7.luck*:</span>
                            <select class="form-control" name="lucksieben">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['lucksieben']) ? $_POST['lucksieben'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">8.luck*:</span>
                            <select class="form-control" name="luckacht">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckacht']) ? $_POST['luckacht'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">9.luck*:</span>
                            <select class="form-control" name="luckneun">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckneun']) ? $_POST['luckneun'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">10.luck*:</span>
                            <select class="form-control" name="luckzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckzehn']) ? $_POST['luckzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">11.luck*:</span>
                            <select class="form-control" name="luckelf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckelf']) ? $_POST['luckelf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">12.luck*:</span>
                            <select class="form-control" name="luckzwoelf">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckzwoelf']) ? $_POST['luckzwoelf'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">13.luck*:</span>
                            <select class="form-control" name="luckdreizehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckdreizehn']) ? $_POST['luckdreizehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">14.luck*:</span>
                            <select class="form-control" name="luckvierzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckvierzehn']) ? $_POST['luckvierzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">15.luck*:</span>
                            <select class="form-control" name="luckfuenfzehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['luckfuenfzehn']) ? $_POST['luckfuenfzehn'] : ''); ?>
                            </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">16.luck*:</span>
                            <select class="form-control" name="lucksechszehn">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['lucksechszehn']) ? $_POST['lucksechszehn'] : ''); ?>
                            </select>
                    </div>                   
                    <div class="login-footer">
                    <center>alle mit * gekenzeichneten Felder sind Pflichtfelder</center>
                    </div>
                    <table></center>
                    <div class="login-input">
                        <center><br><input type="hidden" name="tunierergebniss" value="1" maxlength="1">
                        <input type="submit" class="button right" value="erstellen"></center>
                    </div>
                    <div class="clear"></div>
                </form>
            </div>
            <div class="clear"></div>
        </div>
    </div>
</div>
<? } ?>
           
            </div>
        </div>
        <!-- /.row -->

        <hr>

    </div>
    <!-- /.container -->
 
Wir sehen den Code nicht, in dem die Funktion tunierergebniss aufgerufen wird. Daher wird dir niemand sagen können, wo oder warum du sie mehrfach aufrufst. Eine Idee wäre es, den Code nach dem Funktionsnamen zu durchsuchen, wenn du es nicht von allein findest.

Da fehlt zudem quasi überall die Behandlung des Kontextwechsels nach SQL per mysql(i)_real_escape_string.

- http://php-de.github.io/jumpto/faq/#sql-injection
- http://wiki.selfhtml.org/wiki/PHP/Anwendung_und_Praxis/Kontextwechsel

Auch Behandlung des Kontextwechsels nach HTML fehlt (→ htmlspecialchars).

- http://phpforum.de/forum/showthread.php?t=283493

PS: Es heißt „Turnier“ (mit r) und „Ergebnis“ (mit einem s).

Edit: Wäre übrigens sinnvoller, „Platz“ und „Luck“ im Formular als Arrays anzulegen. So in der Art:

PHP:
<?php

function escape($s)
{
    return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}

function spieleroptionen($team, $select)
{
    if ($team != '') {
        $sql = mysql_query("SELECT * FROM mhdl_spieler WHERE mannschaft = '" . mysql_real_escape_string($team) . "' AND saison = 15");
    } else {
        $sql = mysql_query("SELECT * FROM mhdl_spieler WHERE saison = 15 ORDER BY name ASC");
    }

    $outp = '';

    while ($row = mysql_fetch_array($sql)) {
        $sel = '';
        if ($row['id'] == $select) {
            $sel = ' selected';
        }
        $outp .= '<option' . $sel . ' value="' . escape($row['name']) . '">' . escape($row['name']) . '</option>';
    }

    return $outp;
}

?>

<!-- Page Content -->
    <div class="container">

        <!-- Page Heading/Breadcrumbs -->
        <div class="row">
            <div class="col-lg-12">
                <h1 class="page-header">Tunier
                    <small>Ergebniss eintragen</small>
                </h1>
                <ol class="breadcrumb">
                    <li><a href="./">Home</a></li>
                    <li class="active">Tunier Ergebniss</li>
                </ol>
            </div>
        </div>
        <!-- /.row -->

        <!-- Content Row -->
        <div class="row">
            <div class="col-lg-12">

<?php if ($log) : ?>

    <div class="login-container">
        <div class="login-containerbox">
            <div class="login-box">
                <div class="login-title">
                </div>
                <center><table>
                <div class="login-content">
                    <form action="./?p=tunierergebniss" method="post">
                        <div class="form-group input-group">
                            <span class="input-group-addon">Tunier:</span>
                            <select name="nr" class="form-control cursor">
                                <option value="">Bitte wählen....</option>
                                <?php for ($i = 1; $i <= 10; $i++) : ?>
                                    <option value="<?=$i?>"><?=$i?></option>
                                <?php endfor; ?>
                            </select>
                        </div>

                        <?php for ($rank = 1; $rank <= 16; $rank++) : ?>
                            <div class="form-group input-group">
                                <span class="input-group-addon"><?=$rank?>.Platz*:</span>
                                <select class="form-control" name="platz[<?=$rank?>]">
                                    <option value="">Spieler wählen...</option>
                                    <?=spieleroptionen(isset($_POST['platz'][$rank]) ? $_POST['platz'][$rank] : '')?>
                                </select>
                            </div>
                        <?php endfor; ?>

                        <?php for ($rank = 1; $rank <= 16; $rank++) : ?>
                            <div class="form-group input-group">
                                <span class="input-group-addon"><?=$rank?>.luck*:</span>
                                <select class="form-control" name="luck[<?=$rank?>]">
                                    <option value="0">Spieler wählen...</option>
                                    <?=spieleroptionen(isset($_POST['luck'][$rank]) ? $_POST['luck'][$rank] : '')?>
                                </select>
                            </div>
                        <?php endfor; ?>

                        <div class="login-footer">
                        <center>alle mit * gekenzeichneten Felder sind Pflichtfelder</center>
                        </div>
                        <table></center>
                        <div class="login-input">
                            <center><br><input type="hidden" name="tunierergebniss" value="1" maxlength="1">
                            <input type="submit" class="button right" value="erstellen"></center>
                        </div>
                        <div class="clear"></div>
                    </form>
                </div>
                <div class="clear"></div>
            </div>
        </div>
    </div>

<?php endif; ?>

            </div>
        </div>
        <!-- /.row -->

        <hr>

    </div>
    <!-- /.container -->

Dann kannst du beim Verarbeiten bequem eine Schleife über $_POST['platz'] und $_POST['luck'] laufen lassen.
 
Zuletzt bearbeitet:
Danke für die Antwort hatte den Beitrag aber schon als gelöst markiert .

Aber der Ansatz fürs Formular finde ich klasse werde mir das mal in Ruhe anschauen .....
 

Neue Beiträge

Zurück