2017-09-29 7 views
-2

Cher Stack membres Overflow,Un isset dans une autre isset avec html et php qui ne travaillent pas

Je suis en train de créer un formulaire pour les prix de l'école où un utilisateur choisira une classe (niveau) et soumettre. Les prix pour cette classe (il peut y avoir plusieurs prix) seront affichés dans un tableau avec une liste déroulante d'une liste d'étudiants dans cette classe à côté de chaque prix.

L'utilisateur sélectionnera ensuite un étudiant dans la liste déroulante à côté de chaque prix et le soumettra de nouveau, ce qui permettra de sauvegarder les enregistrements dans un tableau.

Cela fonctionne bien sauf la dernière partie où les étudiants et les récompenses ne sont pas enregistrées. Vous ne savez pas si le problème est lié à un isset dans un autre isset.

<?php 
 

 
if(isset($_POST['submit'])) { 
 
\t include 'db_connect.php'; \t 
 
\t $level \t = $_POST['level']; 
 
\t 
 
\t \t $query = mysqli_query($conn, "SELECT a.awardcode, a.level, b.awardname, a.year FROM awardyrlevel AS a 
 
\t \t INNER JOIN award AS b 
 
\t \t ON a.awardcode = b.awardcode 
 
\t \t WHERE a.level = '$level' AND a.year = year(curdate())"); 
 
\t 
 

 
     ?> 
 
     <table border="1" style= "background-color: white; color: #761a9b; <!--margin: 0 auto-->;" > 
 
\t \t <thead> 
 
\t \t \t <tr> 
 
\t \t \t <th>Award Code</th> 
 
\t \t \t <th>Award Name</th> 
 
\t \t \t <th>Year Level</th> \t \t \t 
 
\t \t \t <th>Select Student</th> \t \t 
 
\t \t \t </tr> 
 
\t \t </thead> 
 
\t \t <tbody> 
 
\t \t \t <?php 
 
\t \t \t while($row = mysqli_fetch_assoc($query)){ 
 
?> 
 
\t \t \t \t <tr> 
 
\t \t \t \t <td> <input type = "text" name="awardcode[]" value = "<?php echo $row['awardcode']; ?>" readonly /> </td> 
 
\t \t \t \t <td><?php echo "{$row['awardname']}" ?> </td> 
 
\t \t \t \t <td><?php echo "{$row['level']}" ?></td> 
 
\t \t \t \t \t <td><select name="studcode[]" > 
 
\t \t \t \t \t \t \t \t <option disabled selected value> -- Select Student -- </option> 
 
\t \t \t \t \t \t \t \t <?php 
 
\t \t \t \t \t \t \t \t \t $sql = mysqli_query($conn, "SELECT * FROM student where year_level = '$level'"); 
 

 
\t \t \t \t \t \t \t \t \t while ($row = mysqli_fetch_assoc($sql)){ 
 
\t \t \t \t \t \t \t \t \t \t echo '<option value = " '.$row['stud_code'].'"> '.$row['name'].' </option>'; 
 
\t \t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t \t ?> 
 
\t \t \t \t \t \t </select> \t \t \t \t \t \t 
 
\t \t \t 
 
\t \t \t \t \t </td> 
 
\t \t \t \t </tr>\n; 
 
\t \t \t \t 
 
\t \t 
 
\t \t \t <?php } ?> 
 
\t \t 
 
\t \t </tbody> 
 
    </table> 
 
\t \t \t <br><br> 
 
\t \t \t <input id="save_button" type="submit" name="saveselection" value="Save Selection"> 
 
\t \t \t <input id="exit_button" type="submit" name="exit" value="Exit" onclick="window.history.go(-1); return false;"> 
 
\t 
 
<?php 
 
\t \t \t \t \t 
 
\t if(isset($_POST['saveselection'])) { 
 

 
\t \t $awardcode = $_POST['awardcode']; 
 
\t \t $studcode = $_POST['studcode']; 
 
\t \t $level = $row['level']; 
 
\t \t $year = year(curdate()); 
 
\t \t $session_user = '2365'; 
 
\t \t echo $awardcode; 
 
\t \t 
 
\t \t foreach ($_POST['awardcode'] as $awardcode) { 
 

 
\t \t $query = mysqli_query($conn, "INSERT INTO `awardwinner`(`awardcode`, `stud_code`, `level`, `year`, `doe`, `enteredby`) 
 
\t \t \t \t \t \t \t VALUES ('$awardcode', '$studcode', '$level', '$year', now(), '$session_user')"); 
 
\t \t } \t \t 
 
\t 
 
\t } 
 
} 
 
?>

Le code que je l'ai écrit est simple avec html et php. J'ai essayé de déboguer cela assez longtemps. Est-ce que l'un d'entre vous pourrait suggérer ce qui ne va pas dans ce dossier?

+1

Xtrême à injection SQL – CD001

+1

'$ l'année = année (curdate());' 'année()' et 'curdate()' ne sont pas des fonctions PHP –

+1

... et c'est pourquoi les développeurs/Les programmeurs ont passé des décennies à marteler l'idée de [Separation of Concerns] (https://en.wikipedia.org/wiki/Separation_of_concerns) – CD001

Répondre

0

Il y a deux choses qui ne vont pas avec ce code, y compris ne pas respecter les normes de programmation PHP. Gardez vos issets en haut de la page, ne les jetez pas partout, cela rend les choses difficiles à suivre.

Vous avez une entrée avec le nom listé dans un tableau ... pourquoi? Vous ne soumettez pas plusieurs valeurs ici. Peut-être que vous voulez l'utiliser comme une case à cocher/radio? Sinon, ce n'est pas nécessaire. Ensuite, dans votre dernière requête, vous utilisez effectivement `pour un certain nombre d'entre eux, au lieu de '. C'est un `qui devrait être sous votre touche Echap, au lieu d'une apostrophe (')

Aussi juste comme une préférence, j'ai tendance à écrire pour la lisibilité plutôt que l'efficacité brute lorsque je travaille avec quelques personnes, donc j'écrirais personnellement :

$query = "WHATEVER MY QUERY IS"; 
$get_thing_query = mysqli_query($connection, $query); 
while($row = mysqli_fetch_assoc($get_thing_query)){ 
//Do your stuff, if you're not expecting multiple rows don't use while. 
} 
+0

Salut cmprogram, vous avez raison. Il y aura plusieurs prix pour les étudiants de chaque classe (niveau) et l'enseignant/l'utilisateur sélectionnera un étudiant dans le menu déroulant (qui fonctionne correctement). J'aurais pu ajouter la capture d'écran à cette réponse qui l'aurait expliqué plus, mais je n'ai trouvé aucun bouton pour attacher un fichier. – sansam