Avatar billede vholt Nybegynder
18. juni 2007 - 16:35 Der er 23 kommentarer

problem med UPDATE

Jeg vil lave en funktion på min hjemmeside der lader mig opdatere min databases indhold. Jeg troede sådan set at jeg var færdig men en irriterende SQL sætning spænder endnu engang ben for mig. Der kommer ingen fejl, ændringen bliver blot ikke gennemført. Det ser sådan ud:

echo"<TABLE class='desc'><TR><TD>
<form method='post' action='details_edit.php'>
<textarea cols='25' rows='1'>  ".$row['Producent']." </textarea>
<textarea cols='25' rows='1'>  ".$row['Model']." </textarea>
<textarea cols='65' rows='25'> ".$row['Beskrivelse']." </textarea>
<textarea cols='65' rows='5'>  ".$row['Files']." </textarea>
<textarea cols='65' rows='5'>  ".$row['Pics']." </textarea>
<input type='submit' value='Save'>   
</form>";
       
$id = $row['id'];
mysql_query('UPDATE load SET Producent = "'.$_POST['set_prod'].'", Model = "'.$_POST['set_model'].'", Beskrivelse = "'.$_POST['set_desc'].'" WHERE ID = "'.$id.'"');
Avatar billede vholt Nybegynder
18. juni 2007 - 16:36 #1
Tekstfelterne har selvfølgelig name.
Avatar billede michael_stim Ekspert
18. juni 2007 - 16:45 #2
Er du sikker på du får $row['id'] med ud?
Pröv at echoe din sql istedet for at eksekvere den.

$SQL_String="UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', Beskrivelse = '".$_POST['set_desc']."' WHERE ID = '".$id."'";
$id = $row['id'];
//mysql_query($SQL_String);
echo $SQL_String;

Har byttet lidt rundt på dine plinger.
Avatar billede vholt Nybegynder
18. juni 2007 - 16:50 #3
Den viser ikke noget..
Avatar billede michael_stim Ekspert
18. juni 2007 - 16:52 #4
Så må det väre et andet sted den fejler. For lige meget hvad skal den udskrive noget.
Avatar billede michael_stim Ekspert
18. juni 2007 - 16:53 #5
Og du skal selvf. deklarere din $id variabel för sql'en. Miss fra min side.
Avatar billede michael_stim Ekspert
20. juni 2007 - 09:15 #6
Kom du videre?
Avatar billede vholt Nybegynder
21. juni 2007 - 11:46 #7
Nej, jeg sidder lidt fast. Kan ikke rigtig finde en løsning på problemet. Jeg har en ide om at min SQl UPDATE aldrig bliver afviklet fordi jeg bliver sendt videre til details_edit.php inden den når dertil. Prøver at ændre action til at pege på sig selv.
Avatar billede michael_stim Ekspert
21. juni 2007 - 11:50 #8
Men du har vel PHP koden i details_edit.php? Ellers er det klart det ikke fungerer.
Avatar billede vholt Nybegynder
21. juni 2007 - 11:52 #9
Det stykke kode jeg har vist står i details_edit.php ja. Men jeg redirecter jo til en anden side inden den når til mit SQL?
Avatar billede vholt Nybegynder
21. juni 2007 - 11:53 #10
Eller nej det gør jeg egentlig ikke. Hmm så er jeg lost igen :(
Avatar billede michael_stim Ekspert
21. juni 2007 - 11:55 #11
Ja, så er det klart det ikke fungerer. PHP läser koden oppe fra og ned. Og har du en redirect för din SQL, siger det sig selv at den ikke bliver eksekveret når du submitter ;o)
Avatar billede michael_stim Ekspert
21. juni 2007 - 11:55 #12
Vis os hele details_edit.php.
Avatar billede vholt Nybegynder
21. juni 2007 - 11:57 #13
<?php
session_start();
//TJEK SESSION == START//
    if ($_SESSION['login']==""){
    print '<meta http-equiv="refresh" content="0;url=index.php">';
    exit;
    }
//TJEK SESSION == SLUT//    ?>

    <link rel="stylesheet" type="text/css" href="loadstyle.css">
        <title>lockandload.dk</title>
   

<!-- INCLUDE bstyle.php -->
  <? include("bstyle.php"); ?>
    <br><br><br>

    <TABLE height="600" border=0 align="center"><TR>

    <TD width="20%" border="0" valign="top" align="right">

