mehrere Formulare und ein Submit button ?

Papi62

Mitglied
Hallo zusammen

Ich bin anscheinend etwas begriffsstutzig. Hab schon mehrere Foren durchsucht und auch ähnliche Themen gefunden konnte es aber nicht für mein Problem umsetzen, bin halt noch Anfänger. :)

Ich hab mir eine SQL-Datenbank gebastelt mit 48 Datensätzen die sich in der Anzahl nicht verändern werden/sollen, einzig die letzten 7 Felder jedes Datenssatzes sollen geupdatet werden können. Soweit alles bestens, das anzeigen funktioniert problemlos (siehe php3.jpg).

Nun endlich zum Problem: Ich habe nun eine php-Seite mit mehreren Formularen (im Moment 2 von später 48) in der jedes Formular für einen Datensatz bzw. eine Tabellenzeile der angezeigten Tabelle steht. Wenn ich nun Datensatz/Zeile 1 aufülle und abschicke wird der ordungsgemäss in SQL eingetragen bzw. geändert, Beim zweiten Datensatz/Zeile wird aber der erste Datensatz wieder resetet bzw. der Feldinhalt gelöscht.
Daselbe auch umgekehrt. (siehe php1.jpg und php2.jpg)
Ausserdem möchte ich am Ende der Seite nur 1 Submit-Button anstatt in jeder Zeile.
Ich habe an mehreren Stellen etwas von Hidden-Feldern gelesen kapier das allerdings nicht. :eek:
Man kann natürlich die Daten über phpMyAdmin ändern aber es sollen noch andere die Daten ändern können.
Hier der Code:

aces_rares_edit.php
PHP:
<?php
   $db = mysql_connect(localhost, name, passwort);
   $res1 = mysql_db_query("items", "SELECT * FROM aces_rares WHERE id = 1"); //erster SQL-Datensatz bzw. Zeile der Tabelle
   $res2 = mysql_db_query("items", "SELECT * FROM aces_rares WHERE id = 2"); //zweiter SQL-Datensatz bzw. Zeile der Tabelle
