while/for - Schleifenproblem

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

  • while/for - Schleifenproblem

    Mit einer while-Schleife gebe ich Mitgliederdaten aus einer mysql-Datenbank aus.
    Nun gibt es ein paar Mitglieder die ein eigenes Logo besitzen.
    Die Zuordnung der Logos soll so einfach wie möglich sein, deshalb
    speichere ich die Logos in einem eigenen Verzeichnis
    das ich auslese und dem jeweiligen Mitglied zuordne. Der
    Bilddateiname entspricht der Webadresse des Mitglieds
    (ohne www u. de). Wie oder wo vergleiche ich nun die webadresse
    mit dem Bilddateinamen dass dies einwandfrei ist?
    Der nachfolgende Quellcode ist mein Ansatz - funktioniert aber nicht
    einwandfrei - manche Logos werden falsch zugeordnet.
    PHP-Code:
    /* Ordner mit Logos auslesen ***********/
    $Pfad="grafiken/mitgliederlogos";    //relativer Pfad zum Verzeichnis 

    if($handle=opendir($Pfad))
    {
     while(
    $file=readdir($handle))
     {
      if (
    $file!="." && $file!= "..")   //dateien mit "." oder ".." werden ausgefiltert
      
    {
         
    $file str_replace(".jpg","",$file);       //Bilddateiname ohne Dateierweiterung
         
    $logos[] = $file;
      }
     }
     
    closedir($handle);
    }
    $logoanzahl count($logos);


    while (
    $row mysql_fetch_array($result,MYSQL_ASSOC))
    {

             
    $name $row["Mitgliedname"];

             
    $homepage $row["homepage"];

    /**** Bildname fuer Logo ist webadresse ohne ' http://www. ' und ' .de ' **/
             
    $logo =  str_replace("http://www.","",$row["homepage"]);
             
    $logo str_replace(".de","",$logo);
             
    $logo str_replace(".com","",$logo);


          if (
    $logo==true){
             for(
    $i=0;$i<$logoanzahl;$i++)
        {
                 if( 
    $logo == $logos[$i]) {
                  
    $homepagelogo '<a href="' $homepage '><img 
    src="grafiken/mitgliederlogos/' 
    $logo '.jpg"></a><br>';
                 }
        }
           }
           else 
    $homepagelogo "";


    /*** Ausgabe Start ******/

    $text[]=
    <<<TEXT
             <hr noshade size=1 align="center" width="90%">
        <div class="links">
             <table border=0 width=500>
        <tr>
        <td  width="200">
                 <p><b>
    $name</b></p>
        </td>
        <td valign=bottom>
                      <p>
    $homepagelogo</p>
             </td>
             </tr>
        </table>
        </div>
    TEXT;
    }
    //end while 
    Zuletzt geändert von iru; 22.12.2004, 13:53.

  • #2
    1. Code umbrechen... (Oh gott, jetzt fang ich auch schon damit an...)

    2. Probier mal deinen Mitgliedern in der DB eine eindeutige ID zu geben und die Bilder
    dann nach der ID zu benennen, das machts glaub einfacher.
    Der Mensch ist ein Tier das zuviel denkt!

    Kommentar


    • #3
      wie webadresse? jedes Mitglied hat eine eigene Url ? oder liegt das bild irgendwo extern (z.b freenet.de)


      meine Idee wäre ->
      - beim Upload das bild umbenennen - eindeutige ID aus datum generiet
      - Bild in Ordner xyz ablegen und Dateinamen in eine Spalte beim user eintragen (z.B. bild_name).

      bei der Ausgabe dann die Spalte mit abfragen, wenn Bildname vorhanden, prüfen ob bild im ordner existiert (file_exist) und dann halt mit ausgeben.
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        Original geschrieben von haSta
        1. Code umbrechen... (Oh gott, jetzt fang ich auch schon damit an...)
        Erziehung schön das mal Andere Aufklärungsarbeit leisten

        Also 2 Schleifen eine für die DB und eine für die Bilder halte ich sagen wir so für unsinnig und performancelastig......

        Wie bereits gesagt:
        Sinnvoll wäre aus der DB einen Bildnamen zu entnehmen da man ohnehin die DB durchgeht und dann einfach überprüfen ob die File via dieses Bildnamen der aus der DB kommt existiert durch die Prüfung mit file_exist.........

        Dazu gewinnst du auch eine Art von Eindeutigkeit wo es deine angedeuteten Probleme nicht geben sollte.....

        move_uploaded_file();
        file_exists();
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          so ausführlich... ?

          Was ist denn heut los?

          Na dann:

          1. In der DB ne Spalte mit UserID anlegen (auto_increment)

          2. Das Hochgeladene Bild mit der UserID des Users, zu dem es gehört umbenennen & speichern.

          3. Beim DB Abruf der User die ID mit abrufen und mit $UserID".ext" als Bild einbinden.

          Ist das nicht am logischsten?

          Und mit auto_increment und unique in deiner UserDB kann nix mehr dobbeld sein.
          Der Mensch ist ein Tier das zuviel denkt!

          Kommentar


          • #6
            Original geschrieben von haSta
            so ausführlich... ?

            Was ist denn heut los?

            Na dann:

            1. In der DB ne Spalte mit UserID anlegen (auto_increment)

            2. Das Hochgeladene Bild mit der UserID des Users, zu dem es gehört umbenennen & speichern.

            3. Beim DB Abruf der User die ID mit abrufen und mit $UserID".ext" als Bild einbinden.

            Ist das nicht am logischsten?

            Und mit auto_increment und unique in deiner UserDB kann nix mehr dobbeld sein.
            hab jetzt einfach mal vorausgesetzt das die User (z.b. namen) nicht doppelt in der DB stehen und es eine eindeutige ID gibt.





            zum Bildnamen
            -> allein die userid würde ich nicht nehmen, ziehe da eher eine Erkennung aus Datum vor (jahr-monat-tag-std-min-sek+xy) mit speicherung des bildnamens zur userid, wenn dann später mal der Bedarf besteht mehrere Bilder zu jedem User zuzulassen, kann man das problemlos über eine zweite tabelle lösen (mit Userid - bildid/namen)
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              Merci für die Antworten.

              - Code ist nun umgebrochen
              - eine id ist in meiner db vorhanden aber die Daten werden mir in einer Textdatei geliefert und können sich in absehbarer Zeit wieder
              ändern. Deshalb den hickhack mit der domain.
              Wenn ich eine Spalte für die Logos anlegen würde müsste ich diese bei einer Änderung ständig überprüfen.

              Dass 2 Schleifen nicht gerade gnial ist war mir auch klar. Aber ich kam nicht auf die simple Idee mit file_exists() womit mein Problem behoben ist - DANKE Payne_of_Death

              DANKE an alle

              Kommentar

              Lädt...
              X