• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

fotoalbum php mysql

Calypto

Neues Mitglied
hallo leute!

ich bin neu auf dem Gebiet und habe paar Fragen bitte helft mir.

ich bin gerade dabei an einer Website zu basteln mit einem Login system.
Wenn sich der User anmeldet dann kann er sein Fotoalbum sehen, also datein uploaden, löschen usw. sie sollen sich in einem bestimmten format übermittelt werden (jpeg) und auf eine größe gestutzt werden zb. 150x150 px und wenn man diese anklickt dann kann man das bild vergrößern lassen auf zb. 400x400 px wobei das seitenverhältnis des Bildes nicht zerstört werden darf, sprich es soll sich dadurch nicht in die breit oder höhe ziehen. darauf soll jeder user zugreifen können, der eingeloggt ist.

könnt ihr mir sagen wie ich so etwas mache?
ich möchte keine freeware programme (da lizenzen etc, andere oberfläche usw ) zu benutzen wäre.
ich möchte es auf meine website anpassen.
und ein Foto (das Hauptbild bzw. das erste das man rauf lädt) soll dann sofort nach dem Login auf der "home" seite angezeigt werden.

ich hoffe ich hab mich verständlich ausgedrückt :p
ich habe bereits ein paar programme ausprobiert, aber es ist alles nicht wirklich so wie ich es haben will.. :(

Das Hauptbild selbst muss nicht vergrößerbar sein, da reicht es wenn es bei 150x150 px bleibt.
Es soll nur für jeden User, der eingeloggt ist, sichtbar sein.

für mich als laie - ist das nicht realisierbar, daher meine bitte an euch ob ihr mir dabei helfen könnt.
 
Werbung:
Im Prinzip ganz einfach.

Für den Upload benötigst du die Funktion move_uploaded_file().
Mit basename() entfernst du die ganzen Pfadangaben von BIldern, sprich aus:

desktop/blabla/images/deinBild.jpg wird mit der Funktion basename() deinBild.jpg

Ansonsten ist das assoziative Array $_FILES sehr wichtig.
Damit kommst du an den namen des Bildes und auch die Size kannst du dir damit abfragen.

Ein kleines Beispiel:
PHP:
echo '<h2>Neues Image hochladen:</h2>';
echo '<form action="" method="post" enctype="multipart/form-data">'; 
echo '<input type="file" name="image" /><br />';
echo '<input type="submit" name="image_upload_submit" value="Hochladen" />';
echo '</form>';

// --- Upload handling
if (isset($_POST['image_upload_submit']))
{
    $grafikformatPos = strpos(basename($_FILES["image"]["name"]), '.');
    $grafikformat = substr(basename($_FILES["image"]["name"]), $grafikformatPos);
    if ($grafikformat == ".jpeg" || $grafikformat == ".jpg" || $grafikformat == ".png" || $grafikformat == ".gif")
    { 
            move_uploaded_file($_FILES["image"]["tmp_name"], "images/".basename($_FILES["image"]["name"]));
            header("Location: index.php?upload=success");
    }
    else
    {
        echo '<p>Falsches Grafikformat!</p>';
    }    
}

Mit strpos wird erstmal gekuckt, wo der erste Punkt im Namen des Bildes vorkommt. Der Punkt trennt ja das Grafikformat vom Bildnamen (zB image.jpg). strpos() hat als Rückgabewert eine Integer. Bei image.jpg wäre das Ergebnis von strpos() 6, da an Stelle 6 der Punkt steht. Diese Integer speichern wir in $grafikformatPos
Mit substr schneiden wir uns alles ab dem Integer aus, welcher ja in $grafikformatPos drin steht.

In der 2. if-Bedingung wird nun einfach geprüft, welches Grafikformat das hochgeladene Bild hat. Ist es .jpeg, .jpg, .png oder .gif wird das Bild mit move_uploaded_file ins Verzeichnis /images/ hochgeladen.


Mit unlink("images/bildname.grafikformat"); kannst du Bilder wieder aus dem Verzeichnis images rauslöschen.
Wenn du die Bilder auslesen möchtest, könntest du erstmal mit scandir jedes BIld in einem Array speichern, mit count überprüfen, wieviele Werte das Array hat und mit einer for Schleife gehst du nun alle Bilder-URLS durch und gibst sie im <img>-Element aus.

PHP:
$images = scandir('../images');
$countImages = count($images);

for ($i = 0; $i < $countImages; $i++)
{
    if ($images[$i] != '.' && $images[$i] != '..')
    echo '<img src="www.deineDomain.de/images/"'.$images[$i].' alt="'.$images[$i].'" />';
}

So, jetzt kannst du BIlder hochladen, sie löschen und sie ausgeben.

Verkleinern kannst du die Bilder ja eingetlich auch über den HTML-Code.
Mit dem width und height Attribut im Img-Element kannst du die Größe anpassen.

Grüße,
Nico
 
für nicht so verständnisvolle ;) wieviele dateien muss ich erstellen zwei oder kopier ich das ganze in mein fotoalbum.php UND was noch wichtig ist. der der sich einloggt kann dann seine bilder hochladen und die bleiben dann auch oben oder?
ich muss vielleicht erwähnen, dasich mit mysql noch nichts gemacht habe, aber dazu später.

