2014-11-29 4 views
-2

스크립트는 데이터베이스에서 검색 한 데이터를 편집하는 것에 관한 것입니다. 그것은 잘 작동 (데이터를 편집)하지만 오류 배열은 스크립트가 실행될 때 즉시 표시됩니다. 그래서 나는 모든 오류가 발생합니다 : 잊혀진 제목, 몸, 날짜.PHP 편집 스크립트가 제대로 작동하지 않습니다.

는 테스트를 위해 내가 예를 들어 제목을 생략하고 난 단지 얻을 제출을 클릭하면 처음에 제목

<?php 
$page_title = 'Edit a Joke'; 
include ('includes/header.html'); 
echo '<h1>Edit a Joke</h1>'; 

// Check for a valid Joke ID, through GET or POST: 
if ((isset($_GET['id'])) && (is_numeric($_GET['id']))) { // From view_jokes.php 
$id = $_GET['id']; 
} 
else { // No valid ID, kill the script. 
echo '<p>This page has been accessed in error.</p>'; 

exit(); 
} 

require ('mysqli_connect.php'); 

// Check if the form has been submitted: 
if ($_SERVER['REQUEST_METHOD'] == 'GET') { 

$errors = array(); 
// Check for a title 
if (empty($_GET['title'])) { 
    $errors[] = 'You forgot to enter title.'; 
} else { 
    $tit = mysqli_real_escape_string($dbc, ($_GET['title'])); 
    } 
// Check for body: 
if (empty($_GET['body'])) { 
    $errors[] = 'You forgot to enter body.'; 
} else { 
    $bod = mysqli_real_escape_string($dbc, ($_GET['body'])); 
} 
// Check for date: 
if (empty($_GET['date'])) { 
    $errors[] = 'You forgot to enter date.'; 
} else { 
    $dat = mysqli_real_escape_string($dbc, ($_GET['date'])); 
} 
if (empty($errors)) // If everything's OK. 
       { 

     // Make the query:        
     $q = "UPDATE joke SET title='$tit', body='$bod', date='$dat' WHERE joke_id=$id LIMIT 1"; 
     $r = @mysqli_query ($dbc, $q); 
     if (mysqli_affected_rows($dbc) == 1) { // If it ran OK. 

      // Print a message: 
      echo '<p>The joke has been edited.</p>';  

     } else { // If it did not run OK. 
      echo '<p class>The joke could not be edited. Sorry</p>'; // Public message. 

     }    
       } 

        else { // Report the errors. 

    echo '<p>The following error(s) occurred:<br />'; 
    foreach ($errors as $msg) { // Print each error. 
     echo " - $msg<br />\n"; 
    } 
    echo '</p><p>Please try again.</p>'; 

    }// End of if (empty($errors)) IF. 
    }// End of submit conditional. 


    // Always show the form... 

    // Retrieve the joke information: 
    $q = "SELECT title, body, date FROM joke WHERE joke_id=$id";  
$r = @mysqli_query ($dbc, $q); 

if (mysqli_num_rows($r) == 1) { // Valid joke ID, show the form. 

// Get the joke's information: 
$row = mysqli_fetch_array ($r, MYSQLI_NUM); 

// Create the form: 
echo '<form action="edit_joke.php" method="GET"> 

<p> Title: <input type="text" name="title" value="' . $row[0] . '" /></p> 

<p> Body: <input type="text" style="height: 100" size="100" name="body" value="' . $row[1] . '" /> </p> 

<p> Date: <input type="date" name="date" value="' . $row[2] . '" /> </p> 

    <p> <input type="submit" name="submit" value="Submit" /></p> 

    <input type="hidden" name="id" value="' . $id . '" /> 
    </form>'; 

} else { // Not a valid joke ID. 
echo '<p>This page has been accessed in error.</p>'; 
    } 

    mysqli_close($dbc); 

    ?> 
+0

** ** : 실행 된 코드를()를 사용하여 조건부'isset()'안에 래핑하십시오. 제출 버튼의 명명 된 속성. –

+0

질문이 제대로 형성되지 않아이 문제에 혼란 스럽습니다. 내가 지적 할 수있는 코드에는 많은 작은 것들이 있지만 일부는 문제를 해결하지 못할 수도 있습니다. 나의 첫 번째 생각은'isset'과'isempty'를 비교하는 것이다. [여기에 설명하려고하는 요지가 있습니다] (https://gist.github.com/juampy72/6029872) – Phil

+0

댓글을 읽지 못했습니다. 받아들입니다. –

답변

0

변경을 입력 잊은 :

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

    $errors = array(); 

    // Check for a title 


    .... 

} 
    // Always show the form... 

그리고 당신의 <form에 추가 :

<input type="hidden" name="test" value="1"> 
+0

아니, 작동하지 않는다 ... 나는 여전히 오류가 다시 발생한다. – mile

+0

나는 나의 새로운 대답으로 지금 시험해 본다 – Croises

+0

IT가 작동한다! 마침내! 몇 마디 말을 할 수 있습니까? 나는 항상 테스트 할 값을 전달하므로 항상 설정되어 있는지 또는? – mile

관련 문제