Steh auf den Schlauch

Kalito

Erfahrenes Mitglied
Ich glaube ich werde langsam wahnsinnig.

ich lese mittels einer Schleife die DB aus

PHP:
$mitglieder = mysql_query("SELECT MID,Status FROM ".DB_TABLE_M." ORDER BY MID");
                            while($daten = mysql_fetch_array($mitglieder)){
                                echo '<tr>';
                                echo '<td>'.$daten['MID'].'</td>';
                                echo '<td>
                                        <select name="status">
                                            <option>Mitglied</option>
                                            <option>Alumni</option>
                                            <option>Austritt</option>
                                        </select>
                                      </td>';
                                echo'</tr>';

                            }


Alles Kein Problem.

Aber jetzt habe ich das Problem, das wenn ich was ändere, die Änderung in die DB zu übertragen, wenn ich auf senden drücke. Hab irgendwie gerade keine Idee, wie ich es am besten lösen kann.

Das Hauptproblem ist, das die MID entweder garnicht oder nur die letzte übermittelt wird. Die MID ist unique
 
Naja vielleicht solltest du erstmal nen aussagekraeftigen Titel waehlen, dann finden mehr Leute dein Thema die eventuell das gleiche Problem haben.
Zum anderen, sehe ich nur eine SELECT Anweisung, wie willst du mit ner select was aendern?
 
wenn du die Update funktion auch noch willst?

Bitte

PHP:
mysql_query("UPDATE ".DB_TABLE_M." SET Status=".$_POST['status']." WHERE MID=".$mid.")

Aber wiegesagt er nimmt immer nur die letzte Position der Schleife.
 
Woher bekommt die Variable $mid denn überhaupt ihren Wert?

Mit dem bisher Code den du hier zeigst erkennt man eigentlich nichts von der Seite.

Was meinst du mit der letzten Position der Schleife?
 
Du führst den Query dann wahrscheinlich nach der Schleife aus. Dann enthält die Variable den letzten Wert, der ihr in der Schleife zugewiesen wurde.
 
Eigentlich ist es nicht mehr:

PHP:
<?php
include('check.php');
if(!function_exists('db_connect'))
     header('Location: index.php');

if(isset($_POST['submit'])){
    mysql_query("UPDATE ".DB_TABLE_M." SET Status=".$_POST['status']." WHERE MID=".$daten['MID].");
}
?>
<html>
    <head>
        <title>Titel</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td rowspan="2" class="table" valign="top"><?php  menue($rid); ?></td>
                <td class="head"><h1>Personal</h1></td>
            </tr>
            <tr>
                <td>
                    <table border="0" cellpadding="" cellspacing="10">
                    <form method="post">
                        <tr>
                            <th>MID</th>
                            <th>Status</th>
                        </tr>
                        <?php
                            $mitglieder = mysql_query("SELECT MID,Status FROM ".DB_TABLE_M." ORDER BY MID");
                            while($daten = mysql_fetch_array($mitglieder)){
                                echo '<tr>';
                                echo '<td>'.$daten['MID'].'</td>';
                                echo '<td>
                                        <select name="status">
                                            <option>Mitglied</option>
                                            <option>Alumni</option>
                                            <option>Austritt</option>
                                        </select>
                                      </td>';
                                echo'</tr>';

                            }
                         ?>
                        <tr>
                            <td><input type="submit" name="submit" value="Daten &auml;ndern"/></td>
                        </tr>
                    </form>
                    </table>
                </td>
            </tr>
        </table>
    </body>
</html>

Wie gesgat es wird nichts eingetragen und wenn ich ein var dump der Update funktion mache, dann wird immer nur Mitglieder angezeigt, obwohl ich auch einige Werte auf Alumni oder so setze
 
item: Dein Formular hat kein Feld für mid. Woher soll dann nach dem Submit das mid bekannt sein?

item: Dein Formular beinhaltet das Feld status. Da aber dieses Feld nicht als Array im Formular definiert ist, hast du für jede Zeile dasselebe Feld mit demselben Namen und somit wird auch nur eine Änderung übertragen
 
item: Dein Formular hat kein Feld für mid. Woher soll dann nach dem Submit das mid bekannt sein?
Hatte mich da vertan Ich meinte $daten['MID']

item: Dein Formular beinhaltet das Feld status. Da aber dieses Feld nicht als Array im Formular definiert ist, hast du für jede Zeile dasselebe Feld mit demselben Namen und somit wird auch nur eine Änderung übertragen

status steht im <select>


Wie kann ich aber die Schleife nochmal so durchlaufen lassen, das er aber die Änderungen übernimmt
 
So, hab hier mal ein Code-Schnipsel erstellt der dein Problem löst
Achte mal daraud. Ich habe die Form-Felder-Namen mit einem [] am Ende geschrieben, damit ich ein Array mit allen Werten aller Zeilen zurückbekomme
PHP:
<?php
if(isset($_POST['submit'])){
    for($i=0; $i<count($_POST['mid']); $i++){
        $mid = $_POST['mid'][$i];
        $status = $_POST['status'][$i];
        //TODO: Hier anstelle des echos die Änderung in die DB speichern
        echo "{$mid} -> {$status}<br />";
    }
}

?>
<hr />
<form method="post">
<?php
//TODO: $data simuliert die DB-Abfrage
$dbresult = array(
            array('mid' => 1, 'status' => 'open' ),
            array('mid' => 2, 'status' => 'closed' ),
            array('mid' => 3, 'status' => 'open' ));
//TODO: foreach durch while() mit mysql_fetch_array ersetzen
foreach($dbresult as $daten){
    echo "<input type='hidden' name='mid[]' value='{$daten['mid']}' />";
    echo "<select name='status[]'>";
    echo "<option".(($daten['status']=='open') ? ' selected' : '')  .">open</option>";        
    echo "<option".(($daten['status']=='closed') ? ' selected' : '')  .">closed</option>";        
    echo "</select>";
    echo "<br />\n";        
}
?> 
    <input type="submit" name="submit" value="submit" />
</form>
 
Zurück