zb ich bin eingeloggt und du bist eingeloggt und wir laden bilder hoch die landen dann in dem fotoalbum von dir und von mir getrennt je nach login richtig? mit dem was du mir zusammen gestellt hast... sorry bin da echt noch nicht so fix mit dem ganzen - bin am lernen.

achja.. und noch was. diese bilder müssten dann von den anderen eingeloggten usern auch sichtbar sein
 
Zuletzt bearbeitet:
Werbung:
Naja, wieviele Seite lässt sich schwer sagen. Kannst es auf 3 Aufteilen, oder mehr, man kann es aber genau so gut auch in eine Schreiben. Also es würde reichen, wenn du es in fotoalbum.php reinschreibst.


der der sich einloggt kann dann seine bilder hochladen und die bleiben dann auch oben oder?
Was genau meinst du mit "bleiben oben"? Du meinst ob sie am Server bleibe? Ja, die bleiben oben, bis du Sie vom Server runterhaust oder wenn halt der eingeloggt User sie löscht. Die Löschfunktion kann man wie gesagt mit unlink() umsetzen.

Die Bilder, die eingeloggte User hochladen, würde ich alle in einen Ordner hochladen (wie zB images).
Beim Upload eines Bildes würde ich den Namen der Bilder in die Datenbank eintragen, zusätzlich trägst du auch noch den Namen des Users, der das Bild upgeloadet hat in eine angrenzene Spalte in deiner MySQL-DB.
So kann man dann schnell feststellen welches Bild zu welchem User gehört.

Die Tabelle sieht dann zB so aus:

Code:
|-----------|--------------|
|imagename  | user         |
|-----------|--------------|
|bild1.jpg  | maxi         |
|bild2.png  | spok         |
|bild3.gif  | sissi        |
----------------------------
Und mit folgendem Code gibst du nun die Bilder von zB sissi aus:
PHP:
$sql = "SELECT `imagename` FROM `fotoalbumTabelle` WHERE `user` = 'sissi'";

$query = mysql_query($sql);

while ($img = mysql_fetch_object($query))
{
    echo '<img src="http://www.domain.de/images/'.$img->imagename.'" alt="'.$img->imagename.'" />';
}
 
ich hab das jetzt mal ausprobiert und alles in die fotoalbum.php kopiert jetzt hab ich es am server getestet und folgendes rausbekommen

code im fotoalbum.php
Code:
<?php
echo '<h2>Neues Bild hochladen:</h2>';
echo '<form action="" method="post" enctype="multipart/form-data">'; 
echo '<input type="file" name="image" /><br />';
echo '<input type="submit" name="image_upload_submit" value="Upload" />';
echo '</form>';

// --- Upload handling
if (isset($_POST['image_upload_submit']))
{
    $grafikformatPos = strpos(basename($_FILES["image"]["name"]), '.');
    $grafikformat = substr(basename($_FILES["image"]["name"]), $grafikformatPos);
    if ($grafikformat == ".jpeg" || $grafikformat == ".jpg" || $grafikformat == ".png" || $grafikformat == ".gif")
    { 
            move_uploaded_file($_FILES["image"]["tmp_name"], "images/".basename($_FILES["image"]["name"]));
            header("Location: fotoalbum.php?upload=success");
    }
    else
    {
        echo '<p>Falsches Grafikformat!</p>';
    }    
}
?>
<?php $images = scandir('/images/');
$countImages = count($images);

for ($i = 0; $i < $countImages; $i++)
{
    if ($images[$i] != '.' && $images[$i] != '..')
    echo '<img src="ftp://....../...../images/"'.$images[$i].' alt="'.$images[$i].'" />';
}  

?>
<?php $sql = "SELECT `imagename` FROM `fotoalbumTabelle` WHERE `user` = 'sissi'";

$query = mysql_query($sql);

while ($img = mysql_fetch_object($query))
{
    echo '<img src="http://www.domain.de/images/'.$img->imagename.'" alt="'.$img->imagename.'" />';
}  

?>

in mysql 5.0 habe ich folgendes gemacht

Code:
CREATE TABLE `Fotoalbumtabelle` (
`imagename` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`user` VARCHAR( 30 ) NOT NULL ,
PRIMARY KEY ( `imagename` )
) TYPE = MYISAM ;

und übern ftp server bekomm ich folgendes wieder:

Code:
Neues Bild hochladen:'; echo '';  echo '
'; echo ''; echo '';  // --- Upload handling if (isset($_POST['image_upload_submit'])) {     $grafikformatPos = strpos(basename($_FILES["image"]["name"]), '.');     $grafikformat = substr(basename($_FILES["image"]["name"]), $grafikformatPos);     if ($grafikformat == ".jpeg" || $grafikformat == ".jpg" || $grafikformat == ".png" || $grafikformat == ".gif")     {              move_uploaded_file($_FILES["image"]["tmp_name"], "images/".basename($_FILES["image"]["name"]));             header("Location: fotoalbum.php?upload=success");     }     else     {         echo 'Falsches Grafikformat!
';     }     } ?> '; }    ?> imagename.'" alt="'.$img->imagename.'" />'; }    ?>

