2013-01-10 56 views
-1

我有一個填充數據庫數據的表單,然後用戶修改數據或選擇不修改任何內容,然後只需按下提交按鈕即可將UPDATE添加到數據庫中。我的問題是:從表格中檢索數據

  1. 我不知道如何確定哪些領域有數據修改
  2. 如何從表單中的數據,如果該數據已被修改
    我用XAMP與PHP 5.3和HeidiSQL 。這是我的代碼

    LOGIN「);} 其他 { 包括 ( '../ conect.php'); // 增加一個條目,如果它是一個新的領域-BEGIN IF((isset($ _ &&(isset($ _ GET [「nou」]))&&(!empty($ _ POST ['content']))&&(!empty($ _ POST ['nume']))&&(!empty($ _POST ['cale']))&&(!empty($ _ POST ['ordine']))) if($ _POST ['select']!=「」){ $ nume = stripslashes($ _ POST [ ';'); $ cale = $ _ POST ['cale']; $ ordine = $ _ POST ['ordine']; $ id = $ _ POST ['select']; $ content = stripslashes($ _ POST ['content']);
    $result=mysql_query("SELECT * FROM categorii_menu WHERE id=$id"); 
        $data=mysql_fetch_row($result); 
        $grad=$data[2]; 
    
        $result2=mysql_query("SELECT * FROM categorii_menu WHERE grad_categorie=$grad"); 
        while($data=mysql_fetch_row($result2)) 
        { 
         if ($ordine==$data[2]) $ok=1; 
         else $ok=0; 
        } 
        $result3=mysql_query("SELECT * FROM categorii_menu "); 
        while($zata=mysql_fetch_row($result3)) 
        { 
         if($nume==$zata[1]) 
         { 
          echo "Deja se foloseste acest nume"; 
          $z=1; 
          break; 
         } 
         else $z=0; 
         if(($ok==0)&&($z==0)) 
          mysql_query("INSERT INTO categorii_menu(nume,nr_ordine,grad_categorie,cale,continut) VALUES ('$nume','$ordine','$grad','$cale','$content')"); 
         else if (($ok==1)&&($z==0)) 
          echo "Acest nr de ordine este deja luat"; 
        } 
        else{ 
         $nume=stripslashes($_POST['nume']); 
         $cale=$_POST['cale']; 
         $content = stripslashes($_POST['content']); 
         $grad=0; 
         $ok=0; 
         $nr_ordine=$_POST['ordine']; 
         $result=mysql_query("SELECT * FROM categorii_menu WHERE grad_categorie=$grad"); 
         while($data=mysql_fetch_row($result)){ 
          if($data[2]==$nr_ordine) 
          { 
           $ok=1; 
          } 
         } 
         $result3=mysql_query("SELECT * FROM categorii_menu "); 
         while($zata=mysql_fetch_row($result3)){ 
          if($nume==$zata[1]){ 
           echo "Deja se foloseste acest nume"; 
           $z=1; 
           break; 
          } 
          else $z=0; 
         } 
         if(($ok==0)&&($z==0))mysql_query("INSERT INTO categorii_menu(nume,nr_ordine,cale,grad_categorie,continut) VALUES ('$nume','$nr_ordine','$cale','$grad','$content')"); 
         else if(($ok==1)&&($z==0)) 
          echo "Acest nr de ordine este deja luat"; 
         } 
         //adds an entry if it's a new field -end 
         //retrieves the modified data from the populated form (but only if all fields are modified :( , i don't know how to overcome this inconvenience ) - begin 
         else if (($_POST) && (isset($_GET["nou"]))) echo"Nu ati completat toate campurile"; 
         if(($_POST) && (isset($_GET["id"])) && (!empty($_POST['content'])) &&(!empty($_POST['nume'])) && (!empty($_POST['cale'])) && (!empty($_POST['ordine']))) {    
          if($_POST['select']!=""){  
          $id=$_GET["id"]; 
          $nume=$_POST['nume']; 
          $cale=$_POST['cale']; 
          $ordine=$_POST['ordine']; 
                                         $select=$_POST['select']; 
                                         $content = stripslashes($_POST['content']); 
                 $result=mysql_query("SELECT * FROM categorii_menu WHERE id=$select"); 
                 $data=mysql_fetch_row($result); 
                 $grad=$data[2]; 
    
                 $result2=mysql_query("SELECT * FROM categorii_menu WHERE grad_categorie=$grad"); 
                 while($data=mysql_fetch_row($result2)) 
                 { if ($ordine==$data[2]) $ok=1; 
                  else $ok=0; } 
    
                 $result3=mysql_query("SELECT * FROM categorii_menu "); 
                 while($zata=mysql_fetch_row($result3)){ 
                  if($nume==$zata[1]){ 
                   echo "Deja se foloseste acest nume"; 
                   $z=1; 
                   break; 
                  } 
    
                   else $z=0; 
    
                 } 
    
                 if(($ok==0)&&($z==0)){ 
                  $result2 = mysql_query("SELECT * FROM categorii_menu"); 
                  mysql_query("UPDATE categorii_menu SET nume='$nume' , nr_ordine='$ordine' , grad_categorie='$grad', cale='$cale' , continut='$content' WHERE id='$id'"); 
                  header('Location:lista_linkuri.php'); 
                 } 
                 else if(($ok==1)&&($z==0))echo"Acest nr de ordine este deja luat";    
           } 
    
    
    
           else { 
                 $id=$_GET["id"]; 
                 $nume=$_POST['nume']; 
                 $cale=$_POST['cale']; 
                 $ordine=$_POST['ordine']; 
                 $content = stripslashes($_POST['content']); 
                 $grad=0; 
                 $ok=0; 
    
                 $result=mysql_query("SELECT * FROM categorii_menu WHERE grad_categorie=$grad"); 
                 while($data=mysql_fetch_row($result)){ 
                 if($data[2]==$ordine) 
                  { 
                   $ok=1; 
    
                   } 
                  } 
                 $result3=mysql_query("SELECT * FROM categorii_menu "); 
                 while($zata=mysql_fetch_row($result3)){ 
                  if($nume==$zata[1]){ 
                   echo "Deja se foloseste acest nume"; 
                   $z=1; 
                   break; 
                  } 
                   else $z=0; 
                 } 
    
                 if(($ok==0)&&($z==0)){ 
                  mysql_query("UPDATE categorii_menu SET nume='$nume',nr_ordine='$ordine',cale='$cale',grad_categorie='$grad',continut='$continut') WHERE id='$id'"); 
                  header('Location:lista_linkuri.php'); 
                 } 
                  else if(($ok==1)&&($z==0))echo "Acest nr de ordine este deja luat";     
    
    
    
           } 
         } else if((isset($_GET["id"])) &&($_POST)) echo"Nu ati completat toate campurile" ; 
    
         //retrieves the modified data from the populated form (but only if all fields are modified :( , i don't know how to overcome this inconvenience ) - end 
    
    
    
    } 
    
    >

    Editare pagina

    tinyMCE.init({// 常規選項 模式: 「文本域」, 主題: 「高級」, plugins:「spellchecker,preview,searchreplace,paste,fullscreen,template」,
     // Theme options 
        theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect", 
        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,|,undo,redo,preview,|,forecolor,backcolor", 
        theme_advanced_buttons3 : "removeformat,|,sub,sup,|,charmap,|,fullscreen", 
        theme_advanced_buttons4 : "spellchecker,template", 
        theme_advanced_toolbar_location : "top", 
        theme_advanced_toolbar_align : "left", 
        theme_advanced_statusbar_location : "bottom", 
    
    
        // Skin options 
        skin : "o2k7", 
        skin_variant : "silver", 
    
    
    
        // Drop lists for link/image/media/template dialogs 
        template_external_list_url : "js/template_list.js", 
        external_link_list_url : "js/link_list.js", 
        external_image_list_url : "js/image_list.js", 
        media_external_list_url : "js/media_list.js", 
    
        // Replace values for the template plugin 
        template_replace_values : { 
          username : "Some User", 
          staffid : "991234" 
        } 
    
    }); // initializare megamenu ddmegamenu.docinit({ MENUID: 'solidmenu', DUR:200 })

    <div class="butoane_lista_articole"> 
          <a href="lista_linkuri.php">Inapoi la lista</a> 
        </div> 
    
        <div id="pagina_noua_link" class="camp_linkuri2" > 
         <div id="zona-date" class="titlu_pagina_noua"> 
          <form action="<?php $_PHP_SELF ?>" method="post"> 
          <span class="span_edit">Meniuri</span> 
           <select name="select"> 
    
             <option value="">Pagina Principala Noua</option> 
              <?php 
    
                $result=mysql_query("SELECT * FROM categorii_menu WHERE grad_categorie=0"); 
                while($data=mysql_fetch_assoc($result)){ ?> 
                <option value="<?php echo $data['id']; ?>" <?php if($data['id']!="") {echo "selected"; ?> > <?php echo $data['nume'];}?></option> 
             <?php  } 
    
                ?> 
    
           </select> 
    
         </div> 
              <?php 
              if(isset($_GET["id"])){ 
                $id=$_GET["id"]; 
                $result=mysql_query("SELECT * FROM categorii_menu WHERE id=$id;"); 
                $data=mysql_fetch_row($result); 
                echo '<label for="nume">Nume</label><input type="text" value="'.$data[1].'"name="nume" class="input_text"/>'; 
                echo '<label for="cale">Cale</label><input type="text" value="'.$data[4].'"name="cale" class="input_text"/>'; 
                echo '<label for="ordine">Nr ordine</label><input type="text" value="'.$data[2].'"name="ordine" class="input_text"/>'; 
               } 
                else {?> 
    
                  <label for="nume">Nume</label><input type="text" name="nume" class="input_text" /> 
                  <label for="cale">Cale</label><input type="text" name="cale" class="input_text"/> 
                  <label for="ordine">Nr ordine</label><input type="text" name="ordine" class="input_text"/> 
                <?php }?>    
        </div> 
    
            <div id="articol_link"> 
    
              <textarea name="content" style="width :100%; height:300px;"> 
               <?php 
               if(isset($_GET["id"])){ 
               $id=$_GET["id"]; 
               $v2 = mysql_query("SELECT * FROM categorii_menu WHERE id=$id "); 
               $id2 = mysql_fetch_row($v2); 
               echo $id2[6]; 
               } 
               ?> 
              </textarea> 
            </div>      
    
              <input type="submit" name="submit" value="<?php if(isset($_GET["id"])) echo "Salvare Modficari "; else echo "Adauga pagina";?> " class="button2"/> 
          </form> 
    

+0

爲什麼你只覆蓋已更改的領域? 這是有點難以遵循你的代碼,但更一般的你可以使用「更新表...」與所有的領域。表單中沒有更改的字段將被更新爲與之前相同。 如果我誤解了問題..如果是這樣,mysql表格的描述將會有所幫助。 – EirikO

+1

請簡化您的代碼或去直接問題/問題 – ianace

回答

2

您可以更新表單中數據庫中的所有字段。所有字段將用當前值更新。

您可以檢索由$ _ POST數據[「字段名」]你已經做了插入

+0

謝謝你,你說得對,解決方案非常明顯。當我寫代碼的時候,我覺得我很累,所以我不能直接接受 – Johny

+0

。如果它能幫助你,就接受答案 –

0

試試這個方法: -

if(isset($_POST['submit_button_name'])) 
{ 
    $dbDataArray= /* get stored data from database in associative array format like  
    [ 'column_name1']=>['column_value1']*/ 
    //Now map the field name to column name accordingly 
    if($_POST['field_name1'] != $dbDataArray['column_name1']) 
    { 
     $updateArray['column_name1']=$_POST['field_name1'] 
     //put in this array to use it later to update 
    } 
} 

//Now, fire update query to update all values in $updateArray.