2016-03-29 7 views
0

So habe ich ein Formular, das Menschen eine Liste von Noten hinzufügen können, und mit jQuery können sie bis zu 9 zusätzliche Felder hinzufügen. (Das bedeutet, dass sie eine beliebige Zahl von 1 bis 10 Noten einreichen können). Was ich wissen möchte ist, wie ich das in meiner Datenbank speichern kann, da ich nicht alle in eine Zeichenfolge konvertieren will. Meine Sorge ist, dass, weil ich nicht weiß, wie viele Noten der Benutzer eingeben wird, kann ich keine definitive Array-Nummer zu speichern (oder kann ich?)PHP Speichern unbekannter Array-Länge in Datenbank

Sorry, wenn dies nicht sehr gut erklärt ist, Ich bin noch relativ neu in PHP und SQL!

+0

Wie es derzeit geschrieben ist, ist unklar, was Sie fragen. Können Sie weitere Informationen hinzufügen, die Sie derzeit haben (Formular, PHP-Skript, Datenbankschema, Tabellenbeziehungen ...)? –

+3

Noten sollten eine Tabelle sein, die mit dem Eigentümer jeder Klasse verknüpft ist. Sie können so viele Zeilen in der Bewertungstabelle haben, wie Sie benötigen, mit drei Spalten - Studenten-ID, Kurs und Note. –

+0

Also habe ich eine 'Grade'-Tabelle, die sich auf eine CV-Tabelle bezieht, und die CV-Tabelle bezieht sich auf eine Benutzertabelle. Das bedeutet viele Noten in einem Lebenslauf/Lebenslauf und viele Lebensläufe/Lebensläufe für einen Nutzer. Zum Beispiel laden sie gerade etwas wie Mathe, A, GCSE als einen Eintrag und Englisch, A *, A Level als ein anderes hoch. – SixTailedFox

Antwort

1

Eine schnelle Annahme, wenn ich mich nicht irre, wäre: das Speichern eines Benutzers mit mehreren Noten für mehrere Fächer kann so erreicht werden.

Erstens bekommen wir einen Benutzer-ID aus der Form und stecken es in PHP:

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

Dann mehrere Typen und Themen zu verschaffen, die als kommagetrennte Werte gesendet werden würde:

//$id= explode(',',$_POST['id']);// For multiple users 
$grade= explode(',',$_POST['grade']); 
$subj= explode(',',$_POST['subject']); 
$entry= explode(',',$_POST['entry']); 

Jetzt zählen die Anzahl der Qualitäten: $count= count($grade);

Zählung im for loop Verwenden Insert in Schleife haben:

for ($i = 0; $i < $count; $i++) { 
    try { 
     $dbh->beginTransaction(); //$dbh is your PDO connection    
      $insertQ = "INSERT INTO `grades` (id, grade, subject, entry) 
         VALUES('$id', '$grade[$i]', '$subj[$i]','$entry[$i])";    
      $dbh->query($insertQ);    
      $dbh->commit(); 
      } catch (Exception $e) { 
       $error = $e->getMessage(); 

      } 
} 

Hoffe, das kann helfen.

Verwandte Themen