und das am localhost

Code:
[B]Neues Bild hochladen:[/B]



[B]Warning[/B]:  scandir(/images/,/images/) [[URL="http://localhost/l4f/function.scandir"]function.scandir[/URL]]: Das System kann die angegebene Datei nicht finden. (code: 2) in [B]..:\....\...\...\Fotoalbum.php[/B] on line [B]98[/B]

[B]Warning[/B]:  scandir(/images/) [[URL="http://localhost/l4f/function.scandir"]function.scandir[/URL]]: failed to open dir: No such file or directory in [B]:::\....\...\...\Fotoalbum.php[/B] on line [B]98[/B]

[B]Warning[/B]:  scandir() [[URL="http://localhost/l4f/function.scandir"]function.scandir[/URL]]: (errno 2): No such file or directory in [B]..:\...\...\...\Fotoalbum.php[/B] on line [B]98[/B]
[IMG]ftp://[email protected]/Homepage/images/[/IMG]
[B]Warning[/B]:  mysql_fetch_object(): supplied argument is not a valid MySQL result resource in [B]..:....\...\...\Fotoalbum.php[/B] on line [B]112
[/B]

Der Login funktioniert ca. nach dem prinzip dann..
Quakenet/#php Tutorial - de - Loginskript

passt das zusammen oder wie?
ich bewunder euch wirklich das ihr das könnt...
 
hallo!
wäre nett wenn ihr mir hier helfen könntet.. ich seh nur noch schwarz.

so schauts bei mir in der fotoalbum.php aus:
Code:
<h2>Dein Fotoalbum -User!-</h2>
<table id="fotoalbum" border="0" cellspacing="15" cellpading="1" width="100" height="150">
    <tr>
        <td>        <?php $images = scandir('images/');
                    $countImages = count($images);
                    
                    for ($i = 0; $i < $countImages; $i++)
                    {
                        if ($images[$i] != '.' && $images[$i] != '..')
                        echo '<img src="images/'.$images[$i].'" alt="'.$images[$i].'" />';
                    }
                    
                    ?>
                            <?php
                    echo '<form action="" method="post" enctype="multipart/form-data">';
                    echo '<input type="file" name="image" /><br />';
                    echo '<input type="submit" name="image_upload_submit" value="Upload" />';
                    echo '</form>';
                    
                    // --- Upload handling
                    if (isset($_POST['image_upload_submit']))
                    {
                        $grafikformatPos = strpos(basename($_FILES["image"]["name"]), '.');
                        $grafikformat = substr(basename($_FILES["image"]["name"]), $grafikformatPos);
                        if ($grafikformat == ".jpeg" || $grafikformat == ".jpg" || $grafikformat == ".JPG" || $grafikformat == ".png" || $grafikformat == ".gif")
                        {
                                move_uploaded_file($_FILES["image"]["tmp_name"], "images/".basename($_FILES["image"]["name"]));
                                #header("Location: index.php?upload=success");
                        }
                        else
                        {
                            echo $grafikformat.' <p>Falsches Grafikformat!</p>';
                        }
                    }
                    ?></td>
        <td><img name="Bild2" src="" width="100" height="150" alt="" style="background-color: #666666" /></td>

auf localhost passt es wird es mir angezeigt nur das bild ist nicht zusehen. jedoch der dateiname der raufgeladen wurde "blabla.jpg" KEIN BILD

und über FTP zeigt er mir das hier an:
Code:
';                     }                                          ?> 							';                     echo '
';                     echo '';                     echo '';                                          // --- Upload handling                     if (isset($_POST['image_upload_submit']))                     {                         $grafikformatPos =  strpos(basename($_FILES["image"]["name"]), '.');                         $grafikformat =  substr(basename($_FILES["image"]["name"]), $grafikformatPos);                         if ($grafikformat == ".jpeg" || $grafikformat ==  ".jpg" || $grafikformat == ".JPG" || $grafikformat == ".png" ||  $grafikformat == ".gif")                         {                                  move_uploaded_file($_FILES["image"]["tmp_name"],  "images/".basename($_FILES["image"]["name"]));                                 #header("Location:  index.php?upload=success");                         }                         else                         {                             echo $grafikformat.' Falsches Grafikformat!
';                         }                     }                     ?>

wenns euch nichts ausmacht, wäre es toll, wenn ihr meinen thread lesen könntet und mir so zu dem Ergebnis HELFEN könntet ev. auch wie ich das in mysql einstell (ich weiss hier ist PHP, aber es hängt zusammen und ich muss nichts doppelt posten). Wenn ich es besser wüsste, wäre ich nicht auf eure Hilfe angewiesen. Darum BITTE!
 
Werbung:
Zurück
Oben