2016-01-13 3 views
-2

Может ли кто-нибудь сказать, что не так с моей кодировкой? На каждом «текущем потоке ...» есть неопределенная переменная. Почему у него есть ошибка, когда я нажимаю кнопку поиска, результат получается в таблице?Какая ошибка моего кода?

Here is the error occur

<html> 
<head><title>Search Book</title> 
<link href="css/bootstrap.css" rel="stylesheet"> 
</head> 
<body> 
<div class="container" align="center"> 
<div class="row"> 
<div class="col-md-5"> 
<form method="get" action="" class="form-horizontal" name="search"><br> 
<table border="0" bgcolor="#E0FFFF"> 

<td><h3>Search Book By ISBN:</h3></td> 

<div class="form-group"> 
     <td><input type="text" name="id" class="form-control" placeholder="eg: 978-0320037825"></td> 
     </div> 
     <br/> 
     <tr><td><center><button type="submit" class="btn btn-success">Search</button>&nbsp;</center></td> 
     <td><a href="index.php">Back</a></td></tr> 
<tr><td> 
<?php 
if (isset($_GET['id']) !='') 
{ 
    $id = $_GET['id']; 
    $xml = simplexml_load_file("bookstore.xml"); 
    $notThere = True; 
    foreach ($xml->children() as $book) 
    { 

      if ($book->isbn == $id) 
      { 
        $currentisbn = $book->isbn; 
        $currenttitle = $book->title; 
        $currentfirstname = $book->firstname; 
        $currentlastname = $book->lastname; 
        $currentprice = $book->price; 
        $currentyear = $book->year; 
        $currentpublisher = $book->publisher; 
        $notThere = False; 
      } 


    } 
    if($notThere) 
      { 
       echo "ISBN Does Not Exist!"; 
      } 
} 
?> 

</td> 
</tr> 
</table> 
</form> 


<html> 


<form method="POST" action="" class="form-horizontal" name="delete"> 

    <table width="600" bgcolor="#ffffff" border="1" cellpadding="8"> 

    <tr colspan="2"><h2>Delete Book</h2></tr> 
    <tr> 
     <td width="150">ISBN</td> 
     <td width="320"><?php echo $currentisbn;?></td> 
    </tr> 
    <tr> 
     <td width="150">Title</td> 
     <td width="320"><?php echo $currenttitle;?></td> 
    </tr> 
    <tr> 
     <td>First Name</td> 
     <td><?php echo $currentfirstname;?></td> 
    </tr> 
    <tr> 
     <td>Last Name</td> 
     <td><?php echo $currentlastname;?></td> 
    </tr> 
    <tr> 
     <td width="150">Price</td> 
     <td width="320"><?php echo $currentprice;?></td> 
    </tr> 
    <tr> 
     <td width="150">Year</td> 
     <td width="320"><?php echo $currentyear;?></td> 
    </tr> 
    <tr> 
     <td width="150">Publisher</td> 
     <td width="320"><?php echo $currentpublisher;?></td> 
    </tr> 
     <td colspan="2" align="center"> <input name="submit" type="submit" value="Delete"/> &nbsp; 
     <a class="btn btn-default" href="index.php" role="button">Home</a></td> 
    </tr> 
</table> 
</form> 


<?php 
if (isset($_GET['id'])!='' && isset($_POST['submit'])!=''){ 
    $id = $_GET['id']; 
    $success=False; 

    $dom = new DOMDocument(); 
    $dom -> load("bookstore.xml"); 
    $xpath = new DOMXpath($dom); 
    $node = $xpath->query("//*[isbn='$id']"); 
    foreach ($node as $book) 
       { 
        $book->parentNode->removeChild($book); 
        $success=True; 
       } 

    if($success) 
    { 
     echo "<h1 style='text-align: center;'>Successfully Deleted!</h1>"; 
    } 

    $dom->save("bookstore.xml"); 

} 
?> 
<script> 
function goBack() { 
    window.history.back(); 
} 
</script> 

</html> 
+1

'$ current ...' установлены только в том случае, если у вас есть идентификатор в $ _GET и найдена стоимость в вашем XML; но вы показываете их, были ли те, если были выполнены тесты или нет. –

+0

При загрузке первой страницы коды PHP внутри IF не выполняются, переменные не создаются. Таким образом, вы получаете сообщение об ошибке, когда пытаетесь отобразить (несуществующий) контент переменной на странице ur. –

+1

Сначала вы должны определить $ current ... variables top of the file и присвоить для них нулевое значение. –

ответ

0

вместо вашего раздела внутри foreach Попробуйте ниже

if ($book->isbn == $id) 
      { 
        $currentisbn = ($book->isbn)?$book->isbn:''; 
        $currenttitle = ($book->title)?$book->title:''; 
        $currentfirstname = ($book->firstname)?$book->firstname:''; 
        $currentlastname = ($book->lastname)?$book->lastname:''; 
        $currentprice = ($book->price)?$book->price:''; 
        $currentyear = ($book->year)?$book->year:''; 
        $currentpublisher = ($book->publisher)?$book->publisher:''; 
        $notThere = False; 
      } 
+0

Большое вам спасибо! оно работает! = D – Sarah

+0

@Sarah, если он исправит вашу проблему, примите этот ответ – Butterfly

0

Они определяются только после того, как вы будете искать, на первой странице загрузки они не определены

<?php 
// add this at the very top of your file 
$currentisbn = ''; 
$currenttitle = ''; 
$currentfirstname = ''; 
$currentlastname = ''; 
$currentprice = ''; 
$currentyear = ''; 
$currentpublisher = ''; 
$notThere = ''; 
?> 

... code, html, etc ... 

if ($book->isbn == $id) 
     { 
       $currentisbn = $book->isbn; 
       $currenttitle = $book->title; 
       $currentfirstname = $book->firstname; 
       $currentlastname = $book->lastname; 
       $currentprice = $book->price; 
       $currentyear = $book->year; 
       $currentpublisher = $book->publisher; 
       $notThere = False; 
     } 
+0

Большое вам спасибо! Это полезно! = D – Sarah

Смежные вопросы