Hilfe bei Function

Harmomix

Mitglied
Hi danke schon einmal vorab für die Hilfe ,
Ich würde gerne 2 Funktionen auf mysqli umändern die mysql funktionen gehen sobald ich sie auf mysqli ändere funktionieren sie leider nicht mehr.Die Functionen sind für ein selectfeld in einem Formular.

Hier der Code auf mysql basis

PHP:
function spieleroptionen($team, $select){

        $sql = mysql_query("Select * From mhdl_spieler Where saison = 16 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;
}

function teamoptionen($team, $select){

        $sql = $insert = mysql_query("Select * From mhdl_teams ORDER BY id ASC");

    while($out = mysql_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['mannschaft'].'">'.$out['mannschaft'].'</option>';
    }
    return $outp;
}

<div class="form-group input-group">
                            <span class="input-group-addon">Teamname*:</span>
                            <select class="form-control" name="teamname">
                                <option value="0">Team wählen...</option>
                                <? echo teamoptionen(isset($_POST['teamname']) ? $_POST['teamname'] : ''); ?>
                            </select>
                           
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Spielername*:</span>
                            <select class="form-control" name="spielername">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['spielername']) ? $_POST['spielername'] : ''); ?>
                               
                            </select>

Mein mysqli versuch

PHP:
function spieleroptionen($team, $select){

        $sql = mysqli_query($db_link, "Select * From mhdl_spieler Where saison = 16 ORDER BY name ASC");

    while($out = mysqli_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['name'].'">'.$out['name'].'</option>';
    }
    return $outp;
}

function teamoptionen($team, $select){

        $sql = mysqli_query($db_link, "Select * From mhdl_teams ORDER BY id ASC");

    while($out = mysqli_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['mannschaft'].'">'.$out['mannschaft'].'</option>';
    }
    return $outp;
}
<div class="form-group input-group">
                            <span class="input-group-addon">Teamname*:</span>
                            <select class="form-control" name="teamname">
                                <option value="0">Team wählen...</option>
                                <? echo teamoptionen(isset($_POST['teamname']) ? $_POST['teamname'] : ''); ?>
                            </select>
                           
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Spielername*:</span>
                            <select class="form-control" name="spielername">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['spielername']) ? $_POST['spielername'] : ''); ?>
                               
                            </select>
 
Hi,

sobald ich sie auf mysqli ändere funktionieren sie leider nicht mehr

Wie genau äußert sich das? Fehlermeldung?


Als erstes fällt auf, dass die Variable $db_link in keiner Deiner Funktionen definiert ist und scheinbar irgendwo "outer scope" verwendet wird.

Stichwort: global

Viele Grüße
 
Gar keine fehler meldung nur die select felder bleiben leer auch wenn ich db_link global setze in jeder funktion die Funktion liegt auch in der php nicht in einer extra datei hier mal der gesamte code

PHP:
<?
function spieleroptionen($team, $select){
    global $db_link;
        $sql = mysqli_query($db_link, "Select * From mhdl_spieler Where saison = 16 ORDER BY name ASC");

    while($out = mysqli_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['name'].'">'.$out['name'].'</option>';
    }
    return $outp;
}

function teamoptionen($team, $select){
    global $db_link;
        $sql = mysqli_query($db_link, "Select * From mhdl_teams ORDER BY id ASC");

    while($out = mysqli_fetch_array($sql)){
        $sel = NULL;
        if($out['id'] == $select) $sel = 'selected';
        $outp .= '<option '.$sel.' value="'.$out['mannschaft'].'">'.$out['mannschaft'].'</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=top" method="post">
                    <div class="form-group input-group">
                            <span class="input-group-addon">Datum*:</span>
                            <input type="text" name="datum" placeholder="Beispiel 01.01.1901" maxlength="32" class="form-control" value="<? echo isset($_POST['datum']) ? $_POST['datum'] : ''; ?>">
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Teamname*:</span>
                            <select class="form-control" name="teamname">
                                <option value="0">Team wählen...</option>
                                <? echo teamoptionen(isset($_POST['teamname']) ? $_POST['teamname'] : ''); ?>
                            </select>
                          
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Spielername*:</span>
                            <select class="form-control" name="spielername">
                                <option value="0">Spieler wählen...</option>
                                <? echo spieleroptionen(isset($_POST['spielername']) ? $_POST['spielername'] : ''); ?>
                              
                            </select>
                          
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Hi-Finish:</span>
                            <input type="text" name="highf" placeholder="ab101 nur die Zahl angeben" maxlength="32" class="form-control" value="<? echo isset($_POST['highf']) ? $_POST['highf'] : ''; ?>">
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">Shortgame:</span>
                            <select name="shortgame" class="form-control cursor">
                                <option value="">Bitte wählen....</option>
                                <option value="21">21</option>
                                  <option value="20">20</option>
                                  <option value="19">19</option>
                                  <option value="18">18</option>
                                  <option value="17">17</option>
                                  <option value="16">16</option>
                                  <option value="15">15</option>
                                <option value="14">14</option>
                                <option value="13">13</option>
                                <option value="12">12</option>
                                <option value="11">11</option>
                                <option value="10">10</option>
                                <option value="9">9</option>
                                </select>
                    </div>
                    <div class="form-group input-group">
                            <span class="input-group-addon">180er:</span>
                            <select name="highscore" 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>
                                </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="top" 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>
<? } ?>
 
Hi,

erhälst Du ein Ergebnis, wenn Du nach dem global $db_link ein:
PHP:
print_r($db_link);
setzt?

VG
 
keine Ahnung wo der Fehler war jetzt geht es auf einmal , kann es daran gelegen haben das ich nur eine Funktion global gemacht hatte um nur die eine funktion zu testen ?
 
Wenn beide Funktionen voneinander abhängig sind schon :)

Vllt. hat auch das Speichern nicht ganz geklappt.
 
Ergänzung: Du solltest wenn irgend möglich nicht "SELECT * FROM" verwenden, sondern immer die konkreten Spalten abfragen, also zB "SELECT id,Mannschaft FROM...".
Das spart Performance und beugt Fehler vor.
 

Neue Beiträge

Zurück