Anfänger Schleifenproblem!?

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

  • Anfänger Schleifenproblem!?

    Hallo zusammen,

    ich hole mir aus einer SQL Datenbank 2 Felder (einmal Dateinamen und Dateipfad). Ich möchte mir dynamisch eine Tabelle erstellen lassen, in der als Link der Pfad und der Name zusammengefügt wird.

    PHP-Code:
          $query = "SELECT Pfad, d.Name FROM Dateien d, Berechtigungen b, Benutzer u WHERE '$loginname' = b.login and b.datid = d.datid";
          $result = mysql_query($query)
          OR die(mysql_error()); 
    .
    .
    .
      <? 
             while ($daten = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    foreach ($daten as $value) {
                        echo $value;
                        $link = "$value[pfad] $value[Name]";
                    
            ?>            
            <td rowspan=5 align = "center" valign = "middle"><a href="<? echo $value ?>"><img src="btnexcel.gif" border=0></a></td>
            <?
                    }
                }        
            ?>
    Wenn ich mir das Value ausgeben lasse, dann habe ich alle Werte doppelt.
    Er nimmt sich pro Durchlauf nur einen Wert aus dem Array, er soll sie aber als Paar nehmen. So wie ich das mit dem zusammenfügen versucht habe funktioniert das auch nicht richtig und mit Value habe ich einmal den Pfad als Link und einmal den Dateinamen.
    Da ist bestimmt ein richtig großer Denkfehler drinnen oder?

    Gruß
    timsen

  • #2
    Re: Anfänger Schleifenproblem!?

    Original geschrieben von timsen
    Da ist bestimmt ein richtig großer Denkfehler drinnen oder?
    einer?!

    du weißt der variablen $link nen wert zu, aber wo verwendest du $link?

    in $daten hast du zwei felder; einmal NAME und einmal PFAD.
    mit foreach gehst du die felder einzeln durch, schreibst also einmal nur den namen hin und einmal nur den pfad.

    mach's beser so:
    PHP-Code:
    while ($daten mysql_fetch_array($resultMYSQL_ASSOC))
    {
        
    $link=$daten['Pfad'].'/'.$daten['Name'];
        echo 
    '<td rowspan="5"><a href="'.$link.'"><img src="btnexcel.gif" alt="" /></a></td>';

    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      wozu das foreach?
      PHP-Code:
      while ($daten = mysql_fetch_array($result, MYSQL_ASSOC)) {
                      echo "<td rowspan=5 align = \"center\" valign = \"middle\"><a href=\"<? echo $value["pfad"] ?>\"><img src=\"btnexcel.gif\" border=0></a></td>";
      }
              ?>
      Zuletzt geändert von graf; 28.03.2003, 14:22.

      Kommentar


      • #4
        Danke Euch, das klappt schonmal ganz gut mit dem Link.
        Das ich das zusammenfügen versucht habe und dann rausgenommen habe, weil es nicht funktioniert hat, hatte ich ja geschrieben.

        Ich hab allerdings immer noch das Problem, das ich alles doppelt ausgegeben bekomme.

        Kommentar


        • #5
          bei wessen variante?
          bei meiner nich und bei der von graf auch nich (außer du hättest die daten auch doppelt in der datenbank stehen)
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Bei Deiner, ich habe die Daten aber wirklich nur einmal in der Tabelle!

            Kommentar


            • #7
              glaub ichnich, ich gebe jeden datensatz aus der tabelle ja nur einmal aus.

              mach mal nur so zum spaß das hier:
              PHP-Code:
              while ($daten mysql_fetch_array($resultMYSQL_ASSOC))
              {
                  
              print_r($daten);
                  echo 
              '<p />';

              hast du doppelte einträge?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Doppelt kann ja nur am Query liegen.

                Ich weiß nicht, obs n Problem ist, wenn Pfad keinen Tabellennamen davor hat, aber WO benötigst du die Tabelle Benutzer?

                $query = "SELECT Pfad, d.Name FROM Dateien d, Berechtigungen b, Benutzer u WHERE '$loginname' = b.login and b.datid = d.datid";

                Ich denke, du benötigst einen JOIN, da du einmal Pfad + Namen holst, und dann wahrscheinlich noch Namen + Pfad.

                Kommentar


                • #9
                  ups mom

                  Kommentar


                  • #10
                    @Tobi
                    http://php-resource.de/forum/showthr...threadid=18048

                    aber so wie's aussieht, hat timsen die abfrage abgeändert, so dass die beutzer-tabelle nicht mehr gebraucht wird
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Wenns schon n JOIN war, warum denn jetzt nicht mehr? Welchen Sinn verfolgst du damit?

                      Kommentar


                      • #12
                        Den Join habe ich nicht benutzt, ich habe es jetzt mit dem Join Vorschlag versucht bekomme aber immer eine Fehlermeldung das ich einen Fehler im Syntax gemacht habe.

                        PHP-Code:
                        $query "SELECT  Pfad, d.Name, FROM  Benutzer U LEFT OUTER JOIN Berechtigungen B USING '$loginname' LEFT OUTER JOIN Dateien D USING(datid)"
                        @mrhappiness
                        Ich bekomme auch doppelte einträge heraus, habe aber nur einen in der Tabelle. Also liegts an der Query wie TobiaZ sagte.

                        @TobiaZ
                        Die Benutzertabelle brauch ich aber wirklich nicht, da ich den Login aus einer Sessionvariablen nehme und mit ihr vergleiche.
                        Zuletzt geändert von timsen; 28.03.2003, 15:15.

                        Kommentar


                        • #13
                          ich seh grad, dass du andauernd Probleme mit G/k-Schreibung hast. Vielleicht solltest du dir in deinem Fall mal durchgängige kleinschreibung angewöhnen.

                          Kommentar


                          • #14
                            sind zwei outer joins echt nötog?

                            Kommentar


                            • #15
                              inner joins sollten genügen.

                              Doppelte Einträge kann man mit DISTINCT oder GROUP BY vermeiden.

                              Hach ja ... bei den Schnürsenkeln klappt das aber mit den Schleifen, oder?
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X