2016-03-19 4 views
0

Dies ist eine wirklich spezifische Frage, aber ich habe es seit einer Weile fest. Ich erstelle eine Anwendung, in der sich Benutzer anmelden und bestimmte Kurse bevorzugen können, indem sie auf ein Sternsymbol klicken. Ich möchte, dass es funktioniert wie auf vielen Social-Networking-Sites, wo, wenn Sie auf den Stern klicken, füllt es aus, um zu zeigen, dass es hat. Es speichert die Kurs-ID und die Sitzungs-E-Mail in der Favoriten-Tabelle, aber ich kann die Kurse, die als einen ausgefüllten Stern angezeigt werden, nicht erhalten. Das Problem Bit ist if(($_SESSION["Email"] == $row3["Email"]) && ($row["ID"] == $row3["ID"])){ und so weiter.PHP-Stern füllt nicht aus, wenn Benutzer Favoriten Artikel

<?php session_start(); 
    include "connection.php"; 
    $sql="SELECT * FROM course"; 
    $result= mysqli_query($con, $sql); 
    $sql2 = "SELECT * FROM course, university WHERE course.UNI_ID = university.UNI_ID"; 
    $result2 = mysqli_query($con, $sql2); 
    $row2=mysqli_fetch_assoc($result2); 
    $sql3 = "SELECT * FROM favourite"; 
    $result3 = mysqli_query($con, $sql3); 
    $row3 = mysqli_fetch_assoc($result3); 

    while($row=mysqli_fetch_assoc($result)) { 
     echo "<table border='2px' width='100%'><tr><td><b>".$row2["Name"]."</b></td><td><img src= 'images/".$row2["Logo"]."' width='25px'></td></tr><tr><td><b><a href=course.php?ID=".$row["ID"].">".$row["Course_name"]."</b></td><td>".$row["Course_length"]."</td></tr><tr><td width='80%'><a href=course.php?ID=".$row["ID"].">UCAS Requirements: ".$row["UCAS"]."+ ".$row["Subject_requirement"]."<br>Student Rating: <img src=images/".$row["Student_rating"]." width='80px'></td>";  

     if(isset($_SESSION["Email"])) { 
      if($_SESSION["Admin"] == "1") { 
       echo "<td width='20%'><input type=\"button\" value=\"Delete\" onClick=\"window.location.href='deletecourse.php?=ID".$row["ID"]."'\"><br><br><input type=\"button\" value=\"Edit\" onClick=\"window.location.href='editcourseform.php?ID=".$row["ID"]."'\"></td></tr></table>"; 
      } 
      if($_SESSION["Admin"] != "1") { 
       if(($_SESSION["Email"] == $row3["Email"]) && ($row["ID"] == $row3["ID"])) { 
        echo "<td width='20%'><a href=unfavourite.php?ID=".$row["ID"]."><img src=images/favouritefilledin.fw.png width='45px'></td></tr></table>"; 
       } 
       else { 
        echo "<td width='20%'><a href=favourite.php?ID=".$row["ID"]."><img src=images/favourite.fw.png width='45px'></td></tr></table>"; 
       } 
      } 
     } 
     else { 
      echo "<td width='20%'><a href=log_in.php><img src=images/favourite.fw.png width='45px'></td></tr></table>"; 
     } 
    } 
?> 
+0

ich die Vertiefung Ihrer Verschachtelung ernsthaft bearbeiten musste. Das könnte nur eine Funktion sein, um mit dem Code-Block in SO zu schreiben, aber Sie sollten sicherstellen, dass Ihr echter Code * hübsch * und gut * gestylt * Eindruck hat. Es wird Ihnen viel Kummer in der Zukunft ersparen, wenn Sie mit so vielen Verschachtelungsniveaus zu tun haben. – tmthydvnprt

Antwort

0

Sie sind nicht durch die Lieblings Ergebnisse Looping, müssen Sie sie alle

  1. Sie müssen zuerst erstellen eine Reihe von „Favoriten“ Kurse für diese E-Mail, so in Ihrer MySQL überprüfen Abfrage Prüfung für die E-Mail zu

  2. Und dann statt

    ($row["ID"] == $row3["ID"]) 
    

    verwenden

    in_array($row["ID"],$favouriteCourses) 
    
+0

Tut mir leid, ich bin neu in PHP und frage mich, wie ich eine Reihe von Lieblings-Kurse aus der Datenbank erstellen würde? –

+0

Also, mache ein Array $ favouriteCourse = array(); und dann durchlaufen Sie Ihre Lieblings-Kurse Ergebnis und fügen Sie sie zu dem Array $ FavouriteCourses [] = $ row3 ["ID"]), auch nicht wollen Sie $ row3 ["ID"], wollen Sie die Kurs-ID in dieser Tabelle was ich vermute, ist in einer anderen Spalte. –