Ankündigung

Einklappen
Keine Ankündigung bisher.

Userbilder sortieren

Einklappen

Neue Werbung 2019

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

  • Userbilder sortieren

    Hallo Leute,

    ich habe da ein Problem:

    Auf meiner Page können die User Bilder hochladen. Diese werden im Filesystem in einem eigenen Ordner für jeden User gespeichert. Wenn der User die page "mypics" öffnet wird das Verzeichnis durchgeschaut und Bild für Bild ausgegeben.

    Wie kann ich das ganze denn am geschicktesten anstellen, dass der User seine Bilder in der gewünschten Reihenfolge sortieren kann. Er müsste ja dazu quasi die Files umbennenen, so dass der file-befehl sie in andere reihenfolge ausliest, oder?

    Was habt ihr für ideen, anregungen etc.

    DANKE


  • #2
    Du kannst z.B. die Bilder (bzw den Pfad) in einer DB-Tabelle speichern und diese zusätzlich mit einem Attribut "Sortkriterium" oder "Stichwort" (oder beides) ergänzen. Dann liest du die Bilder entsprechend sortiert aus der DB. Das Ganze geht natürlich auch mit Textfiles, ist dann aber etwas aufwendiger.
    Gruss
    L

    Kommentar


    • #3
      Kannst auch erstmal die Dateinamen und Attribute in ein Array einlesen und dieses dann sortieren.

      Kommentar


      • #4
        Okay, zu beiden Lösungen hab ich Fragen:

        1.
        Wenn ich die Namen des Bildes bzw. den Pfad in der DB speicher: Wie sortiert ich dann die Bilder??? Wie sag ich der DB welches Bild sie als erstes beim select ausspucken soll???

        2.
        Wenn alle Bilder im Array stecken: Wie sortier ich dann im Array um?

        Ihr seht: Ich steh grad echt auf der Leitung. Hat vielleicht einer von euch ein konkretes Beispiel?

        Kommentar


        • #5
          Das Auslesen dürfte das kleinere Problem sein:
          Code:
          SELECT bild 
              FROM bilder
              WHERE user = '$user'
              ORDER BY sortkriterium;
          Das Hauptproblem ist nach meiner Meinung aber, die Reihenfolge überhaupt in die DB zu bringen. Dazu braucht es ein eigenes Formular, in dem die Bilder aufgelistet werden (ev. mit Thumbnails) und wo der Benutzer dann die Reihenfolge seiner bilder festlegen kann. Und diese muss dann in der Datenbank abgelegt werden. Es bedingt auch, dass beim Upload immer ein DB-Eintrag erfolgt.
          Gruss
          L

          Kommentar


          • #6
            Soweit okay.

            Aber wie schreib ich die reihenfolge in die DB?

            Kommentar


            • #7
              So als Anregung ein kleines Beispiel, bei dem es allerdings noch einige Probleme gibt.
              DB:
              Code:
              CREATE TABLE `bildlist` (
                `id` int(10) unsigned NOT NULL auto_increment,
                `user` varchar(20) NOT NULL default '',
                `name` varchar(100) NOT NULL default '',
                `stichwort` varchar(50) NOT NULL default '',
                `sortierung` int(11) NOT NULL default '0',
                PRIMARY KEY  (`id`),
                UNIQUE KEY `name_idx` (`user`, `name`)
                UNIQUE KEY `sort_idx` (`sortierung`)
              ) TYPE=MyISAM
              PHP:
              Code:
              <?php
                 	include 'db_connect_test.inc';
              	
              	if (isset($_POST['go']))
              	{
                 		@import_request_variables('cgp');
                 		for ($i = 0;$i < count($sort); $i ++)
                 		{
                          $sql = "UPDATE bildlist SET sortierung = $sort[$i]
                                  WHERE user = '$user' and name = '$bild[$i]'";
                          mysql_query($sql) || die(mysql_error());
              	    }
              	}
              	else
              	{
              	    $dir = "./bilder";
                      
                      echo "<form method='post'>\n";
                      echo "<table cellspacing='5'>\n";
                      echo "<tr><th>Name<th>Bild<th>Reihenfolge</tr>\n";
                      $sql = "SELECT name, sortierung FROM bildlist WHERE user = '$user' ORDER BY 2";
                      $res = mysql_query($sql) or die(mysql_error());
                      while($row = mysql_fetch_object($res))
                      {
                          $thumb = "../library/phpThumb.php?src=$dir/$row->name&w=80&h=80";
                          echo "<tr><td>$row->name<td>[img]$thumb[/img]name' border=0 />";
                          echo "<td><input name='sort[]' size='10' value='$row->sortierung' /></tr>\n"; 
                          echo "<input type='hidden' name='bild[]' value='$row->name' />\n";
                      }
                      echo "</table>\n";
                      echo "<input type='submit' name='go' value='Speichern'\n";
                      echo "</form>\n";
                  }
              ?>
              Dazu muss die "phpThumb" installiert sein. Ausserdem ist das Problem der doppelten Einträge nicht gelöst. Und "$user" muss natürlich irgendwo übergeben werden.
              Und beim Upload eines neuen Bildes machst du etwa
              Code:
              SELECT max(sortierung) as sort from bildlist;
              mysql_query(....
              mysql_fetch_object(...
              INSERT INTO bildlist (user, name,  sortierung) VALUES ('$user', '$bildname', $row->sort + 1);
              Gruss
              L

              Kommentar


              • #8
                Zitat von cretter
                Soweit okay.

                Aber wie schreib ich die reihenfolge in die DB?
                Mit ASC oder DESC

                Kommentar


                • #9
                  Zitat von Thice
                  Zitat von cretter
                  Soweit okay.

                  Aber wie schreib ich die reihenfolge in die DB?
                  Mit ASC oder DESC
                  Könntest du das bitte noch ein bisschen ausführlicher erklären?

                  Kommentar


                  • #10
                    Code:
                    SELECT ...... FROM .... ORDER BY `filename` [ASC | DESC]
                    ASCending = aufsteingend (standard)
                    DESCending = absteigend
                    [] und | sind natürlich nicht mit anzugeben.

                    Kommentar


                    • #11
                      hy
                      gib jeden bild ne Spalte Sortierung in der DB!

                      Beim klick auf hoch oder runter tauscht du einfach die Zahlen in der Spalte aus!

                      Beim Auslesen machst du einfach order by Sortierung!

                      Kommentar


                      • #12
                        1. wie kommst du dazu meine Postings zu kopieren!
                        2. wieso machst du crosposting
                        3. was soll das jetzt bringen?? is doch alles gesagt was du brauchst. Ein wenig eigeninitiative dürfen wir wohl erwarten!!!!!!!

                        http://www.dhsmedia.de
                        http://www.deutsch-im-blick.de

                        Kommentar


                        • #13
                          @crossposting: ich dachte eben dass im Profiforum bessere Antworten kommen

                          @postingkopieren: damit ich heute abend an der stelle nachlesen kann was du vorher im anderen forum getippt hast. so finde ich es wieder.


                          @eigeninitiative: kann ich erst heute abend umsetzten.

                          warum tippst du in rot kid01?

                          Kommentar

                          Lädt...
                          X