2016-04-27 3 views
0

Ich versuche, Frage und Antwort aus einer großen Textbox zu lesen und die Fragen zu spalten mit explodieren und beantworten und dann legen Sie in zwei TabelleSplit Text in großem Textblock und legen Sie in zwei separate Tabelle

Daten

Das Q ist ___ W. | (a) (0) | (b) (0) | (c) (1) | (d) (0) | (e) (0) | (f) (0) |

Das W ist _________ Q und Z. | (a) (0) | (b) (0) | (c) (0) | (d) (1) | (e) (0) |

if(isset($_POST["submit"])) 
{ 
    $Code = mysqli_real_escape_string($conn,$_POST['qrc']); 
    $linesOfData = explode('\n',$Code); 

    foreach($linesOfData as $lineOfData) { 
     $arrayOfValues = explode('|',$lineOfData); 
     foreach($arrayOfValues as $value) { 

      $q = !isset($value[0]) ? trim($value[0]) : null; // question 
      $a = !isset($value[1]) ? trim($value[1]) : null; //answer 
      $b = !isset($value[1]) ? trim($value[1]) : null; // right answer 

      echo $q; 

      //$query = "INSERT INTO question (question) VALUES ('$q')"; 
      //$mysqli->query($query); 

      //$query = "INSERT INTO answer(question_id,answer,is_right_option) values($mysqli->insert_id,'$a',$b')"; 
      //$mysqli->query($query); 
     } 
    } 
} 

Vor dem queries..I Ausführung versucht, die Ausgabe aber nichts angezeigt wird, um ein Echo. Was mache ich falsch? wie man es repariert?

Tabellenname: Frage

╔════╤═════════════════════════════╗ 
║ id │ question     ║ 
╠════╪═════════════════════════════╣ 
║ 1 │ The Q is ___ W.    ║ 
╟────┼─────────────────────────────╢ 
║ 2 │ The W is _________ Q and Z. ║ 
╚════╧═════════════════════════════╝ 

Tabellenname: Antwort

╔════╤═════════════╤════════╤═════════════════╗ 
║ id │ question_id │ answer │ is_right_option ║ 
╠════╪═════════════╪════════╪═════════════════╣ 
║ 1 │ 1   │ (a) │ 0    ║ 
╟────┼─────────────┼────────┼─────────────────╢ 
║ 2 │ 1   │ (b) │ 0    ║ 
╟────┼─────────────┼────────┼─────────────────╢ 
║ 3 │ 1   │ (c) │ 1    ║ 
╟────┼─────────────┼────────┼─────────────────╢ 
║ 4 │ 1   │ (d) │ 0    ║ 
╚════╧═════════════╧════════╧═════════════════╝ 
+0

Wäre es nicht genug sein, um genau die richtige Option zu speichern, anstatt alle ‚nicht richtig‘ Einsen auch? – RST

+0

Antwortspalte wird echte Antwort wie .. 10%, 12% 56% 13% für jede Fragen haben..So is_right_option ist zu verwenden, um zu bezeichnen, welches ist richtig. – Digi23

Antwort

0

Ihre Logik ist falsch.

$q = !isset($value[0]) ? trim($value[0]) : null; // question 

Das bedeutet, wenn $value[0] nicht gesetzt ist, nicht gesetzt ist, so ist es nicht vorhanden ist, dann wird der Wert trimmen. Ansonsten bedeutet dies, es gesetzt ist, setzen Sie sich auf null

Änderung es zu:

$q = isset($value[0]) ? trim($value[0]) : null; // question 
+0

Ich habe einen dummen Fehler gemacht, ich habe ihn jetzt geändert, aber wenn ich $ q, $ a, $ b .. widerspreche, bekomme ich Te()()()()()() \ Te()()()()() Anstatt es wie folgt zu speichern $ a = Das Q ist ___ W. $ a = (a), $ b = 0 – Digi23

+0

Aktualisieren Sie Ihren Post mit dem Code, den Sie jetzt verwenden, und führen Sie 'print_r ($ _ POST [' qrc ']); 'und füge diesen Wert hinzu. – RST

+0

Hier ist der aktualisierte Code..https: //3v4l.org/kQ3f8 im Moment kann ich die letzte Zeile der Daten bekommen. f) (f). d) verlässt den Zug, d) Illegal ... Etwas mit der Regex zu tun? Versuchte es hier zu debuggen..http: //regexr.com/3dal0 es unterbreche die letzte Zeile – Digi23