2016-12-01 2 views
1

Ich habe Probleme beim Verstehen der Handhabung von Variablen, die beim Klicken auf eine Formularübergabe-Schaltfläche durch die Seiten geleitet werden. Grundsätzlich habe ich einen Textbereich, wo ein Benutzer eine SQL-Abfrage schreibt. Dann klicken Sie auf Senden. Dann muss ich auf der gleichen Seite (x.php) die Ergebnisse in einer Tabelle anzeigen. Ich dachte, wenn der Benutzer auf die Schaltfläche klickt, rufe ich eine Funktion auf, die eine Verbindung zur Datenbank herstellt, führt dann die Abfrage aus und gibt das Ergebnis in einer Tabelle aus. Der Code, den ich unten habe, ist ein Mock, und funktioniert nicht ganz. Aber oben ist im Wesentlichen, was ich versuche zu tun.Ausführung der PHP-Funktion Beim Klicken auf eine Formularübergabe

In meinem Code, rufe ich die Seite, und überprüfen Sie, ob die richtige Absenden-Taste angeklickt wurde, ist das, wie ich es tun soll?

Auch ich versuche, die Metadaten in den folgenden Code zu veröffentlichen, aber wie ersetzt die Tabelle, was bereits auf der Seite ist?

<html> 
<head> 
<title>CNT 4714 - Project Five Database Client</title> 
</head> 
<body style="background-color:white"> 
<center> 
<h1 style="color:red">CNT 4714 - Project Five Database Client</h1> 
<hr> 
<div style="float:left; text-align:left;padding-right:80px; padding-left:80px; "> 
<font color="yellow"> 
<?php 

?> 
Welcome Back!<br> 
<?php echo $_POST["user"];?> 
    </font> 
</div> 
<font color="yellow"> 
<div style="float:left; text-align:left"> 
<center> 
<h2 style="color:green">Enter Query</h2><br><br> 
Please enter a valid SQL Query or update statement. You may also just press<br> 
"Submit Query" to run a defualt query against the database! 
<form action="" id="sql" method="post"> 
<br> 
    <textarea rows="10" cols="50" name="query" form="sql">Enter text here...</textarea><br><br> 
    <input type="submit" name="submit" color="red"> 
    <input type="submit" name="" color="red" value="Submit Update"> 
</form> 
<?php 

if(isset($_POST['submit'])){ 
    echo "hello"; 
    query(); //here goes the function call 
} 
function query() 
{ 
    echo "hello"; 
    $conn = mysqli_connect("localhost:3306", "root", "*******", "project4"); 
    $query = $_POST["query"]; 
    $result = mysqli_query($conn, $query); 
    $metadata = mysqli_fetch_fields($result); 
    print("<tr>"); 
    for($i=0; $i<count($metadata);$i++){ 
     print("<tr"); 
     printf("%s",$metadata[$i]->name); 
     print("</tr>"); 
    } 
} 


?> 
</center> 
</div> 
</font> 
</center> 

</body> 
</html> 
+0

Geben Sie einen Namen für die Absenden-Button als einreichen und in Formular-Tag add 'method = "POST"'. –

Antwort

2

Sie versuchen, die Werte der globalen Variablen $_POST zu erhalten, während Sie es auf $_GET posieren. Um das zu beheben, weisen Sie Ihrem Formularelement method zu.

Beispiel:

<form id="sql" action="" method="POST"> 

Es gibt viele Möglichkeiten für die Überprüfung oder das Formular abgeschickt wird, eine dieser Möglichkeiten (die, die ich bin mit immer) ist die Überprüfung oder die $_SERVER['REQUEST_METHOD'] ist gleich „POST“ . Auf diese Weise können Sie den Unterschied zwischen einer GET-, POST- oder PUT-Anfrage feststellen.

Beispiel:

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    if(isset($_POST['sql'])) 
    { 
     .... 
    } 
} 
+0

ok danke, ich habe den Code auf das, was ich jetzt habe, aktualisiert, und ich kann nicht scheinen, um die Daten zu drucken. Ich habe die SQL-Abfrage ohne Fehler ausgeführt, was könnte ich falsch machen? –

+0

Warum nicht nur 'if (isset ($ _ POST ['sql']))'? Es wird nicht festgelegt, wenn es sich nicht um eine Postanforderung handelt. –

+0

Ich habe das benutzt und es funktioniert. Aber ich habe den Namen der Taste verwendet, da ich mehrere Tasten habe. DevNiels sagte, dass es viele Möglichkeiten gibt, dies zu tun. Ich denke, sein Weg ist eine Möglichkeit, es zu tun. –

0

Wenn Sie $_POST verwenden sind, sollten Sie Ihre Form Anforderungsmethode POST sein.

<form action="" id="sql" method="post">

Andernfalls wird es mit einem GET Anfrage standardmäßig vor. In diesem Fall müssen Sie stattdessen auf die Variable zugreifen, indem Sie $_GET verwenden.

+0

danke für den Fang! –

Verwandte Themen