Reihenfolge eingeben und abschicken. Hmm..

ChrisPB hat gesagt.:
Warum hat der keine Ähnlichkeit? Alles ist gleich.
Wenn alles gleich ist, dann frage ich mich wo z.b. der Providername nun angezeigt wird?!
Ausserdem werden der Tarif und die ID nun nicht einfach nur angezeigt, sondern in einem Textfeld ausgegeben.
Wo bitte ist da denn noch die Ähnlichkeit?
Mir scheint auch dass es (entgegen Deiner Aussage) nicht der "gesamte Code" ist..... oder warum fehlt der zum schliessenden </div>-Tag gehörende öffnende <div>-Tag? ;)
ChrisPB hat gesagt.:
Mir scheint du hast wirklich nicht verstanden was ich will.
Du willst.....
ChrisPB hat gesagt.:
.....ein UPDATE auf alle Felder.....
Alle Felder heisst jedes Feld in jeder Spalte und jeder Zeile.
Da scheint es wohl Missverständnise zu geben. ;)

Ich hoffe dass ich Dich nun richtig verstanden habe.....
PHP:
<?php
include("db.php");

if(isset($_POST['Submit2'])){
    $anzahl = mysql_query("SELECT * FROM `".$db_tarife."`");
    $max = mysql_num_rows($anzahl);
    
    $i = 0; 
    while($i <= $max-1) {             
        mysql_query("UPDATE `".$db_tarife."` SET `reihe`='".mysql_real_escape_string($_POST['reihe'][$i])."' WHERE `tarif_id`='".$_POST['tarifid'][$i]."';");
        $i++; 
    }
    
    header("Location: ".$_SERVER['PHP_SELF']."?prov=".$_POST['auswahl']);
}
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="../data/style.css" rel="stylesheet" type="text/css">
</head>
<body>
    <table width="600" border="0" cellpadding="10" cellspacing="0" bgcolor="#bbccbb">
        <tr>
            <td>
            <b>Tarif Reihenfolge festlegen</b><br />
            <br />
            <a href="?prov=T-Mobile">T-Mobile</a> | <a href="?prov=Vodafone">Vodafone</a> | <a href="?prov=O2">O2</a> | <a href="?prov=e-plus">E-Plus</a><br />
            <a href="?prov=Debitel">Debitel</a> | <a href="?prov=Mobilcom">Mobilcom</a> | <a href="?prov=Victorvox">Victorvox</a> | <a href="?prov=Phonehouse">Phonehouse</a><br />
            <br />
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="das_formular">
            <?php
            $sql_get_all = "SELECT * FROM `".$db_tarife."` WHERE `provider_name`='".$_GET['prov']."' ORDER BY `reihe`";
            $db_result = mysql_query($sql_get_all);

            if (mysql_num_rows($db_result) >0) {

                echo "<table>\n";

                while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) {
                    echo "            <tr>\n";
                    echo "                <td><b>ID:</b> ".$row['tarif_id']."</td>\n";
                    echo "                <td><b>Provider:</b> ".$row['provider_name']."</td>\n";
                    echo "                <td><b>Tarif:</b> ".$row['tarif']."</td>\n";
                    echo "                <td><b>Nr:</b> <input name='reihe[]' type='text' size='1' value='".$row['reihe']."'>\n";
                    echo "                <input name='tarifid[]' type='hidden' value='".$row['tarif_id']."'></td>\n";
                    echo "            </tr>\n";
                } 
                echo "            </table>";
                $no_data = 0;
            }
            else{
                echo "<b>Bitte Netzanbieter w&auml;hlen!<b>";
                $no_data = 1;
            } 
            ?>        
            </td>
        </tr>
        <tr>
            <td>
            <b>Alles &uuml;berpr&uuml;fen...</b><br />
            <br />
            <div align="center"> 
                <input type="submit" name="Submit2" value="Send">
                &nbsp; 
                <input type="reset" name="Submit3" value="Reset">
                <input name="auswahl" type="hidden" value="<?php echo $_GET['prov']; ?>">
            </div>
            
            </form>
            </td>
        </tr>
    </table>
</body>
</html>
Wenn ich mich nicht täusche, müssten die Spaltennamen stimmen..... ansonsten ggf. anpassen.
 
Ich hab das 1 zu 1 rüberkopiert und es funktioniert. Danke vielmals.

Hoffe ich kam nicht unfreundlich rüber, als ich dachte, dass du die Problematik nicht verstehst.

Das Bild im Attachment ist ähnlich, ja. Ich hatte nachträglich was umgestellt, aber die nicht von großer Bedeutung waren denke ich.

Werde mich morgen damit auseinandersetzen, wie du das umgesetzt hast.

Good night..
 
ChrisPB hat gesagt.:
Hoffe ich kam nicht unfreundlich rüber, als ich dachte, dass du die Problematik nicht verstehst.
Ach was. ;)
Manchmal muss man halt auf die Nase gestossen werden..... wer weiss wie lange das Missverständnis sonst noch bestanden hätte. ;)
Klar, ich hätte sorgfälltiger lesen und mir alles tiefer verinerlichen können, aber manchmal überfliegt man die Beiträge auch nur.
Da bin ich aber nicht der einzigste..... selbst Mods passieren dann solche Missverständnise. ;)
Bei der Anzahl an Threads ist es natürlich auch kein Wunder.

Dass das Script funktioniert, war mir klar..... schliesslich habe ich es ja getestet. ;)
Nur ob es nun Deinen Wünschen tatsächlich entspricht, konnte ich natürlich nur vermuten. ;)

Im wesentlichen habe ich die while-Schleife eingebaut und das Formular angepasst.
Zusätzlich habe ich noch die header()-Funktion eingesetzt, damit zum einem die Daten nicht erneut (z.b. beim drücken von F5) gesendet werden können und zum anderem dass Du wieder bei der gleichen Provider Auswahl landest.
Ausserdem habe ich noch ein paar Kleinigkeiten (z.b. <? in <?php) geändert, da Du sonst früher oder später Probleme bekommen könntest (Stichwort z.b. short_open_tag).
 
Hatte mich schon gefragt was header() bewirkt.
Die PHP-Tags, werd ich künftig auch nicht mehr verkürzt schreiben.

Ich hab mir jetzt überlegt neben jedem ausgelesenen Feld noch ein Button zu setzen,
der mir erlaubt den Datensatz (also den kompletten Tarif) aus der Datenbank zu löschen.

Dabei trete ich auf ein Problem, dass ich nicht die tarif_id auslesen kann für die Zeile,
weil du das mit einem Array gelöst hast. Schau mal...

Code:
<?php
include("db.php");

if(isset($_POST['Submit2'])){
    $anzahl = mysql_query("SELECT * FROM `".$db_tarife."`");
    $max = mysql_num_rows($anzahl);
    
    $i = 0; 
    while($i <= $max-1) {             
        mysql_query("UPDATE `".$db_tarife."` SET `reihe`='".mysql_real_escape_string($_POST['reihe'][$i])."' WHERE `tarif_id`='".$_POST['tarifid'][$i]."';");
        mysql_query("UPDATE `".$db_tarife."` SET `tarif`='".mysql_real_escape_string($_POST['tarif'][$i])."' WHERE `tarif_id`='".$_POST['tarifid'][$i]."';");
        $i++; 
    }
    
    header("Location: ".$_SERVER['PHP_SELF']."?prov=".$_POST['auswahl']);
}

if(isset($_POST['Submit5'])){
         
        mysql_query("DELETE FROM `".$db_tarife."` WHERE `tarif_id`='".$_POST['tarifid']."';");
		header("Location: ".$_SERVER['PHP_SELF']."?prov=".$_POST['auswahl']);
}





