$Koords2 funktioniert, $Koords 1 aber nicht

Acriss

Gesperrt
Update arbeitet nicht.

Hi,
ich hatte schonmal komische Fehler, aber der hier topt alles:

PHP:
//Pruefen ob die Felder des Arrays den Wert 0 enthalten

while ($data = mysql_fetch_array($query, $connect))
                 	{
$koords = array("array", $data[3], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10], $data[11], $data[12], $data[13], $data[14], $data[15]);

global $koords;

}

$k = 0;
for ($j = 1; $j <= 13; $j++)
{

if ($koords[$j] == 0) $k++;

}

// $_POST ist zu umstaendlich ;-)

$Koords1 = $_POST['koords1'];
$Koords2 = $_POST['koords2'];
$Koords3 = $_POST['koords3'];
$Koords4 = $_POST['koords4'];
$Koords5 = $_POST['koords5'];
$Koords6 = $_POST['koords6'];
$Koords7 = $_POST['koords7'];
$Koords8 = $_POST['koords8'];
$Koords9 = $_POST['koords9'];
$Koords10 = $_POST['koords10'];
$Koords11 = $_POST['koords11'];
$Koords12 = $_POST['koords12'];
$Koords13 = $_POST['koords13'];

// Wenn jedes Feld 0 enthaelt (also $k == 13 ist)

if ($k == 13)
{
$insert = "INSERT INTO spdata
(Allianz, Spieler, Koords1, Koords2, Koords3, Koords4, Koords5, Koords6, Koords7, Koords8, Koords9, Koords10, Koords11, Koords12, Koords13)
VALUES
('$alli', '$spieler', '$Koords1', '$Koords2', '$Koords3', '$Koords4', '$Koords5', '$Koords6', '$Koords7', '$Koords8', '$Koords9', '$Koords10', '$Koords11', '$Koords12', '$Koords13')
";

$result = mysql_query($insert) or die("Fehler ('$insert'): ".mysql_error());
if ($result) echo 'Daten eingetragen. <br /> Name: '.$spieler;

}

//Wenn mindestens ein Feld ungleich null ist, also $k kleiner 13)

if ($k < 13)
{
$update = "UPDATE spdata
Set
Spieler = $spieler,
Koords1 = $Koords1,
Koords2 = $Koords2,
Koords3 = $Koords3,
Koords4 = $Koords4,
Koords5 = $Koords5,
Koords6 = $Koords6,
Koords7 = $Koords7,
Koords8 = $Koords8,
Koords9 = $Koords9,
Koords10 = $Koords10,
Koords11 = $Koords11,
Koords12 = $Koords12,
Koords13 = $Koords13
WHERE Spieler = $spieler
";
$result = mysql_query($update) or die("Fehler ($update): ".mysql_error());
if ($result) echo 'Daten eingetragen. <br />';
}

Also das mit INSERT klappt prima, es wird alles eingetragen.
Aber Update geht nicht:
Die Syntax lautet dann irgendwie so:
Koords1 = , Koords2 = 114:56:13

Also der Wert fuer Koords1 wird nicht übergeben.

Das Formular:
PHP:
for ($i = 0; $i <= 13; $i++)
{

echo '<tr> <td>';
echo 'Koordinaten '.$i.':';
echo '</td> <td>';
if ($koords[$i] != 0)
{
echo '<input type="text" name="koords'.$i.'" value="'.$koords[$i].'" disabled="disabled" />';
echo '</td> </tr>';
}
else
{
echo '<input type="text" name="koords'.$i.'" value="0" />';
echo '</td> </tr>';
}
}

Und ja: Das Formular ist auf POST ;)

Bin für jede Hilfe dankbar, *verzweifel*
 
Zuletzt bearbeitet:
Hi,
lass dir doch mal bitte außerhalb der IF-Anweisungen die beiden Variable $insert und $update zusammenbauen um dann beide mit echo auszugeben. Kann ja nicht sein, dass dann bei $insert für Koords1 ein Wert da steht und bei $update nicht.

Ist das denn nur bei Koords1 so? Oder haben andere Variablen auch keinen Wert?
 
Also zur ersten Anweisung:
Ich weiß net was du damit meinst :confused:

Wenn du meinst, das ich den query ausgeben lassen soll,
dann ist hier das Ergebnis:

Notice: Undefined index: koords1 in /usr/export/www/vhosts/funnetwork/hosting/petersilies/sp/dbinsert.php on line 78
Fehler (UPDATE spdata Set Spieler = Acriss, Koords1 = , Koords2 = 1014, Koords3 = 11, Koords4 = 0, Koords5 = 0, Koords6 = 0, Koords7 = 0, Koords8 = 0, Koords9 = 0, Koords10 = 0, Koords11 = 0, Koords12 = 0, Koords13 = 0 WHERE Spieler = Acriss ): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Koords2 = 1014, Koords3 = 11, Koords4 = 0, Koords5 = 0, Koo' at line 4

Und damit wäre die zweite Frage auch wohl geklärt ;)
Nur Koords1 hat keinen Wert,
und merkwürdiger Weise gibt es die Anscheinend gar nicht.

line 77, 78, 79

PHP:
//line 77 ist eine Leerzeile
$Koords1 = $_POST['koords1'];
$Koords2 = $_POST['koords2'];
 
Hmm,
ich verstehe das einfach nicht.


Ich habe jetzt weitere Tests durchgeführt,
und egalw as ich update, das alte wird dabei immer gelöscht.
Nicht NUR $koords1.
Was tun?


edit:
Es liegt warscheinlich am Disabled -.-
 
Zuletzt bearbeitet:
Hallo,

eigentlich hast du das Problem ja schon selber gelöst (wahrscheinlich disabled attribut).
Um das zu testen würde ich immer nen kleines Script bauen, was dies prüft.

Ich hab das hier mal kurz gemacht.
Man sieht, das bei gesetztem "disabled" beim Input kein Wert übergeben wird, setzt man das Input Feld aber auf "readonly" so wird es übergeben und ist im Form nicht veränderbar vom User.

PHP:
IF(isset($_POST['test_button']))
{
    echo "<pre>";
    var_dump($_POST);
    echo "</pre>";
}
echo <<< TESTFORM
<form action="$_SERVER[PHP_SELF]" method="post">
    <input type="text" name="textbox1" value="check1" disabled="disabled" />
    <input type="text" name="textbox2" value="check2" readonly="readonly"/>
    <input type="text" name="textbox3" value="check3" />
    <input type="submit" name="test_button" value="Test" />
</form>
TESTFORM;

Das Ergebnis:
Code:
array(3) {
  ["textbox2"]=>
  string(6) "check2"
  ["textbox3"]=>
  string(6) "check3"
  ["test_button"]=>
  string(4) "Test"
}
 
Zurück