mehrere einträge updaten(mysql) jedoch...

ne, das funzt net!!!
ich schicke dir morgen per icq den code!
also, die werte werden zwar in den arrays gespeichert, also auch die ID´s jedoch muss da irgendwas mit der for schleife nicht in ordnung sein!!!
cu
OP_Jon
 
Was ist daran denn jetzt falsch?
PHP:
<?php
session_start();
include("sql.php");
if (!session_is_registered("user")) {
  header("location:index.php");
  die();
}
?>
<html>
<head>
<title>Inseldaten ändern</title>
</head>
<body>
<input type="hidden" name="action" value="">
<input type="hidden" name="username" value="">
<?php
if ($action == "") {
  $query = "SELECT * FROM inseln WHERE unam='$username'";
  $sel = mysql_query($query,$conn);
  echo "<b>Inseldaten von ".$_SESSION["user"]." ändern:</b><br>";
  echo "(Falls man etwas noch nicht bauen kann, einfach \"NA\" schreiben!)";
  echo "<form name='form' action='aender_isle?action=aender&username=$username' method='post'>";
echo "<table border=1>";
echo "<tr>";
while ($row = mysql_fetch_assoc($sel))  {
  echo "<td>";
  echo "<input type='hidden' name='insel_id[]' value='".$row["ID"]."'>";
  echo "<table>";
  echo "<tr><td>Username<td>:<td>".$row["unam"];
  echo "<tr><td>Inselname<td>:<td><input type='text' name='n_inselname[]' value='".$row["inselname"]."' size=15>";
  echo "<tr><td>Inselnummer<td>:<td><input type='text' name='n_inselnummer[]' value='".$row["inselnummer"]."' size=4>";
  echo "<tr><td colspan=100><img src='http://operatorjon.ath.cx/pics/line.gif'>";
  echo "<tr><td>Haupthaus<td>:<td><input type='text' name='n_haupthaus[]' value='".$row["haupthaus"]."' size=2>";
  echo "<tr><td>Steinmauer<td>:<td><input type='text' name='n_steinmauer[]' value='".$row["steinmauer"]."' size=2>";
  echo "<tr><td colspan=100><img src='http://operatorjon.ath.cx/pics/line.gif'>";
  echo "<tr><td>Soldaten<td>:<td><input type='text' name='n_soldaten[]' value='".$row["soldaten"]."' size=4>";
  echo "<tr><td>Speerträger<td>:<td><input type='text' name='n_speertraeger[]' value='".$row["speertraeger"]."' size=4>";
  echo "<tr><td>Bogenschützen<td>:<td><input type='text' name='n_bogenschuetzen[]' value='".$row["bogenschuetzen"]."' size=4>";
  echo "<tr><td>Schwertkämpfer<td>:<td><input type='text' name='n_schwerttraeger[]' value='".$row["schwerttraeger"]."' size=4>";
  echo "<tr><td colspan=100><img src='http://operatorjon.ath.cx/pics/line.gif'>";
  echo "<tr><td>Handelsschiffe<td>:<td><input type='text' name='n_handelsschiffe[]' value='".$row["handelsschiffe"]."' size=4>";
  echo "<tr><td>Kleine Kriegsschiffe<td>:<td><input type='text' name='n_kl_kriegsschiffe[]' value='".$row["kl_kriegsschiffe"]."' size=4>";
  echo "<tr><td>Große Kriegsschiffe<td>:<td><input type='text' name='n_gr_kriegsschiffe[]' value='".$row["gr_kriegsschiffe"]."' size=4>";
  echo "<tr><td>Kanonenboote<td>:<td><input type='text' name='n_kanonenboote[]' value='".$row["kanonenboote"]."' size=4>";
  echo "<tr><td>Siedlungsfähig<td>:<td><select name='n_siedlungsfaehig[]'><option>".$row["siedlungsfaehig"]."</option><option>Ja</option><option>Nein</option>";
  echo "<tr><td colspan=100><img src='http://operatorjon.ath.cx/pics/line.gif'>";
  echo "<tr><td>Abwehr<td>:<td><input type='text' name='n_abwehr[]' value='".$row["abwehr"]."' size=2>";
  echo "<tr><td>Speer<td>:<td><input type='text' name='n_speer[]' value='".$row["speer"]."' size=2>";
  echo "<tr><td>Bogen<td>:<td><input type='text' name='n_bogen[]' value='".$row["bogen"]."' size=2>";
  echo "<tr><td>Kanone<td>:<td><input type='text' name='n_kanone[]' value='".$row["kanone"]."' size=2>";
  echo "<tr><td>Schwert<td>:<td><input type='text' name='n_schwert[]' value='".$row["schwert"]."' size=2>";
  echo "<tr><td colspan=100><img src='http://operatorjon.ath.cx/pics/line.gif'>";
  echo "<tr><td>Würdet ihr einen Kleinen<br>Angriff für die Alli durchführen?<td>:<td><select name='n_kl_an_ja_n[]'><option>".$row["kl_an_ja_n"]."</option><option>Ja</option><option>Nein</option>";
  echo "<tr><td>Würdet ihr auch angreifen,<br>wenn ihr wahrscheinlich die Armee verliert?<td>:<td><select name='n_au_wenn_ar_weg[]'><option>".$row["au_wenn_ar_weg"]."</option><option>Ja</option><option>Nein</option>";
  echo "<tr><td>Wieviel eurer Flotte würdet ihr einsetzen?<td>:<td><select name='n_how_much_flotte[]'><option>".$row["how_much_flotte"]."</option><option>Nichts</option><option>25%</option><option>50%</option><option>75%</option><option>Alles</option>";
  echo "</table>";
}
    echo "<tr><tr><td><input type='submit' value='Inseldaten ändern'>  <input type='button' value='Abbrechen' onClick=\"javascript:location.href='online.php'\">";
  echo "</table>";
  echo "</form>";
}
if ($action == "aender" and $username == "$username") {
  for($i=0;$i<count($insel_id);$i++){
      $query = "UPDATE inseln SET inselnummer='".$n_inselnummer[i]."',inselname='".$n_inselname[i]."',haupthaus='".$n_haupthaus[i]."',steinmauer='".$n_steinmauer[i]."',soldaten='".$n_soldaten[i]."',speertraeger='".$n_speertraeger[i]."',bogenschuetzen='".$n_bogenschuetzen[i]."',schwerttraeger='".$n_schwerttraeger[i]."',handelsschiffe='".$n_handelsschiffe[i]."',kl_kriegsschiffe='".$n_kl_kriegsschiffe[i]."',gr_kriegsschiffe='".$n_gr_kriegsschiffe[i]."',kanonenboote='".$n_kanonenboote[i]."',siedlungsfaehig='".$n_siedlungsfaehig[i]."',abwehr='".$n_abwehr[i]."',speer='".$n_speer[i]."',bogen='".$n_bogen[i]."',schwert='".$n_schwert[i]."',kanone='".$n_kanone[i]."',kl_an_ja_n='".$n_kl_an_ja_n[i]."',au_wenn_ar_weg='".$n_au_wenn_ar_weg[i]."',how_much_flotte='".$n_how_much_flotte[i]."' WHERE ID='".$insel_id[i]."'";
$up = mysql_query($query,$conn) or die ("FEHLER!<br>Update nicht ausgeführt!<br><a href='online.php'>Zurück</a>");
   }  
echo "Update ausgeführt!<br><a href='online.php'>Zurück zur Übersicht</a>";
}
?>
</body>
</html>
so hatte mir SonicBe@m es erklärt, es funktioniert nicht, ne idee warum?
 