############## weiter unten ###############

            if (mysql_num_rows($db_result) >0) {

                echo "<table>\n";

                while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) {
                    echo "            <tr>\n";
                    echo "                <td><b>ID:</b> ".$row['tarif_id']."</td>\n";
                    echo "                <td><b>Provider:</b> ".$row['provider_name']."</td>\n";
                    echo "                <td><b>Tarif:</b> <input name='tarif[]' type='text' size='25' value='".$row['tarif']."'>\n";
                    echo "                <td><b>Nr:</b> <input name='reihe[]' type='text' size='1' value='".$row['reihe']."'>\n";
                    echo "                <input name='tarifid[]' type='hidden' value='".$row['tarif_id']."'></td>\n";
                    echo "                <td><input type='submit' name='Submit5' value='-X-'></td>\n";
                    echo "            </tr>\n";
                } 
                echo "            </table>";
                $no_data = 0;
            }



?>

Wie du siehst, habe ich noch eine weitere Änderungen übernommen. Undzwar
soll der Tarifname auchgleich mit verändert werden können auf Wunsch.

Das jetzige Problem ist, dass er die ID nicht übergibt. Was mach ich falsch?
 
Mehrere Felder eines Datensatzes updatest Du in dem Du die Werte im SET angibtst.....
PHP:
        mysql_query("UPDATE `".$db_tarife."` SET `reihe`='".mysql_real_escape_string($_POST['reihe'][$i])."', `tarif`='".mysql_real_escape_string($_POST['tarif'][$i])."' WHERE `tarif_id`='".$_POST['tarifid'][$i]."';");
Zu Deinem anderem Problem, dort würde ich Checkboxen/Radiobuttons nehmen und dafür bei den Send/Reset Button noch einen Delete Button setzen.
So hättest Du dann nämlich auch die Möglichkeit ggf. mehrere Datensätze "in einem Rutsch" zu löschen. ;)
PHP:
                while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) {
                    echo "            <tr>\n";
                    echo "                <td><b>ID:</b> ".$row['tarif_id']."</td>\n";
                    echo "                <td><b>Provider:</b> ".$row['provider_name']."</td>\n";
                    echo "                <td><b>Tarif:</b> <input name='tarif[]' type='text' size='25' value='".$row['tarif']."'></td>\n";
                    echo "                <td><b>Nr:</b> <input name='reihe[]' type='text' size='1' value='".$row['reihe']."'>\n";
                    echo "                <input name='delete[]' type='checkbox' value='".$row['tarif_id']."'></td>\n";
                    echo "                <input name='tarifid[]' type='hidden' value='".$row['tarif_id']."'></td>\n";
                    echo "            </tr>\n";
                } 
 
.........
 
            <div align="center"> 
                <input type="submit" name="Submit2" value="Send">
                &nbsp; 
                <input type="reset" name="Submit3" value="Reset">
                &nbsp; 
                <input type="submit" name="Submit5" value="Delete">
                <input name="auswahl" type="hidden" value="<?php echo $_GET['prov']; ?>">
            </div>
Dann muss die Datenbank natürlich noch Bescheid bekommen. ;)
Ich kann es gerade nicht testen (bin nicht zuhause), müsste aber funktionieren:
PHP:
if(isset($_POST['Submit5'])){
    $anzahl = mysql_query("SELECT * FROM `".$db_tarife."`");
    $max = mysql_num_rows($anzahl);
    
    $i = 0; 
    while($i <= $max-1) {             
        mysql_query("DELETE FROM `".$db_tarife."` WHERE `tarif_id`='".$_POST['delete'][$i]."';");
        $i++; 
    }
    
    header("Location: ".$_SERVER['PHP_SELF']."?prov=".$_POST['auswahl']);
}
Ich würde es entweder vor dem Code zum updaten oder danach einsetzen.
 
Dr Dau hat gesagt.:
Ich kann es gerade nicht testen (bin nicht zuhause), müsste aber funktionieren

Tut es, Doc.

Ich wäre nicht darauf gekommen es so zu lösen. Danke.
P.S. Wenn du interessiert bist was ich so baue, kannst du mir ne PN schicken,
dann zeig ich dir das mal.
 
Zurück