?>
                </tr>
                <tr> 
                  <td height="80" colspan="9" bgcolor="#000033" class="tabelle"><a href="#mc">Melee</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#tmc">Hightech 
                    Melee</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#pc">Pistols</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#tpc">Hightech 
                    Pistols</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#rc">Rifles</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#trc">Hightech 
                    Rifles</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#hc">Canons</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#thc">Hightech 
                    Canons</a><br> <a href="#apu">APU PSI Spells</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#ppu">PPU 
                    SPI Spells</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#drone">Drones</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#tool">Tools</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#imp">Implants</a></td>
                </tr>
                <tr> 
                  <td height="23" colspan="9" class="tabellelinks">&nbsp;</td>
                </tr>
                <tr> 
                  <td height="40" colspan="9" bgcolor="#333333" class="mittel"> 
                    <div align="center">Melee<a name="mc"></a></div></td>
                </tr>
                <tr class="tabellenkopflinks"> 
                  <td bgcolor="#666666" class="tabellenkopflinks">Name</td>
                  <td width="54" bgcolor="#666666" class="tabellenkopf">Core</td>
                  <td width="56" bgcolor="#666666" class="tabellenkopf">Frame</td>
                  <td width="55" bgcolor="#666666" class="tabellenkopf">Hull</td>
                  <td width="56" bgcolor="#666666" class="tabellenkopf">Tech</td>
                  <td width="57" bgcolor="#666666" class="tabellenkopf">Comp.</td>
                  <td width="58" bgcolor="#666666" class="tabellenkopf">AdT</td>
                  <td width="53" bgcolor="#666666" class="tabellenkopf">AdH</td>
                  <td width="53" bgcolor="#666666" class="tabellenkopf">&nbsp;</td>
                </tr>
                <tr>
                  <form name="01" action="editrare.php" method="post"> <!-- Erster SQL-Datensatz bzw. Zeile der Tabelle --> 
                    <td height="23" bgcolor="#000033" class="tabellelinks"><a href="#mc" onClick="MM_openBrWindow('http://mib.r-appert.ch/items/php/item.php?id=16','','width=420,height=600')">Paw 
                      of Tiger</a></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="core01" type="text" value="<?php echo mysql_result($res1,0,"core"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="frame01" type="text" value="<?php echo mysql_result($res1,0,"frame"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="hull01" type="text" value="<?php echo mysql_result($res1,0,"hull"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="tech01" type="text" value="<?php echo mysql_result($res1,0,"tech"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="comp01" type="text" value="<?php echo mysql_result($res1,0,"comp"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="adt01" type="text" value="<?php echo mysql_result($res1,0,"adt"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="adh01" type="text" value="<?php echo mysql_result($res1,0,"adh"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input type="submit" name="01" value="ändern"></td>
                  </form>
                </tr>
                <tr> 
                  <form name="02" action="editrare.php" method="post"> <!-- Zweiter SQL-Datensatz bzw. Zeile der Tabelle --> 
                    <td height="23" bgcolor="#000033" class="tabellelinks"><a href="#mc" onClick="MM_openBrWindow('http://mib.r-appert.ch/items/php/item.php?id=17','','width=420,height=600')">Peacemaker</a></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="core02" type="text" value="<?php echo mysql_result($res2,0,"core"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="frame02" type="text" value="<?php echo mysql_result($res2,0,"frame"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="hull02" type="text" value="<?php echo mysql_result($res2,0,"hull"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="tech02" type="text" value="<?php echo mysql_result($res2,0,"tech"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="comp02" type="text" value="<?php echo mysql_result($res2,0,"comp"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="adt02" type="text" value="<?php echo mysql_result($res2,0,"adt"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input name="adh02" type="text" value="<?php echo mysql_result($res2,0,"adh"); ?>" size="8" maxlength="3"></td>
                    <td height="23" bgcolor="#000033" class="tabelle"> <input type="submit" name="02" value="ändern"></td>
                  </form>
                </tr>

editrare.php
PHP:
<?php

$co01 = ($_POST["core01"]);
$fr01 = ($_POST["frame01"]);
$hu01 = ($_POST["hull01"]);
$te01 = ($_POST["tech01"]);
$cp01 = ($_POST["comp01"]);
$at01 = ($_POST["adt01"]);
$ah01 = ($_POST["adh01"]);
$co02 = ($_POST["core02"]);
$fr02 = ($_POST["frame02"]);
$hu02 = ($_POST["hull02"]);
$te02 = ($_POST["tech02"]);
$cp02 = ($_POST["comp02"]);
$at02 = ($_POST["adt02"]);
$ah02 = ($_POST["adh02"]);

require("connectdb.php");

mysql_query("UPDATE aces_rares SET core='$co01', frame='$fr01', hull='$hu01', tech='$te01', comp='$cp01', adt='$at01', 
adh='$ah01' WHERE id = 1")
and
mysql_query("UPDATE aces_rares SET core='$co02', frame='$fr02', hull='$hu02', tech='$te02', comp='$cp02', adt='$at02', 
adh='$ah02' WHERE id = 2")
or die(mysql_error());

mysql_close();
print "<font size=\"4\"><b>die &Auml;nderungen wurden durchgeführt</b></font>";

?>
 

Anhänge

  • php3.jpg
    php3.jpg
    9 KB · Aufrufe: 90
  • php2.jpg
    php2.jpg
    9,4 KB · Aufrufe: 86
  • php1.jpg
    php1.jpg
    8 KB · Aufrufe: 80
Zuletzt bearbeitet:
PHP:
<?php
   $db = mysql_connect(localhost, name, passwort);
   $res1 = mysql_db_query("items", "SELECT * FROM aces_rares WHERE id = 1"); //erster SQL-Datensatz bzw. Zeile der Tabelle
   $res2 = mysql_db_query("items", "SELECT * FROM aces_rares WHERE id = 2"); //zweiter SQL-Datensatz bzw. Zeile der Tabelle
?>
1. siehe http://de3.php.net/manual/de/function.mysql-db-query.php
Anmerkung: Diese Funktion ist seit PHP 4.0.6 veraltet. Verwenden Sie diese Funktion nicht. Stattdessen sollten Sie die Funktionen mysql_select_db() und mysql_query() verwenden.

2. was soll das? Willst du das dann später alles 84 mal schreiben? Vieleicht noch öffter wenn mal neue Datensätze dazu kommen? Das ist nicht der Sinn von DB-Systemen - Stichwort "Skalierbarkeit".

Richtig:
PHP:
<?php
   $db = mysql_connect("localhost", "name", "passwort");
   mysql_select_db("db_name");
   $result = mysql_query("SELECT * FROM aces_rares", $db); //alle SQL-Datensätze bzw. Zeilen der Tabelle
   while($row = mysql_fetch_array($result)) {
      // hier nur 1 mal das ganze Tabellengedöns rein 
      // zweckmäßiger Weise mit eigenem <form> und einem hidden Field für die ID s.u.
   }
?>

... und in deine editrare.php brauchst du nur ein
PHP:
mysql_query("UPDATE aces_rares SET core='$co', frame='$fr', hull='$hu', tech='$te', comp='$cp', adt='$at',
adh='$ah' WHERE id = '$id'")
or die(mysql_error());

Ich habe an mehreren Stellen etwas von Hidden-Feldern gelesen kapier das allerdings nicht
In deinem Fall:
Code:
<input type="hidden" name="id" value="<? echo $row['id'] ?>">
 
Vielen Dank German, denke nun hab ichs geschnallt :-)

Hab nur noch 1 kleines Problemchen :-(
Ich möchte das neuste Datum aller Datensätze aus einem Timestamp-Feld ausgeben.
PHP:
<?php
   require("connectdb.php");
   $resd = mysql_db_query("items", "SELECT Letzte_dat FROM tabelle ORDER BY letzte_dat DESC LIMIT 1"); //neustes Datum
?>
                  <td height="93" colspan="12" class="gross"> <div align="center"> 
                      <p>Rarepart-Bestand der Aces of the Dragon</p>
                      <p class="tabelle">Stand vom <?php echo "$resd"; ?></p>
                    </div></td>
 
Zuletzt bearbeitet:
PHP:
<?php
   require("connectdb.php");
   $resd = mysql_db_query("items", "SELECT Letzte_dat FROM tabelle ORDER BY letzte_dat DESC LIMIT 1"); //neustes Datum
?>
Jetzt kommst du schon wieder mit mysql_db_query, das war schon veraltet als ich vor 3 Jahren mit PHP anfing!

Ich hab jetzt auch keine Lust im Manual nachzuschauen was das Ding zurück gibt, denke aber mal, dass es eine Resource ist und auf die kann man nicht einfach mit echo $resd zugreifen. Das heisst man kann schon, aber es wird nicht das gewünschte Ergebnis bringen.

Such mal im Manual nach mysql_result.
 
Zurück