Avatar billede michaeltryl Seniormester
20. september 2006 - 17:11 Der er 18 kommentarer og
1 løsning

problem med at update mysql tabel

jeg har denne kode

<?
$bruger = $_SESSION['Brugernavn'];
$get = mysql_query("SELECT * FROM brugere WHERE Brugernavn = '$bruger' LIMIT 1") or die(mysql_error()); // henter Brugernavn som er 1?
$show = mysql_fetch_array($get);
$til = $show[Brugernavn];
$id = $show[Id];

echo "<h3>";
$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
$spgid = $a['spgid'];
while ($a = mysql_fetch_assoc($spg))
{
    echo $a['spg'];
    echo "<br>";
    echo"  ";
    echo "<form name='svar' method='POST' ACTION=''>";
    echo"<textarea name='svar' rows='4' cols='30'>";
    echo $a['svar'];
    echo"</textarea><br>";
    echo"<input class='inputknap' type='submit' value='Send svar'>";
    echo"";
    echo "<br><br>";
    echo "</form>";

$svar = $_REQUEST["$svar"];

  if(!empty($spgid))
{
mysql_query("UPDATE spg SET svar = $svar WHERE spgid='$spgid'") or die(mysql_error());
}

}
  echo "</h3><br>";
 
 

 
 
?>

men den vil ikke opdatere tabellen.
ideen er at der bliver listet nogen spørgsmål og under hvert spørgsmål er der en teksboks hvor man kan skrive spørgsmålet i og trykke på sen hvorefter tabellen bliver opdateret.
feltet svar skal have det nye svar indsat istedet for det gamle svar og svarey skal passe sammen med spgid
er der en som har et bud på hvor fejlen er?
Avatar billede coderdk Praktikant
20. september 2006 - 17:23 #1
1) Hvor kommer $spgid = $a['spgid']; fra?
2) "SET svar = $svar" skal nok være: "SET svar = '$svar'" husk evt. mysql_escape_string
Avatar billede michaeltryl Seniormester
20. september 2006 - 17:59 #2
jeg havde byttet rundt på 2 linier
$spgid = $a['spgid']; skal komme fra den forspørgsle jeg laver i tabellen da jeg skal bruge det id som er til spørgsmålet vil jeg hente det ud i en variabel.

men gør jeg sådan her virker det heller ikke
$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($a = mysql_fetch_assoc($spg))
$spgid = $a['spgid'];
Avatar billede coderdk Praktikant
20. september 2006 - 18:22 #3
Du får ingen fejl?
Avatar billede michaeltryl Seniormester
20. september 2006 - 18:49 #4
nej det gør jeg ikke men med
$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($a = mysql_fetch_assoc($spg))
$spgid = $a['spgid'];

udskriver den kun en tekstboks, men ingen spørgsmål
Avatar billede michaeltryl Seniormester
20. september 2006 - 19:01 #5
jeg tror jeg har lavet den fejl ikke at uploade
for med denne kode
$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($a = mysql_fetch_assoc($spg))
$spgid = $a['spgid'];

får jeg denne fejl
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 ''7' at line 1

men sletter jeg
$spgid = $a['spgid'];

kommer der ingen fejl
Avatar billede zynzz Praktikant
20. september 2006 - 19:05 #6
if(isset($_POST['svar']))
{
mysql_query("UPDATE spg SET svar = $svar WHERE spgid='$spgid'") or die(mysql_error());
}
Avatar billede zynzz Praktikant
20. september 2006 - 19:10 #7
ORDER BY spgid DESC, men henter du ikke kun 1 fra databasen ?
Avatar billede michaeltryl Seniormester
20. september 2006 - 19:12 #8
der er stadig et problem med $spgid = $a['spgid'];
Avatar billede michaeltryl Seniormester
20. september 2006 - 19:13 #9
jo jeg henter kun fra 1 databse
Avatar billede zynzz Praktikant
20. september 2006 - 19:20 #10
Så behøver du jo ikke sortere ?, WHERE til ='$til' LIMIT 1
Avatar billede michaeltryl Seniormester
20. september 2006 - 19:22 #11
jo for jeg skal kun bruge de spørgsmål som er til den bruger der er logget ind
Avatar billede michaeltryl Seniormester
20. september 2006 - 19:36 #12
jeg havde misforstået, men jeg skal stadig sortere da jeg vil have nye spørgsmål til at stå øverst, men hvordan får jeg lavet den variabel spgid
Avatar billede zynzz Praktikant
20. september 2006 - 21:24 #13
$spgid = $a[spgid];

burde virke...
Avatar billede michaeltryl Seniormester
20. september 2006 - 21:32 #14
ja men nu har jeg prøvet bare med denne kode, men den udskriver ingenting og jeg vil mene det er rigtigt

$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($b = mysql_fetch_assoc($spg))
$spgid = $a[spgid];
{
    echo $spgid;
}
Avatar billede coderdk Praktikant
20. september 2006 - 21:57 #15
Nej, hvis det skal være korrekt skal det være:

$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($a = mysql_fetch_assoc($spg))
{
  $spgid = $a['spgid'];
  echo $spgid;
}

Prøv også:

while ($a = mysql_fetch_assoc($spg))
{
  $spgid = $a['spgid'];
  echo $spgid;
  echo 'spgid findes ' . ( array_key_exists( 'spgid', $a ) ? '' : 'ikke' );
}
Avatar billede michaeltryl Seniormester
20. september 2006 - 22:21 #16
jep nu henter den id'et fint ud men opdatere ikke

$spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
while ($a = mysql_fetch_assoc($spg))
{
    $spgid = $a['spgid'];
    $svar = $a['svar'];
   
    echo $a['spg'];
    echo "<br>";
    echo "<form name='svar' method='POST' ACTION=''>";
    echo"<textarea name='$spgid' rows='4' cols='30'>";
    echo $svar;
    echo"</textarea><br>";
    echo"<input class='inputknap' type='submit' value='Send svar'>";
    echo"";
    echo "<br><br>";
    echo "</form>";
}

$nysvar = $_REQUEST["$spgid"];
if(!empty($svar))
{
mysql_query("UPDATE spg SET svar = $nysvar WHERE spgid='".$a['spgid']."'") or die(mysql_error());
}

Det der skal ske er at der på siden bliver listet X antal formulare som hver skal opdatere et bestemt svar (svaret til det spørgsmål som er listet over formularen)
jeg kan ikke lige regne ud om det er den bedste måde jeg gør det på her
Avatar billede coderdk Praktikant
20. september 2006 - 23:45 #17
Hvor kommer $til fra?

Prøv med:

    if( !empty( $_POST['svar'] ) )
    {
        $svar = mysql_escape_string( $_POST['svar'] );
        mysql_query("UPDATE spg SET svar = '$_POST[svar]' WHERE spgid='$_POST[spgid]'") or die(mysql_error());
    }
   
    $spg = mysql_query("SELECT * FROM spg WHERE til ='$til' ORDER BY `spgid` DESC");
    while ($a = mysql_fetch_assoc($spg))
    {
        $spgid = $a['spgid'];
        $svar = $a['svar'];
     
        echo $a['spg'];
        echo "<br>";
        echo "<form method='POST' ACTION='$_SERVER[PHP_SELF]'>";
        echo "<input type='hidden' name='spgid' value='$spgid'>";
        echo "<textarea name='svar' rows='4' cols='30'>";
        echo $svar;
        echo "</textarea><br>";
        echo "<input class='inputknap' type='submit' value='Send svar'>";
        echo "<br><br>";
        echo "</form>";
    }
Avatar billede michaeltryl Seniormester
21. september 2006 - 09:31 #18
yes lige præcis smid et svar og tak for hjælpen
Avatar billede coderdk Praktikant
21. september 2006 - 10:14 #19
Så gerne! :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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