Avatar billede djalex Praktikant
20. september 2006 - 19:22 Der er 3 kommentarer og
1 løsning

Update SQL inde i en åben database løkke

Jeg har en fil der bl.a. indeholder:

<?
$con = mysql_connect("DBHOST","BRUGERNAVN","KODEORD");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("DBNAVN", $con);
$id = $_POST['bordnr'];
$dbstr = "SELECT * FROM lan_bordres Where bordnr =$id"; 
$qresultat = mysql_query($dbstr);

while($resultat = mysql_fetch_array($qresultat))
  {
  if (($resultat['navn'] == '') || ($resultat['nick'] == ''))
  //tjek om der står et navn eller nick i forvejen i databasen
    {
    $dbnick = $_POST['nick'];
    $dbbordnr = $_POST['bordnr'];
    $dbnavn = $_POST['navn'];
    $dbclan = $_POST['clan'];
    $dbmisc = $_POST['div'];
    $dbq = "\"UPDATE lan_bordres SET nick=\"" .$dbnick. "\", navn=\"" .$dbnavn. "\", clan=\"" .$dbclan. "\", misc=\"" .$dbmisc. " WHERE bordnr=\"" .$dbbordnr. "\"";
    echo $dbq;
        //Skriv sql strengen til skærmen - midlertidig
    mysql_query($dbq);
    echo "<table border=\"0\" width=\"150\" align=\"center\" class=\"bord\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"100%\"><h5>Tak for din tilmelding</h5>Du kan nu lukke dette vindue<a href=\"java script:window.close()\"> - Luk Vinduet!</a></td></tr></table>";
    }
  else
      {
    echo "<table border=\"0\" width=\"150\" align=\"center\" class=\"bord\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"100%\">Du har forsøgt at tage en plads der er optaget. Luk venligst dette vindue og prøv igen!</td></tr></table>";
    }
  }
mysql_close($con);
?>


Håber at i kan forstå nogenlunde hvad det er filen laver. Jeg vil gerne om den opdaterede min tabel med de indtastede værdier fra en form, den skriver værdierne fint nok, men den opdaterer dem ikke... Nogen der har en ide om hvorfor og hvordan man løser det? Kan det være fordi min "mysql_query($dbq);" ligger inde i min while løkke der åbner den selvsamme tabel ? I givet fald hvordan løser jeg problemet ?

mvh
Alex
Avatar billede articfruit Nybegynder
20. september 2006 - 19:53 #1
<?
$con = mysql_connect("DBHOST","BRUGERNAVN","KODEORD");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("DBNAVN", $con);
$id = $_POST['bordnr'];
$dbstr = "SELECT * FROM lan_bordres Where bordnr =$id"; 
$qresultat = mysql_query($dbstr);

while($resultat = mysql_fetch_array($qresultat))
  {
  if (($resultat['navn'] == '') || ($resultat['nick'] == ''))
  //tjek om der står et navn eller nick i forvejen i databasen
    {
    $dbnick = $_POST['nick'];
    $dbbordnr = $_POST['bordnr'];
    $dbnavn = $_POST['navn'];
    $dbclan = $_POST['clan'];
    $dbmisc = $_POST['div'];
    $dbq = "UPDATE lan_bordres SET nick='$dbnick', navn='$dbnavn', clan='$dbclan', misc='$dbmisc' WHERE bordnr=$dbbordnr";
    echo $dbq;
        //Skriv sql strengen til skærmen - midlertidig
    mysql_query($dbq);
    echo "<table border='0' width='150' align='center' class='bord' cellpadding='0' cellspacing='0'><tr><td width='100%'><h5>Tak for din tilmelding</h5>Du kan nu lukke dette vindue<a href='java script:window.close()'> - Luk Vinduet!</a></td></tr></table>";
    }
  else
      {
    echo "<table border='0' width='150' align='center' class='bord' cellpadding='0' cellspacing='0'><tr><td width='100%'>Du har forsøgt at tage en plads der er optaget. Luk venligst dette vindue og prøv igen!</td></tr></table>";
    }
  }
mysql_close($con);
?>
Avatar billede djalex Praktikant
20. september 2006 - 19:59 #2
Så virker det (bøvlede mig selv til det) og tak for hjælpen via msn ;)

Smid et svar, så får du point...
Avatar billede articfruit Nybegynder
20. september 2006 - 20:01 #3
svar... den kode jeg pastede, skulle gerne være lidt lettere at læse ;)
Avatar billede djalex Praktikant
20. september 2006 - 20:01 #4
ja jeg har lige gjort det samme med en search & replace på min egen kode...
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