Avatar billede reflex Nybegynder
23. december 2003 - 08:09 Der er 17 kommentarer

Opdaterings problem.

Jeg har et lille problem med at opdatere i min DB.
Jeg kan godt hente og vise det rigtige indhold, men når jeg skal opdatere sker der ikke en fis.

Min ide er at der går noget galt med at $ii/id værdien ikke bliver det samme??

Men jeg er ved at blive gråhåret så please help.

/Reflex

<?php
include ("../connect.php");

echo "<TABLE BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"10\"><TR>";
echo "<FORM ACTION=\"".basename($PHP_SELF)."?vis\" METHOD=\"POST\">";
echo "<tr><td>";
echo "Vælg et hold<br>";
echo "<select name=\"id\" size=\"1\">";
$result=mysql("$dbname","SELECT * FROM ligastilling ORDER BY position");
while ($row = mysql_fetch_row($result)) {
        $ho=$row[0];    // Hold navn
                $ka=$row[1];    // kampe
        $vu=$row[2];    // vundet
                $ua=$row[3];    // uafgjort
        $ta=$row[4];    // tabt
        $sc=$row[5];    // scoret
        $im=$row[6];    // imod
        $po=$row[7];    // point
        $pt=$row[8];    // position
        $ii=$row[9];    // id
echo "<option value=$ii>$ho - $po</option>";
}
echo "</select></td></tr>";
echo "<tr><td align=\"left\"><INPUT TYPE=\"submit\" NAME=\"Vælg\" VALUE=\"Submit\"></form></TABLE>";


if ($QUERY_STRING == "vis") {
$result=mysql("$dbname","SELECT * FROM ligastilling WHERE id = '$id'");
while($row=mysql_fetch_row($result)) {
$ho=$row[0];  // hold
$ka=$row[1];  // kampe
$vu=$row[2];  // vundet
$ua=$row[3];  // uafgjort
$ta=$row[4];  // tabt
$sc=$row[5];  // scoret
$im=$row[6];  // imod
$po=$row[7];  // point
$pt=$row[8];  // position
$ii=$row[9];  // id
}
echo "Indtast ny data og tryk opdatér<br><br>";
echo "<TABLE width='300' BORDER=\"0\" CELLPADDING=\"4\" CELLSPACING=\"0\">";
echo "<FORM ACTION=\"".basename($PHP_SELF)."?indsaet\" METHOD=\"POST\">";

echo "<tr><td colspan='2'></td></tr>";
echo "<tr><td>Hold:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"hold\" size=\"30\" value=\"$ho\" maxlength=\"30\"></td></tr><tr>";
echo "<td>Kampe:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"kampe\" size=\"3\" value=\"$ka\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Vundet:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"vundet\" size=\"3\" value=\"$vu\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Uafgjort:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"uafgjort\" size=\"3\" value=\"$ua\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Tabt:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"tabt\" size=\"3\" value=\"$ta\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Scoret:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"scoret\" size=\"3\" value=\"$sc\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Imod:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"imod\" size=\"3\" value=\"$im\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Point:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"point\" size=\"3\" value=\"$po\" maxlength=\"3\"></td></tr><tr>";
echo "<td>Position:&nbsp;</td><td>";
echo "<input type=\"text\" name=\"position\" size=\"3\" value=\"$pt\" maxlength=\"3\"></td></tr><tr>";
echo "<input type=\"hidden\" name=\"id\" value=\"$ii\">";

echo "<td colspan=\"2\" align=\"left\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Opdatér\"></form></td></tr></TABLE>";
}


if ($QUERY_STRING == "indsaet") {
mysql("piranhafc_dk","UPDATE ligastilling
SET hold='$ho',
kampe='$ka',
vundet='$vu',
uafgjort='$ua',
tabt='$ta',
scoret='$sc'
imod='$im'
point='$po'
position='$pt'
WHERE id='$ii'
");
}

?>
Avatar billede arne_v Ekspert
23. december 2003 - 08:20 #1
Mangler der ikke nogle kommaer mellem felt=værdi erne ?
Avatar billede reflex Nybegynder
23. december 2003 - 20:40 #2
Do'h jo men det virker alligevel ikke :(
Avatar billede Slettet bruger
26. december 2003 - 00:30 #3
Dit script henter alle variablene  $ho, $ka osv. med et databaseopslag i starten af scriptet, så det er de allerede eksisterende værdier i databasen, der bliver genindskrevet i bunden.

Dem du skal smide i databasen er jo dem fra formularen, og de hedder $_POST['hold'], $_POST['kampe'] osv.
Avatar billede reflex Nybegynder
26. december 2003 - 15:39 #4
Jeg har prøvet $_POST['hold'], $_POST['kampe'] osv. men så kommer den med fejl meldingen Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'.

Så jeg er desværre ikke kommet vidre :(
Avatar billede Slettet bruger
26. december 2003 - 22:40 #5
Det lyder som om du mangler et slut-anførselstegn et sted. Eller måske har en ikke-escapet " i en streng, der er omsluttet af ".

I html er ' også tilladt om attributter. Prøv at lave alle de \" om til ', så kan det måske blive en smule lettere at overskue. Her er lige en linie som eksempel:

echo "<input type='text' name='position' size='3' value='$pt' maxlength='3'></td></tr><tr>";

Ellers kunne du jo vise os den nuværende kode, og fortælle os, hvilken linie, den giver en fejl på, så vi ved, at fejlen er et sted før det.
Avatar billede reflex Nybegynder
27. december 2003 - 00:46 #6
Jeg har udskiftet alle \" med ' her er koden:

<?php

include ("../connect.php");

echo "<TABLE BORDER='0' CELLPADDING='10' CELLSPACING='10'><TR>";
echo "<FORM ACTION='test2.php?vis' METHOD='POST'>";
echo "<tr><td>";
echo "Vælg et hold<br>";
echo "<select name='id' size='1'>";
$result=mysql("piranhafc_dk","SELECT * FROM ligastilling ORDER BY position");
while ($row = mysql_fetch_row($result)) {
        $ho=$row[0];    // Hold navn
        $ka=$row[1];    // kampe
        $vu=$row[2];    // vundet
        $ua=$row[3];    // uafgjort
        $ta=$row[4];    // tabt
        $sc=$row[5];    // scoret
        $im=$row[6];    // imod
        $po=$row[7];    // point
        $pt=$row[8];    // position
        $ii=$row[9];    // id
echo "<option value=$ii>$ho - $po</option>";
}
echo "</select></td></tr>";
echo "<tr><td align='left'><INPUT TYPE='submit' NAME='Vælg' VALUE='Submit'></form></TABLE>";

if ($QUERY_STRING == "vis") {
$result=mysql("piranhafc_dk","SELECT * FROM ligastilling WHERE id = '$id'");
while($row=mysql_fetch_row($result)) {
$ho=$row[0];    // hold
$ka=$row[1];    // kampe
$vu=$row[2];    // vundet
$ua=$row[3];    // uafgjort
$ta=$row[4];    // tabt
$sc=$row[5];    // scoret
$im=$row[6];    // imod
$po=$row[7];    // point
$pt=$row[8];    // position
$ii=$row[9];    // id
}

echo "Indtast ny data og tryk opdatér<br><br>";
echo "<TABLE width='300' BORDER='0' CELLPADDING='4' CELLSPACING='0'>";
echo "<FORM ACTION='test2.php?indsaet' METHOD='POST'>";
echo "<tr><td colspan='2'></td></tr>";
echo "<tr><td>Hold:&nbsp;</td><td>";
echo "<input type='text' name='hold1' size='30' value='$ho' maxlength='30'></td></tr><tr>";
echo "<td>Kampe:&nbsp;</td><td>";
echo "<input type='text' name='kampe1' size='3' value='$ka' maxlength='3'></td></tr><tr>";
echo "<td>Vundet:&nbsp;</td><td>";
echo "<input type='text' name='vundet1' size='3' value='$vu' maxlength='3'></td></tr><tr>";
echo "<td>Uafgjort:&nbsp;</td><td>";
echo "<input type='text' name='uafgjort1' size='3' value='$ua' maxlength='3'></td></tr><tr>";
echo "<td>Tabt:&nbsp;</td><td>";
echo "<input type='text' name='tabt1' size='3' value='$ta' maxlength='3'></td></tr><tr>";
echo "<td>Scoret:&nbsp;</td><td>";
echo "<input type='text' name='scoret1' size='3' value='$sc' maxlength='3'></td></tr><tr>";
echo "<td>Imod:&nbsp;</td><td>";
echo "<input type='text' name='imod1' size='3' value='$im' maxlength='3'></td></tr><tr>";
echo "<td>Point:&nbsp;</td><td>";
echo "<input type='text' name='point1' size='3' value='$po' maxlength='3'></td></tr><tr>";
echo "<td>Position:&nbsp;</td><td>";
echo "<input type='text' name='position1' size='3' value='$pt' maxlength='3'></td></tr><tr>";
echo "<input type='hidden' name='id' value='$ii'>";
echo "<td colspan='2' align='left'><INPUT TYPE='submit' NAME='submit' VALUE='Opdatér'></form></td></tr></TABLE>";
}

if ($QUERY_STRING == "indsaet") {
mysql("piranhafc_dk","UPDATE ligastilling
SET $_POST['hold'],                        // Her skriver den `T_STRING' osv.
$_POST['kampe'],
$_POST['vundet'],
$_POST['uafgjort'],
$_POST['tabt'],
$_POST['scoret'],
$_POST['imod'],
$_POST['point'],
$_POST['position']
WHERE id='$ii'
");
}

?>

Det er lige inden den skal opdatere db'en.
Avatar billede Slettet bruger
27. december 2003 - 07:30 #7
Du har lavet navnene i formularen om, så skal du også lave navnene i $_POST[] om. Derudover har du glemt kolonnenavnene i din SQL. Nu ved MySQL jo ikke, hvad den skal gøre med dine værdier... Ret til:

if ($QUERY_STRING == "indsaet") {
  mysql("piranhafc_dk","UPDATE ligastilling
    SET hold='{$_POST['hold1']}',
        kampe='{$_POST['kampe1']}',
        vundet='{$_POST['vundet1']}',
        uafgjort='{$_POST['uafgjort1']}',
        tabt='{$_POST['tabt1']}',
        scoret='{$_POST['scoret1']}'
        imod='{$_POST['imod1']}',
        point='{$_POST['point1']}',
        position='{$_POST['position1']}'
    WHERE id='{$_POST['id']}'");
}

Og så vil det være en god ide at tilføje lidt kontrol af input før du smider det til databasen.
Avatar billede reflex Nybegynder
27. december 2003 - 11:00 #8
Hmm jeg er ikke helt med når du siger kontrol af input?
Jeg indsatte den nye kode men den virker heller ikke :( kan jeg ha' lavet noget forkert da jeg oprettede tabellerne, jeg kan jo sagtens opdatere den med phpMyAdmin.

  hold  varchar(30)     
  kampe  int(2)   
  vundet  int(2) 
  uafgjort  int(2) 
  tabt  int(2) 
  scoret  int(3)
  imod  int(3) 
  point  int(2) 
  position  int(1) 
  id  int(2)  primary  auto_increment
Avatar billede Slettet bruger
27. december 2003 - 11:18 #9
Er det stadig samme fejl, du får?
Avatar billede reflex Nybegynder
27. december 2003 - 15:59 #10
Jep samme fejl.
Avatar billede Slettet bruger
27. december 2003 - 16:32 #11
Jeg kan simpelthen ikke få øje på noget... Kunne fejlen måske være i din include-fil?
Avatar billede reflex Nybegynder
27. december 2003 - 17:05 #12
Den connecter jo fint når den skal hente db'en og vise den.
Avatar billede Slettet bruger
27. december 2003 - 17:11 #13
Tjah, men hvis fejlen ikke er i den ene fil må den jo være i den anden, og jeg kan ikke få øje på negle fejl i den kode, du har vist  bortset fra ting, der er blevet rettet.
Avatar billede reflex Nybegynder
27. december 2003 - 18:08 #14
<?php

$connection = mysql_connect("localhost","piranhafc_dk","password");
mysql_select_db("piranhafc_dk", $connection);

?>

Kan der være noget galt her??
Avatar billede Slettet bruger
28. december 2003 - 00:24 #15
Nej, ikke noget, der kunne give den fejl.
Avatar billede reflex Nybegynder
28. december 2003 - 14:24 #16
Er der nogle der har eller kan vise mig et script hvor I ved det kan "update" i en db og det virker??
Avatar billede Slettet bruger
28. december 2003 - 14:44 #17
Du mener bare et eksempel på et script, der kan update en db?

Der er et simpelt et her: http://sandbox.adsl.dk/confirm2.phps

Den modtager en værdi fra denne formular:

<form action='confirm2.php' method='post'>
Please enter your confirmation code:<br>
<input type='text' size='20' maxlength='32' name='confirmcode'><br>
<input type='submit' value='Submit'> <input type='reset' value='Clear'>
</form>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester