2017-05-31 7 views
0

Ich erstelle ein Update-Formular, aber wenn ich auf die Update-Taste klicken, leitet es auf meine Update-Seite und löst die POST-Anfrage, die es zu einem gültigen Beitrag und fragt keine Informationen aktualisieren.PHP Form Ausführung POST Anfrage beim Laden

<!DOCTYPE html> 
<html> 
    <?php require ('template/functions.php'); 
    $ID = $_GET['id']; 
    $sql_query = "SELECT * FROM specialties WHERE id='".$ID."'"; 
    $results = mysqli_query($connect,$sql_query); 
    $spc = mysqli_fetch_assoc($results); 
    $error = ""; 
    $specialist_section = false; 
    $description_section = false; 
    $specilist_exist = false; 
    $valid_post = true; 
    ?> 
    <?php 
    if ($_SERVER["REQUEST_METHOD"] == "post") { 
     valid();  
     if ($valid_post){ 
      $sql_query = "UPDATE specialties SET "; 
      $sql_query .= "specialty='".$_POST['specialty']."',"; 
      $sql_query .= "description='".$_POST[description]."'"; 
      $sql_query .= " WHERE id='".$_GET['id']."'"; 
      $result = mysqli_query($connect,$sql_query); 
      if (!results){ 
       print "MYSQL_ERROR: ".mysqli_error($connect); 
       $valid_post = false; 
       $specilist_exist = true; 
       $error .= "Specialty already exist <br/>"; 
      } 

     }else{ 
      $valid_post = false; 
     } 
    } 
    ?> 
    <head> 
     <title>Specialist Lookup </title> 
    </head> 
    <body> 
     <div class="container"> 
      <?php 
       if ($valid_post){?> 
        <h2>Update Complete</h2>     
        <?php 
       }else{ 
        if ($error) { ?> 
         <h3 style="color:red;"><?php echo $error ?> </h3> <?php }?> 
         <h1>Update Specialist</h1>   
         <form action="update.php" method="post"> 
          <div class="form-group"> 
          <label for="specialty" style="color:<?php if ($specialist_section){echo "red";}else{ echo "black";} ?>">Specialty:</label> 
          <input type="text" class="form-control" id="sp" name="specialty" value="<?php echo $spc['specialty'] ;?>" > 
          </div> 
          <div class="form-group"> 
           <label for="description" style="color:<?php if ($description_section){echo "red";}else{ echo "black";} ?>">Description:</label> 
           <textarea class="form-control" rows="5" id="comment" name="description"><?php echo $spc['description'] ; ?></textarea> 
          </div> 
          <button type="submit" class="btn btn-default">Submit</button> 
         </form> 
       <?php 
       } 
       ?> 
     <div> 
    </body> 
<?php 
    require ('template/footer.php'); 
?> 

/*Reference for the function*/ 
function valid(){ 
    $valid_post = true; 
    if (empty($specialty)) { 
       $valid_post = false; 
       $specialist_section = true; 
       $error = "Please fill in the Specialist section"; 

      } 

      elseif (empty($description)) { 
       $valid_post = false; 
       $error = "Please fill in the description section"; 
       $description_section = true; 
      } 

      elseif (empty($description) and empty($specialty)) { 
       $valid_post = false; 
       $error = "Please fill in the specialty and description section"; 
       $description_section = true; 
      } 
      else{ 
       $valid_post = true; 
      } 

} 
+0

Was ist Ihre Frage. – sudo

+0

Ist ein implizites "Warum Post ist gültig, auch wenn ich das Formular nie gesendet habe?" – sensorario

+0

Bitte lassen Sie uns, was ist das Problem, dass Sie konfrontiert sind .. –

Antwort

0

Voreingestellt Sie

$valid_post = true; 

Sie müssen die Logik ändern:

<!DOCTYPE html> 
<html> 
    <?php require ('template/functions.php'); 
    ... 
    $valid_post = false; 
    ?> 
    <?php 
    if ($_SERVER["REQUEST_METHOD"] == "post") { 
     $valid_post = valid(); 
     if ($valid_post){ 
      // ... 
     } 
    } 
    ?> 
    <head> 
     <title>Specialist Lookup </title> 
    </head> 
    <body> 
     <div class="container"> 
      <?php 
       if ($valid_post){?> 
        <h2>Update Complete</h2>     
        <?php 
       }else{ 
        // ... 
       } 
       ?> 
     <div> 
    </body> 

Ich weiß nicht, was in valid() Funktion geschieht. Aber ich schlage vor, Sie dieses Muster:

$validPost = false; 
if (valid()) { 
    $validPost = true; 
} 

oder

$validPost = valid(); 
+0

Ich versuchte es am meisten (abgesehen von der Änderung der Validierung): – Blared

+0

Hier ist die Website: http://jeff.blared.net/specialist/ Ich habe versucht, $ valid_post zu machen um sofort wahr zu sein, es sei denn die IF-Anweisung ändert es. aber es scheint es nicht zu einem gültigen Beitrag zu machen – Blared

0

nicht so sicher, wie Sie Ihre valid() Funktion schreiben.

Mit Blick auf den Code, wird $valid_post standardmäßig eingestellt wahr zu sein, so dass Sie vielleicht einen Blick auf Ihre valid() Funktion, um zu sehen, ob es tatsächlich haben wollen ist $valid_post falsch sein Einstellung, wenn es nicht gültig ist, es anders wird immer Ihre Update-Funktion auslösen, auch wenn keine gültigen Formulardaten vorhanden sind.

wenn Ihre valid() Funktion dann boolean zurückkehr ändern Sie einfach Ihren Code Änderung

valid()

zu

$valid_post = valid()

Auch nicht brauchen Sie wahrscheinlich else überhaupt in Ihrem Code, $valid_post = valid() Dies wird einfach einen boolean Wert bereits vergeben, daher die else Teil wird überflüssig sein.

Lassen Sie mich wissen, wenn Sie irgendeine Frage haben