2013-01-10 4 views
-1

J'ai un formulaire qui remplit avec les données de la base de données, puis l'utilisateur modifie les données ou choisit de ne rien modifier, puis appuie simplement sur le bouton soumettre pour créer un UPDATE dans la base de données.Mon problème:récupérer des données à partir du formulaire

  1. je ne sais pas comment déterminer quels domaines ont eu les données modifiées
  2. comment récupérer les données du formulaire si les données ont été modifiées
    J'utilise XAMP avec PHP 5.3 et HeidiSQL . Ceci est mon code

    LOGIN ");} autre { include ('../ conect.php'); // ajoute une entrée si elle est un nouveau champ -Début if ((isset ($ _POST)) && (isset ($ _ GET ["nou"])) && (! Vide ($ _ POST ['content'])) && (! Vide ($ _ POST ['nume'])) && (! Vide ($ _POST ['cale'])) && (! Vide ($ _ POST ['ordine']))) { if ($ _POST ['select']! = "") { $ nume = stripslashes ($ _ POST [ 'nume']); $ 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 ({// Options générales Mode : "textarea", thème : "avancé", plugins: "spellchecker, prévisualisation, 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

Pourquoi voudriez-vous remplacer tout simplement les champs qui sont modifiés? Il est un peu difficile de suivre votre code, mais plus général vous pouvez utiliser "UPDATE table ..." avec tous vos champs. Les champs qui ne sont pas modifiés dans le formulaire seront mis à jour comme avant .. Si j'ai mal compris la question .. Si oui, une description des tables mysql serait utile .. – EirikO

+1

s'il vous plaît simplifier votre code ou aller directement au point/problème – ianace

Répondre

2

Vous pouvez mettre à jour tous les champs de la base de données qui sont dans le formulaire. Tous les champs seront mis à jour avec les valeurs actuelles.

Vous pouvez récupérer les données de $ _POST [ « fieldname »] que vous avez déjà insérer

+0

merci, vous aviez raison la solution était si évidente. Je pense que j'étais si fatigué quand j'ai écrit le code que je ne pouvais pas penser directement – Johny

+0

bienvenue. Si cela vous aide, acceptez simplement la réponse –

0

essayer cette approche: -

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. 
Questions connexes