Probleem in script

  • Onderwerp starter Onderwerp starter jvuz
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jvuz

Gebruiker
Lid geworden
9 mrt 2007
Berichten
42
Hallo in volgend script:
PHP:
<?php
ob_start();
?>
<?php
// include/require hier evt nog andere zaken
require ("../scripts/connect.php");
// we willen op deze pagina gebruik maken van beveiliging mbv sessies,
// dus includen (requiren) we session.php
require("../scripts/session.php");
$id = htmlentities($_GET["id"], ENT_QUOTES);
   // Fetch the article category
   $rsc = mysql_query("SELECT category FROM articles WHERE id=".$_GET['id']) or die(mysql_error());
   $row = mysql_fetch_array($rsc);
      $cat = $row['category'];

  if (($cat == 2) && ((int)$_SESSION['slevel'] < 2)) {
      header("Location:accessdenied.php");
      exit(); //stop the script.
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>KB RBINS</title>
<link rel="stylesheet" type="text/css" href="../main.css" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
</head>
<body>
   <!-- Begin Wrapper -->
   <div id="wrapper">
         <!-- Begin Header -->
         <div id="header">
                  <h1>Knowledgebase System RBINS</h1>      
             </div>
             <!-- End Header -->
         <!-- Begin Faux Columns -->
             <div id="faux">            
                   <!-- Begin Left Column -->
                   <div id="leftcolumn">      
                     <?php
                            include("../scripts/checkuser.php");
                     ?>      
                   </div>
                   <!-- End Left Column -->
                   <!-- Begin Right Column -->
                   <div id="rightcolumn">      
                     <center><h2>Change an article</h2></center><br />  
					 <?php
						if( isset($_GET['id']) && is_numeric($_GET['id']))
						{
 						  $res = mysql_query("SELECT title, article, category, author FROM articles WHERE id = " .$_GET['id']) or die('QUERY_SELECT ERROR: <hr />' . mysql_error());
  						 $results = mysql_fetch_assoc($res); 
  					 	if($_SERVER['REQUEST_METHOD'] == 'POST')
  						 {
  						    if (strlen(trim($_POST['title']) < 2) && strlen(trim($_POST['article']) < 2))
  						    {
  						       $error = "One or both fields are empty. This is not allowed. Please fill something in.";
  						    }    
  						    if (empty($error))
    						  {
    						     //error is niet leeg dus query uitvoeren
   						      $update = mysql_query("UPDATE articles SET title     = '" . mysql_real_escape_string($_POST['title']). "', article = '". mysql_real_escape_string($_POST['article']) . "' WHERE id = "  . $_GET['id']) or die('QUERY_UPDATE ERROR: <hr />'. mysql_error());
      						   echo "Changes have been made!";
    						  }
    						  else
   						   {
   						      //error is niet leeg dus error weergeven
   						      echo $error;
   						   }
  						 }
						}
						// form without PHP
						?>
						<!-- HIER FORMULIER -->
						<form method="post" action="" style="margin-left:1px;">
						<table>
						   <tr>
						      <td>
						         <input type="hidden" name="berichtID" value="<?php echo $results['id']; ?>" />
 						     </td>
						   </tr>
						   <tr>
						      <td valign="top">
						         Title
						      </td>
  						    <td>
  						       <input type="text" name="title" value="<?php echo $results['title']; ?>"style="width:535px;" />
   						   </td>
   						</tr>
  						 <tr>
   						   <td valign="top">
   						      Article:
  						    </td>
  						    <td>
  						       <textarea id="article"  name="article" rows="10" style="width:535px;"><?php echo $results['article']; ?></textarea>
   						   </td>
  						 </tr>
  						 <tr>
  						    <td></td>
  						    <td>
  						       <input type="submit" value="Change" />
  						    </td>
  						 </tr>
						</table>
						</form>     
                  <br />
                     <div class="clear"></div>                    
                   </div>
                   <!-- End Right Column -->                    
                     <div class="clear"></div>                    
         </div>        
         <!-- End Faux Columns -->
         <!-- Begin Footer -->
         <div id="footer">                  
               <h4>Jo Vanattenhoven&copy;2007</h4>            
         </div>
             <!-- End Footer -->            
   </div>
   <!-- End Wrapper -->
</body>
</html>
<?php
ob_end_flush();
?>

heb ik het volgende probleem. Er wordt data uit de db gehaald en in textboxes geplaatst. Dan zou ik de data moeten kunnen aanpassen, maar zelfs als ik iets aanpas, krijg ik een boodschap (die ik gedefinieerd heb in het script), zeggende dat ik een of beide velden niet ingevuld heb.

Een ander probleem is als ik het script probeer te valideren (HTML validatie). Daar krijg ik een fout op lijn
PHP:
<input type="hidden" name="berichtID" value="<?php echo $results['id']; ?>" />
. De foutboodschap is:error: missing quote mark for attribute value.

Kan iemand me helpen?
 
Wat was de oplossing dan?
 
PHP:
<?php
                                                if($id)
                                                {
                                             $sql2 = "SELECT title, article, category, author FROM articles WHERE id = " .$id;
                                                  //echo $sql2;
                                                  $res = mysql_query($sql2) or die('QUERY_SELECT ERROR: <hr />' . mysql_error());
                                       $results = mysql_fetch_assoc($res);
                                     // if($_SERVER['REQUEST_METHOD'] == 'POST')
                                        if (isset($_POST['test']))
                                       {
                                          //echo "title str len:".strlen(trim($_POST['title']));
										  //echo "article str len:".strlen(trim($_POST['article']));
                                          if ((strlen(trim($_POST['title'])) < 2) || (strlen(trim($_POST['article'])) < 2))
                                          {
                                             $error = "One or both fields are empty. This is not allowed. Please fill something in.";
                                          }    
                                          if (empty($error))
                              {
                                 //error is niet leeg dus query uitvoeren
                                                                $sql3 = 'UPDATE articles SET title ="'. mysql_real_escape_string($_POST['title']).'" , article = "'. mysql_real_escape_string($_POST['article']).'"  WHERE id = '. $id;
                                                                //echo $sql3;
                                       $update = mysql_query($sql3) or die('QUERY_UPDATE ERROR: <hr />'. mysql_error());
                              echo "Changes have been made!";
                              }
                              else
                                    {
                                       //error is niet leeg dus error weergeven
                                       echo $error;
                                    }
                                       }
                                               
                                                // form without PHP
                                                ?>
<!-- HIER FORMULIER -->
                                                <form method="post" action="http://localhost/eindwerk2/pages/changingarticle.php?id=<?=$id?> " style="margin-left:1px;">
                                                <table>
                                                   <tr>
                                                      <td>
                                                         <input type="hidden" name="id" value="<?php echo $id; ?> " />
                                                </td>
                                                   </tr>
                                                   <tr>
                                                      <td valign="top">
                                                         Title
                                                      </td>
                                          <td>
                                             <input type="text" name="title" value="<?php echo $results['title']; ?>"style="width:535px;" />
                                    </td>
                                 </tr>
                                       <tr>
                                    <td valign="top">
                                       Article:
                                          </td>
                                          <td>
                                             <textarea id="article"  name="article" rows="20" style="width:535px;"><?php echo $results['article']; ?></textarea>
                                    </td>
                                       </tr>
                                       <tr>
                                          <td></td>
                                          <td>
 <input type="hidden" name="test" value="posted" />
                                             <input type="submit" value="Change" />
                                          </td>
                                       </tr>
                                                </table>
                                                </form>     
                  <?php
                  }
                ?>

Op deze manier
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan