2016-07-29 3 views
-2

Es zeigt alle Schüler in der Datenbank und Textbox mit ihnen. Aber wenn ich Noten jedes Schülers eintrage, nimmt es nur den ersten Eintrag und speichert nur Markierungen.So geben Sie mehrere Daten auf einmal für Studenten in PHP

Ich möchte:

  1. alle Namen von Studenten auf Seite mit Text-Box gedruckt werden soll, in dem ich Noten der einzelnen Schüler treten wird.
  2. Ich möchte den Datensatz von jedem Schüler mit ihren Noten speichern.

-

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) { 
    die('Could not connect: ' . mysql_error()); 
} 
$sql = "SELECT * FROM stunr WHERE stucou = '".$_POST["cls"]."'"; 

mysql_select_db('college-db'); 
$retval = mysql_query($sql, $conn); 
if($retval === FALSE) { 
    die(mysql_error()); 
} 

$row = mysql_fetch_array($retval); 
echo "<div style='margin-top:120px; margin-left:180px;'>"; 
$cla=$row['stucou']; 
echo "<h3>Class"."<b>&nbsp;&nbsp;$cla</b>"."</h3>"; 
echo"</div>"; 

echo "<div style='margin-top:50px; margin-left:180px;'>"; 
while($row = mysql_fetch_array($retval)) { 
    echo"<form method='post' action='mst-marks-insert.php'>"; 
    $clsnm = $row['stufname']; 
    echo"$clsnm"; 
    echo "<br>"; 
    echo"<input type='text' name='mas' class='textbox' placeholder='Enter Marks'/><br><br>"; 
} 
echo "<input type='text' name='tot' />"; 
echo"<input type='submit' />"; 
echo"</form>"; 
echo"</div>"; 
+1

Sie müssen den Code anzeigen, der das Speichern behandelt. –

+0

Ich empfehle, eine Tabellenstruktur zum Drucken der abgerufenen Daten des Schülers zu verwenden. –

+0

auch, seit je Schüler als separate Form ausgegeben wird, nur die Daten eines Schülers werden immer vorgelegt werden. mehrere Formulare auf einer Seite sind vollkommen in Ordnung, aber beim Einsenden wird nur das eine Formular eingereicht, kein anderes. –

Antwort

0

ich mit der Bewegung des Anfang Formular-Tag vor der while-Schleife beginnen würde.

echo"<form method='post' action='mst-marks-insert.php'>"; 
while($row = mysql_fetch_array($retval)) 
    { 
+0

Abcrucis ist korrekt, Sie haben mehrere öffnende Form-Tags (eine für jeden angezeigten Datensatz) und nur ein schließendes Formular-Tag, so dass nur der letzte Eintrag ein voll funktionsfähiges Formular hätte . –

0

Tun Sie etwas wie folgt aus:

  1. Bewegen Sie den Anfang Form vor, während Schleife
  2. Make Feld "mas" ein Array

Das ist wie diese

aussehen könnte
<?php 

mysql_select_db('college-db'); 
$retval = mysql_query($sql, $conn); 
if ($retval === FALSE) { 
    die(mysql_error()); 
} 


$row = mysql_fetch_array($retval); 
echo "<div style='margin-top:120px; margin-left:180px;'>"; 
$cla = $row['stucou']; 
echo "<h3>Class" . "<b>&nbsp;&nbsp;$cla</b>" . "</h3>"; 
echo"</div>"; 

echo "<div style='margin-top:50px; margin-left:180px;'>"; 
echo "<form method='post' action='mst-marks-insert.php'>"; 
while ($row = mysql_fetch_array($retval)) { 
    $clsnm = $row['stufname']; 
    echo "$clsnm"; 
    echo "<br>"; 
    echo "<input type='text' name='mas[$clsnm]' class='textbox' placeholder='Enter Marks'/><br><br>"; 
} 
echo "<input type='text' name='tot' />"; 
echo "<input type='submit' />"; 
echo "</form>"; 
echo "</div>"; 

?> 

In Ihr „mst-Marken-insert.php“ die $_POST var dann etwa wie folgt aussieht:

<?php 
var_dump($_POST['mas']); 
array (
    'clsnm1' => 'test', 
    'clsnm2' => 'test2', 
) 
?> 

So könnte man so etwas tun (es ist nur ein Beispiel, was möglich wäre, denn ich weiß nicht, wie Ihre SQL-Tabelle sieht wie) aus:

<?php 
foreach ($_POST['mas'] as $clsnm => $mas) { 
    mysql_query("INSERT INTO `mastable` (`clsnm`, `mas`) VALUES ('".mysql_real_escape_string($clsnm)."', '".mysql_real_escape_string($mas)."')"); 
} 
?> 
Verwandte Themen