Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Abfrage über mehrere Tabellen [Erledigt]

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Abfrage über mehrere Tabellen [Erledigt]

    Hi,

    ich hab ein Problem beim programmieren einer Abfrage..

    Folgende Situation:

    2 Tabellen: classes, loesungswege
    Classes Spalten: ID, Klassenname
    loesungswege Spalten: ID, Name, class_ID

    Wobei Class_ID natürlich der Fremdschlüssel von der classes Tabelle ist.

    So. Jetzt bekomme ich von einem Benutzer einen Klassennamen vorgegeben, also keine ID. Und dann möchte ich einfach alle loesungswege listen, die in der angegebenen Klasse sind. WHERE class_ID=xxx geht hier ja nicht, denn ich bekomme eben nicht die KlassenID, sondern den Namen.

    Meine Überlegungen mit Hilfe von InnerJoin etc. sind leider erfolglos geblieben. Deswegen frage ich hier nochmal nach, bevor ich den komplizierten Weg über Arrays gehe.

    Danke + Grüße
    Passi


  • #2
    Ok, habs jetzt doch hinbekommen:

    PHP-Code:

    SELECT seite
    nummer FROM loesungen INNER JOIN classes WHERE classes.klasse='Testklasse2' AND classes.ID=loesungen.klasse 

    Kommentar


    • #3
      Wenn du jetzt noch die ON Bedingung einbaust bringt dir das auch noch ein Performance Gewinn
      Code:
      SELECT seite, nummer 
      FROM loesungen 
      INNER JOIN classes 
      ON classes.ID=loesungen.klasse 
      WHERE classes.klasse='Testklasse2'

      Kommentar


      • #4
        Habe das Problem, Artikel werden ja user einmal angezeit, also mehrfach

        Mein script :

        Problemausgabe ist : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\ws\codes\tests\aus p-b-t.comeze.com\eingabetest.php on line 157

        PHP-Code:
        <?php
            error_reporting
        (E_ALL);
            include(
        "mysql.php");
            include(
        "functions.php");

            
        session_start();
            include(
        "autologout.php");

            if(!isset(
        $_SESSION['UserID'])) {
                 echo 
        "Sie sind nicht eingeloggt.<br>\n".
                      
        "Bitte <a href=\"login.php\">loggen</a> Sie sich zuerst ein.\n";
            }
            else{
                
        // Avatar hochladen
                
        if(isset($_POST['submit']) AND $_POST['submit'] == "Avatar hochladen") {
                    
        $errors = array();
                    
        // Uploadfehler prüfen
                    
        switch ($_FILES['pic']['error']){
                        case 
        1$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
                                            break;
                        case 
        2$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
                                            break;
                        case 
        3$errors[] = "Die Datei wurde nur teilweise hochgeladen.";
                                            break;
                        case 
        4$errors[] = "Es wurde keine Datei ausgewählt.";
                                            break;
                        default : break;
                    }
                    
        // Prüfen, ob eine Grafikdatei vorliegt
                    
        if(!@getimagesize($_FILES['pic']['tmp_name']))
                        
        $errors[] = "Ihre Datei ist keine gültige Grafikdatei.";
                    else {
                        
        // Mime-Typ prüfen
                        
        $erlaubte_typen = array('image/pjpeg',
                                                
        'image/jpeg',
                                                
        'image/gif',
                                                
        'image/png'
                                               
        );
                        if(!
        in_array($_FILES['pic']['type'], $erlaubte_typen))
                            
        $errors[] = "Der Mime-Typ ihrer Datei ist verboten.";

                        
        // Endung prüfen
                        
        $erlaubte_endungen = array('jpeg',
                                                   
        'jpg',
                                                   
        'gif',
                                                   
        'png'
                                                  
        );
                        
        // Endung ermitteln
                        
        $endung strtolower(substr($_FILES['pic']['name'], strrpos($_FILES['pic']['name'], '.')+1));
                            if(!
        in_array($endung$erlaubte_endungen))
                                
        $errors[] = "Die Dateiendung muss .jpeg .jpg .gif oder .png lauten ";

                        
        // Ausmaße prüfen
                        
        $size getimagesize($_FILES['pic']['tmp_name']);
                            if (
        $size[0] > 150 OR $size[1] > 150)
                                
        $errors[] = "Die Datei darf maximal 150 Pixel breit und 150 Pixel hoch sein.";
                    }
                    
        // Dateigröße prüfen
                    
        if($_FILES['pic']['size'] > 0.2*1024*1024)
                        
        $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";

                    if(
        count($errors)){
                        echo 
        "Ihr Avatar konnte nicht gespeichert werden.<br>\n".
                             
        "<br>\n";
                        foreach(
        $errors as $error)
                            echo 
        $error."<br>\n";
                        echo 
        "<br>\n".
                             
        "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n";
                    }
                    else {
                        
        // Bild auf dem Server speichern
                        
        $uploaddir 'avatare/';
                        
        // neuen Bildname erstellen
                        
        $Name "IMG_".substr(microtime(),-8).".".$endung;
                        if (
        move_uploaded_file($_FILES['pic']['tmp_name'], $uploaddir.$Name)) {
                            
        $sql "UPDATE
                                            user
                                    SET
                                            Avatar = '"
        .mysql_real_escape_string(trim($Name))."'
                                    WHERE
                                            ID = "
        .$_SESSION['UserID']."
                                   "
        ;
                            
        mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

                            echo 
        "Ihr Avatar wurde erfolgreich gespeichert.<br>\n".
                                 
        "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n";
                        }
                        else {
                            echo 
        "Es trat ein Fehler auf, bitte versuche es später erneut.<br>\n".
                                 
        "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n";
                        }
                    }
                }
                
        // Avatar löschen
                
        elseif(isset($_POST['submit']) AND $_POST['submit'] == 'Avatar löschen'){
                    
        // Bildname des Avatars aus der Datenbank holen
                    
        $sql "SELECT
                                Avatar
                            FROM
                                User
                            WHERE
                                ID = '"
        .$_SESSION['UserID']."'
                           "
        ;
                    
        $result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                    
        $row mysql_fetch_assoc($result);
                    
        // Datei löschen
                    
        unlink('avatare/'.$row['Avatar']);
                    
        // Bildname des Avatars als leeren String setzen
                    
        $sql "UPDATE
                                User
                            SET
                                Avatar = ''
                            WHERE
                                ID = '"
        .$_SESSION['UserID']."'
                           "
        ;
                    
        mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                    echo 
        "Ihr Avatar wurde erfolgreich gelöscht.<br>\n".
                         
        "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n";
                }
             
                else {
                    
        $sql "SELECT Nickname,Email,Wohnort FROM User WHERE
                                 ID = '"
        .mysql_real_escape_string($_SESSION['UserID'])."' ";
                    
        $result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                    
        $row mysql_fetch_assoc($result);
                    echo 
        "<form ".
                         
        " name=\"Daten\" ".
                         
        " action=\"".$_SERVER['PHP_SELF']."\" ".
                         
        " method=\"post\" ".
                         
        " accept-charset=\"ISO-8859-1\">\n";
                    echo 
        "<span>\n".
                         
        "Für :\n".
                         
        "</span>\n";
                    echo 
        htmlentities($row['Nickname'], ENT_QUOTES)."\n";   
                    echo 
        " aus ";  
                    echo 
        "".htmlentities($row['Wohnort'], ENT_QUOTES)."\n";
                   echo 
        "</form>\n";
                }
            }
         
        echo 
        "<table cellspacing=10 bgcolor=#f87820><tr><td>Von<td>aus<td>Nr.<td>Artikel<td>Nummer<td>Eintrag vom </tr>";    
        echo 
        "<tr bgcolor=white><td bgcolor=#000 colspan=6></tr>";

         
        $result=mysql_query("SELECT a.Nickname, b.artikel FROM loginuser a INNER JOIN anzeigen b ON a.userID=b.id ORDER BY b.anzeigen WHERE userid = '".mysql_real_escape_string($_SESSION['UserID'])."'");                       
                                            
                                               




                                                                           

            
        $i=0;
            while( 
        $row=mysql_fetch_array($result) )
            {
                if(
        $i>0)
            {
                    



                                                         
                    
        echo 
        "</tr>";
                }                       

        echo 
        "<td>".$row['Nickname']."</td>";    
         echo 
        "<td>".$row['Wohnort']."</td>";
        echo 
        "<td>".$row['id']."&nbsp;</td>";
        echo 
        "<td><b><center>".$row['artikel']."&nbsp;</b>";  
        echo 
        "<td>".$row['nummer']."&nbsp;</td>";  
        echo 
        "<td><font size=1>".$row['date']."&nbsp;</td>";
                                                                


                                                
                

                
        $i++;
            }

                
        echo 
        "</table></table>";


        echo 
        "</body></html>";
        ?>


        So sieht es bei mir aus - wenn ich den select so halte :

        PHP-Code:
        $result=mysql_query("SELECT * FROM loginuser, anzeigen WHERE userid = '".mysql_real_escape_string($_SESSION['UserID'])."'"); 
        Ich möchte das ganze so, das nur die Artikel aufgelistet werden, die angemeldeter user eingestellt hat, oder alle Artikel, aber jeden nur einmal mit der Angabe des users, der sie eingegeben hat. Kann mir dabei wer helfen ?

        Kommentar

        Lädt...
        X