2016-12-15 2 views
1

In meiner ersten PHP-Datei hole ich Ergebnisse von MySQL und zeige sie in der Tabelle. Jeder Zeilenwert in einer Spalte muss den Wert "Ja" oder "Nein" haben. Wenn neue Anfrage hinzugefügt wird, ist der Wert "Nein". Auf "Nein" klicke ich möchte ein anderes php (zatvaranje_zadatka.php) öffnen und id_zadatka und broj_zadatka an die neue php-Datei mit dem Formular senden, um die Lösung der Anfrage einzugeben. Beim Senden in einer neuen PHP-Datei möchte ich das Flag in mysql table1 auf "Yes" setzen und eine Lösung in eine andere Tabelle in mysql schreiben. Kurz Notizen in erster php:PHP Werte aktualisieren nicht mysql Tabelle

while ($row = mysql_fetch_array($result)) 
{ 
    echo '<tr><td>' .$row["id_zadatka"] .'</td>'; 
    echo '<td><a href="zatvaranje_zadatka.php?id_zadatka='.$row["id_zadatka"].'">Zatvori</a></td>'; 
} 

In zatvaranje_zadatka.php ich habe:

$id_zadatak = isset($_GET['id_zadatka']) ? $_GET['id_zadatka'] : ''; 
$br_zht = isset($_GET['broj_zadatka']) ? $_GET['broj_zadatka'] : ''; 
if($id_zadatak != '') { 
    echo '<form action="zatvaranje_zadatka.php?go.php" method="POST" id="zatv_zad" name="zatv_zad">'; 
    echo '<fieldset>'; 
    echo ' Broj zadatka je:'; 
    echo '<legend>Rješenje zadatka</legend>'; 
    echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>'; 
    echo '</fieldset>'; 
    echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>'; 
    echo '</form>'; 

    $rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : ''; 

    $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$br_zht', '$rjesenje')"; 
    $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error()); 
} 

Ausgabe in Tabelle rjesenje nichts.

Antwort

0

Das alles Code sieht chaotisch und fragwürdig, aber Sie könnten dies, um für die Prüfung versuchen, herauszufinden, wie das alles am Ende arbeitet ..

$id_zadatak = $_GET['id_zadatka']; // we set this via URL 
    //$br_zht = $_GET['id_zadatka']; // id i broj su ista stvar 
    $rjesenje = $_POST['rjesenje']; 


    if($id_zadatak != '') { 

      echo '<form action="zatvaranje_zadatka.php?id_zadatka='.$id_zadatak.'" method="POST" id="zatv_zad" name="zatv_zad">'; 
       echo '<fieldset>'; 
        echo ' Broj zadatka je:'; 
        echo '<legend>Rješenje zadatka</legend>'; 
        echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>'; 
       echo '</fieldset>'; 
       echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>'; 
      echo '</form>'; 




     if(isset($rjesenje)) 
{ 
       $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$id_zadatak', '$rjesenje')"; 
       $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error()); 
} 

     } 
+0

Dies löste mein Problem mit leicht Änderung von $ rjesenje zu (isett ($ _ POST ['rjesenje'])? $ _POST ['rjesenje' ]: ''); Vielen Dank! – MikeL

+0

@JoeMay eine andere Möglichkeit zu bestimmen, ob eine Variable leer ist oder nicht, ist mit der 'empty()' -Funktion. Es prüft, ob eine Variable einen Wert enthält und ob die Variable gesetzt ist. http://php.net/manual/en/function.empty.php –

0

Dies ist wahrscheinlich aufgrund eines Tippfehlers. Sie müssen ein Leerzeichen zwischen Ihrem Tabellennamen und den Zeilennamen eingeben. (z.B. rjesenje_ (broj_zadatka, rjesenje_zadatka))

Aber was noch schlimmer ist, ist, dass Ihre Datenbank anfällig für SQL-Injektionen ist. Bitte werfen Sie einen Blick auf prepared statements

+1

"Sie müssen ein Leerzeichen zwischen Ihrem Tabellennamen und den Zeilennamen eingeben." --- Das ist falsch. Du musst nicht. Der Abstand zwischen dem Tabellennamen und der Klammer ist optional. Sie können sogar eine Abfrage wie diese 'in den Benutzer einfügen (ID, Download) Werte (4,7)' und es würde immer noch richtig einfügen. Der wahrscheinlichere Fehler ist, dass $ _GET ['rjesenje'] 'nicht gesetzt ist. Möglicherweise, weil das Formular Post ist und die Anfrage überprüft ist $ _GET –

0

Ihre Form ist method="POST" und Sie überprüfen, für $_GET Variablen. Somit ist der Fehler rjesenje leer. Dies sollte zu einem Fehler geführt haben, jedoch haben Sie geprüft, ob $_GET['rjesenje'] gesetzt wurde oder nicht. Es war nicht, also der Wert der Variablen ist nichts, wie angegeben, wenn Sie überprüfen, ob es gesetzt ist.

$rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : ''; 

false zurück => $ rjesenje = nichts

Änderung der Zeile wie folgt:

$rjesenje = isset($_POST['rjesenje']) ? $_POST['rjesenje'] : ''; 

das Problem zu lösen, entweder die Anfrage-Methode des Formulars ändern zu method="get" oder überprüfen Sie stattdessen $_POST Variablen, wie oben vorgeschlagen.

Eine Möglichkeit, zu überprüfen, ob dies der Fall ist, könnten Sie versuchen, die Variablen ausdrucken beim Debuggen:

print_r($_GET); 

oder

print_r($_POST); 

Vergewissern Sie sich, dass Sie Ihre Fehler auf, während haben debugging

error_reporting(E_ALL); 

mehr lesen: How to get useful error messages in PHP?


Außerdem möchte ich Sie darauf hinweisen, mysqli oder PDO-Funktionen anstelle von MySQL zu verwenden. Als MySQL-Funktionen sind ab PHP-Version 5.5 veraltet und vollständig in PHP 7.0 entfernt, und weil mysql-Funktionen anfällig für Angriffe sind.

http://php.net/manual/en/intro.mysql.php

+0

Von Ihrem Beitrag lernte ich ein paar neue Dinge. Danke! – MikeL

+0

Das ist in der Tat der Zweck der SO, ich bin glücklich, dass @MikeL zu hören :) –