<!-- INCLUDE menu.php -->
  <? include("menu.php"); ?></TD>
   
        <TD valign="top" align="center">

        <TABLE width="600" align="center" class="dot_admin"><TR>
       
    <?php
        echo'  <TD align="center">
        <TABLE class="desc_admin"><TR><TD>ADMINISTRATOR</TD></TR></TABLE><br>
       
        <form action="admin_index.php" method="post">
          <input type="text" class="searchbox" name="sbox">
            <input type="image" src="/pics/search.png" value=" Search " title="E.g. Smg, Rifle, Sniper, Pistol, Revolver "> <br>
            <input type="checkbox" name="adsearch">Search Specifications
          </form>';
 
  //'.$row['Producent'].'<br>'.$row['Model'].'<br />


if(isset($_GET['id'])) {

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

  mysql_connect(localhost,$username,$password);
    mysql_select_db($database) or die("Unable to select database.".mysql_error());

    $escaped_sbox = mysql_real_escape_string($_GET['id']);
      $query = "SELECT * FROM `load` WHERE id = ". $escaped_sbox . "";
            if(isset($_POST['adsearch'])){
                $query = "SELECT * FROM `load` WHERE Beskrivelse LIKE '%" . $escaped_sbox . "%'";
                }
    $result = mysql_query($query);           
     
      $q = mysql_query($query);
      while ($row = mysql_fetch_assoc($q)) {
   
          echo"<TABLE class='desc_admin'><TR><TD><br><a href='admin_index.php'><- Back</a><br>
        <br><form method='post' action=''>
        <textarea cols='25' rows='2' name='set_prod' class='searchbox'>  ".$row['Producent']." </textarea>
        <textarea cols='25' rows='2' name='set_model' class='searchbox'> ".$row['Model']." </textarea>
        <textarea cols='65' rows='25' name='set_desc' class='searchbox'> ".$row['Beskrivelse']." </textarea>
        <textarea cols='65' rows='5' name='set_files' class='searchbox'> ".$row['Files']." </textarea>
        <textarea cols='65' rows='5' name='set_pics' class='searchbox'>  ".$row['Pics']." </textarea><br><br>
        <a href='admin_index.php'><- Back</a>  <input type='submit' value='Save' name='update'>   
        </form>";
        }
       
}

        if(isset($_POST['update'])){
        $id = $_GET['id'];   
        $edit = mysql_query("UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', 
        Beskrivelse = '".$_POST['set_desc']."', Files = '".$_POST['set_files']."', Pics = '".$_POST['set_pics']."' WHERE ID = ".$id." ");
       
  }
 


echo "</TD></TR></TABLE>";
    echo "</TD></TR></TABLE>";
?>           
       
<!-- == LOGOUT == START == -->
     
      <TD width="20%" align=left valign=top>
       
        <TABLE><TR><TD>
       
          <form action="index.php" method="get">
            <input type="image" src="/pics/logout.png" align="right" name="logout">
          </form>
        </TD></TR></TABLE><br>   

      <?php  if(isset($_POST['logout'])){
              session_start();
              session_destroy();
              header('Location: index.php');  }?>
     
<!-- == LOGOUT == SLUT == -->


        </TD></TR></TABLE>
       
        <br>
       
 

    </TD></TR></TABLE>

    <br><br>

  <? include("bstyle_bottom.php"); ?>
Avatar billede michael_stim Ekspert
21. juni 2007 - 12:07 #14
Se om du får alle variabler med i denne:

<?php
session_start();
if(isset($_POST['update'])){
        $id = $_GET['id'];   
        $edit = "UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', 
        Beskrivelse = '".$_POST['set_desc']."', Files = '".$_POST['set_files']."', Pics = '".$_POST['set_pics']."' WHERE ID = ".$id."";
    echo "SQL-STRING: ". $edit;
    //mysql_query($edit) or die(mysql_error());
       
  }
//TJEK SESSION == START//
    if ($_SESSION['login']==""){
    print '<meta http-equiv="refresh" content="0;url=index.php">';
    exit;
    }
//TJEK SESSION == SLUT//    ?>

    <link rel="stylesheet" type="text/css" href="loadstyle.css">
        <title>lockandload.dk</title>
   

<!-- INCLUDE bstyle.php -->
  <? include("bstyle.php"); ?>
    <br><br><br>

    <TABLE height="600" border=0 align="center"><TR>

    <TD width="20%" border="0" valign="top" align="right">

<!-- INCLUDE menu.php -->
  <? include("menu.php"); ?></TD>
   
        <TD valign="top" align="center">

        <TABLE width="600" align="center" class="dot_admin"><TR>
       
    <?php
        echo'  <TD align="center">
        <TABLE class="desc_admin"><TR><TD>ADMINISTRATOR</TD></TR></TABLE><br>
       
        <form action="admin_index.php" method="post">
          <input type="text" class="searchbox" name="sbox">
            <input type="image" src="/pics/search.png" value=" Search " title="E.g. Smg, Rifle, Sniper, Pistol, Revolver "> <br>
            <input type="checkbox" name="adsearch">Search Specifications
          </form>';
 
  //'.$row['Producent'].'<br>'.$row['Model'].'<br />


if(isset($_GET['id'])) {

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

  mysql_connect(localhost,$username,$password);
    mysql_select_db($database) or die("Unable to select database.".mysql_error());

    $escaped_sbox = mysql_real_escape_string($_GET['id']);
      $query = "SELECT * FROM `load` WHERE id = ". $escaped_sbox . "";
            if(isset($_POST['adsearch'])){
                $query = "SELECT * FROM `load` WHERE Beskrivelse LIKE '%" . $escaped_sbox . "%'";
                }
    $result = mysql_query($query);           
     
      $q = mysql_query($query);
      while ($row = mysql_fetch_assoc($q)) {
   
          echo"<TABLE class='desc_admin'><TR><TD><br><a href='admin_index.php'><- Back</a><br>
        <br><form method='post' action=''>
        <textarea cols='25' rows='2' name='set_prod' class='searchbox'>  ".$row['Producent']." </textarea>
        <textarea cols='25' rows='2' name='set_model' class='searchbox'> ".$row['Model']." </textarea>
        <textarea cols='65' rows='25' name='set_desc' class='searchbox'> ".$row['Beskrivelse']." </textarea>
        <textarea cols='65' rows='5' name='set_files' class='searchbox'> ".$row['Files']." </textarea>
        <textarea cols='65' rows='5' name='set_pics' class='searchbox'>  ".$row['Pics']." </textarea><br><br>
        <a href='admin_index.php'><- Back</a>  <input type='submit' value='Save' name='update'>   
        </form>";
        }
       
}

echo "</TD></TR></TABLE>";
echo "</TD></TR></TABLE>";
?>           
       
<!-- == LOGOUT == START == -->
     
      <TD width="20%" align=left valign=top>
       
        <TABLE><TR><TD>
       
          <form action="index.php" method="get">
            <input type="image" src="/pics/logout.png" align="right" name="logout">
          </form>
        </TD></TR></TABLE><br>   

      <?php  if(isset($_POST['logout'])){
              session_start();
              session_destroy();
              header('Location: index.php');  }?>
     
<!-- == LOGOUT == SLUT == -->


        </TD></TR></TABLE>
       
        <br>
       
 

    </TD></TR></TABLE>

    <br><br>

  <? include("bstyle_bottom.php"); ?>
Avatar billede vholt Nybegynder
21. juni 2007 - 12:12 #15
Der kommer en masse output:

SQL-STRING: UPDATE load SET Producent = ' Heckler & Koch ', Model = '(TEST) AG36 ', Beskrivelse = '

og WHERE ID = 15 får den også med
Avatar billede michael_stim Ekspert
21. juni 2007 - 12:14 #16
OK, så fjern afkommenteringen og afkommenter min echo.
Avatar billede michael_stim Ekspert
21. juni 2007 - 12:15 #17
Ved ikke om load er et reserveret ord. Men ellers kan du bruge:
`load`
Men det ser vi når du körer sql'en.
Avatar billede vholt Nybegynder
21. juni 2007 - 12:20 #18
Tror jeg lige skal lave mysql_connect osv. før den update
Avatar billede michael_stim Ekspert
21. juni 2007 - 12:21 #19
Ja, det er nok en god ide ;o)
Avatar billede vholt Nybegynder
21. juni 2007 - 12:22 #20
Hold da op, det virker! ....
Avatar billede michael_stim Ekspert
21. juni 2007 - 12:23 #21
Det er altid en god ide at samle alle actions längst oppe (connect, if(isset... osv, osv). Ser du har flere af dem.
Avatar billede vholt Nybegynder
21. juni 2007 - 12:27 #22
Fortryder lidt jeg kategoriserede dette problemt som "let", har godt nok siddet med det et par dage. Tak for hjælpen.
Avatar billede michael_stim Ekspert
21. juni 2007 - 13:30 #23
Du lägger bare et svar og accepterer selv. Samler ikke på point ;o)
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