Hi,

lass Dir doch die Queries einfach mal auf dem Screen ausgeben.
Ich vermute, dass er gar nicht in die Schleife reinkommt, denn Du weist der Varibalen $username 2mal einen Wert zu.
Einmal über das Hiddenfeld: <input type="hidden" name="username" value="">
und einmal über die Action-Methode. Welcher Wert wird denn übernommen?
Hast Du mal überprüft, ob die Logik so funktioniert?
Schmeiß Dir mal den Inhalt der Var auf den Screen.

By the way, heisst es nicht: if ( ($action=="aender") && ($username="$username") ) und trifft $variable="$variable" nicht immer zu?
 
Zuletzt bearbeitet:
also im query steht nichts, d.h. er lässt einfach alles leer!
Und das mit dem hidden und der url, das hidden feld ist doch der wert in der url oder nicht?
wenns falsch ist, schlag mich:-(
 
lol
Manchmal sieht man den Wald vor lauter Bäumen nicht.
Die Indexvariable i ist falsch angegeben. Du hast jeweils das $-Zeichen vorneweg vergessen. *g* -> $n_inselname[$i]
Somit haben alle Variablen den Wert "" und der Query funktioniert dann nicht, da es keinen Eintrag mit der Bedingung WHERE ID="" gibt.

Allerdings müsstest du auch die Fehlermeldung "Use of undefined constant i - assumed 'i' in Datei on line 56" bekommen. Oder hast Du in Deinem Script irgendwo eine Konstante i definiert?
 
Zuletzt bearbeitet:
klar, in der schleife...

//EDIT:
sonics schuld:p
er hat mir das genauso erklärt:
mach ne neue table
test
enthalten
id
name

nun machste nen html file das nur nen update macht
am besten erstellste danns schonmal 2 datensätze darin
also nun zu den daten im html
Code:
<input type="hidden" name ="test_id[]">
<input type="text" name="name[]">

für die abrfage zum füllen würde das dann so aussehen

<?
$res = mysql_query("select id,name from test");
while($row = mysql_fetch_array($res){
?>
<input type="hidden" name ="test_id[]" value="<?=$row[id]?>">
<input type="text" name="name[]" value="<?=$row[name]?>">
<?
}
?>

der update müsste dann so aussehen

<?
if(isset($submit)){
   for($i=0;$i<count($test_id);$i++){
      mysql_query(update test set name='$name[i]' where id='$test_id[i]');
   }
}
?>
 
Zuletzt bearbeitet:
Nee, ich glaube, jetzt verwechselst Du Konstanten mit Variablen.

$i ist eine Variable mit veränderbarem Wert
i ist eine Konstante, die aber auch irgendwo mit define("i","Wert") definiert sein muss und deren Wert kann man nachträglich nicht mehr verändern - deshalb heisst sie ja Konstante *g*

Edit: jetzt haben wir gleichzeitig geschrieben. :-)

Wenn Du ein Array mit Inputfeldern aufbaust ($name[]), dann lautet der Index des ersten Elements $name[0], der des 2ten $name[1], usw.
Wenn Du in einer Schleife per Variable an die Werte kommen möchtest, dann lautet die Abfrage $name[$i].
Versuchs mal. ;)
 
Zuletzt bearbeitet:
nun schiebt er die schuld auf mich weil er meinen in 10 sekunden geschriebenen code kopiert hatt *lach*

aber ok :) sollange meine nicht funktionierenden Gedankenspiele am ende doch aufgehen bin ich ja zufrieden :)

bzw
#define i;
falls es das gibt *G*
 
Zurück