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

Bilder Upload (MULTI)

Werbung:
PHP:
//in der for schleife
$location +=*"avatare/$name"+":*#*:";
//erst nach der for schleife $location in die datenbank schreiben!!!

ich hoffe das erklärt's


Edit:

der beitrag von mermshaus war erst nach dem absenden dieses beitrags da. bin mobil on da geht das tippen nicht so schnell.
 
So bräuchte noch mal kurz hilfe bei dem beispiel von mermshaus...

Ich hab ja "articel ID" und "image ID" die können ja A.I sein oder ? Ja...

Aber.. Wenn jemand einen Artikel schreibt bekommt der artikel z.B die ID 20...
Wie bekomm ich es dann hin , das bei image hier >article_id< bei jedem dazugehöhrigen Bild die ID 20 eingetragen wird ?
Daran scheiter ich derzeit ..
 
Werbung:
Ich gehe mal von mermshaus Tabelle aus:
Code:
image :  
[FONT=system]id | article_id | path        
 ----+------------+-----------          
 1 |             1 | bild1.jpg           
 2 |             1 | bild2.jpg           
 3 |             1 | bild3.jpg[/FONT]
Bekannt muss die Artikelid sein.
In der obigen Tabelle ist id ein Autowert, dann kannst du in die Schleife nach jedem Bild folgendes einbauen:

PHP:
$sql = 'INSERT INTO `'.$db_name.'`.`image` (`id`, `article_id`, `path`) VALUES (\'\', \''.$article_id.'\', \''.$name.' \');';
$ergebnis = mysql_query($sql);


Deine Artikelid kannst du mit mysql_insert_id auslesen: MySQL :: MySQL 5.0 Reference Manual :: 19.8.10.3 How to Get the Unique ID for the Last Inserted Row
Nachdem du also deinen Artikel gespeichert hast rufst du
PHP:
$article_id = mysql_insert_id();
auf

der gesamte Code sieht also ca so aus:
PHP:
 <?PHP
session_start();

include("header.php");
include("mysql.php");

$_SESSION['username'] = 'abc';


if($_POST['submit'])
{
    // hier dein Insert für den Artikel
    $article_id = mysql_insert_id();

    for($i=1;$i<=count($_FILES['myfile']['name']);$i++)
    {
        //get file attributes
        $name = $_FILES['myfile']['name'][$i];
        $tmp_name = $_FILES['myfile']['tmp_name'][$i];
        //start upload
        $location = "avatars/$name";
        move_uploaded_file($tmp_name,$location);

        if(file_exists($location))
        {
            $sql = 'INSERT INTO `'.$db_name.'`.`image` (`id`, `article_id`, `path`) VALUES (\'\', \''.$article_id.'\', \''.$name.' \');';
            $ergebnis = mysql_query($sql);
        }
        else
        {
            echo "Kein File ".$name." gefunden....<br>";
        }
    }
    echo "Fertig..!";
    exit;

}

if($_SESSION['username'])
{

echo"
Profilbild &aumlndern:<br>
<br>
<form action='upload2.php' method='POST' enctype='multipart/form-data'>
File: <input type='file' name='myfile[1]'><br />
File: <input type='file' name='myfile[2]'><br />
<input type='submit' name='submit' value='Upload!'>
</form>

";
}

else
{
    echo "Please Login";
}

PS
$db_name natürlich noch durch deinen Datenbank Namen ersetzen.
Setzt du im query statt $name $location ein, wird der Pfad zum Bild mitgespeichert, $name nimmt nur den Bildnamen mit.
 
Zuletzt bearbeitet von einem Moderator:
wow das ist ja prima !

Dennoch noch eine Frage...

Ich hab mein Formular. Da einen Link (POPUP) mit dem namen , bild hochladen. Klick ich drauf kommt eben die Upload form...

Mein Problem ist nur, da der Artikel noch nicht in die DB eingetragen ist , auch keine ID zugewiesen ist also keine Artikel ID....

Jetzt steh ich vor nem Problem....

Kann man die 2 auch zusammenfügen sodass in dem Formular eben ein Input feld ist für die Bilder ?


Das obige Script :

PHP:
<?php


include("header.php");
include("mysql.php");


$username = $_SESSION['username'];


if($_POST['submit'])
{
    // hier dein Insert für den Artikel
    $article_id = mysql_insert_id();

    for($i=1;$i<=count($_FILES['myfile']['name']);$i++)
    {
        //get file attributes
        $name = $_FILES['myfile']['name'][$i];
        $tmp_name = $_FILES['myfile']['tmp_name'][$i];
        //start upload
        $location = "avatars/$name";
        move_uploaded_file($tmp_name,$location);

        if(file_exists($location))
        {
            $sql = 'INSERT INTO `boerse`.`image` (`id`, `article_id`, `path`) VALUES (\'\', \''.$article_id.'\', \''.$name.' \');';
            $ergebnis = mysql_query($sql);
        }
        else
        {
            echo "Kein File ".$name." gefunden....<br>";
        }
    }
    echo "Fertig..!";
    exit;

}

if($_SESSION['username'])
{

echo"
Profilbild &aumlndern:<br>
<br>
<form action='upload2.php' method='POST' enctype='multipart/form-data'>
File: <input type='file' name='myfile[1]'><br />
File: <input type='file' name='myfile[2]'><br />
<input type='submit' name='submit' value='Upload!'>
</form>

";
}

else
{
    echo "Please Login";
}


Meine Artikel_schreiben.php (die form):
PHP:
<?php 
include ('header.php');
error_reporting(0);
if($_SESSION['username']) 
 
 
 
 
echo " 
<div id='content'>
<form action='jetzt_tauschen.php' method='POST'>
 <table>
 
<tr> 
    <td>
    Bezeichnung:
    </td>
    <td>
     <input name='bezeichnung' value='' type='text' >*<br />
    </td> 
</tr>
    

<tr> 
    <td>
    Kategorie:
    </td>
    <td>
     <input name='kategorie' value='' type='text' >*<br />
    </td>
</tr>


<tr> 
    <td>
    Zustand:
    </td>
    <td>
    <input name='zustand' value='' type='text' >*<br />
    </td> 
</tr>


<tr> 
    <td>
    Tauschpreis:
    </td>
    <td>
    <input name='tauschpreis' value='' type='text' >*<br />
    </td>
</tr>


<tr> 
    <td>
    Produktbilder:
    </td>
    <td>
<a href='upload2.php' onclick='FensterOeffnen(this.href); return false'>Bilder hinzuf&uumlgen</a><br />
    </td>
</tr>



<tr> 
    <td>
    Beschreibung:
    </td>
    <td>
    <textarea name='beschreibung' cols='30' rows='10' value='' type='textarea' ></textarea>*<br />
    </td> 
</tr>


 </table>
 <input type='submit' value='OK'>
</form>


<br />
Die mit einem * gekennzeichneten Felder sind Pflichtfelder.

"; 


 
 
else 
include('loginform.php');

echo"</div>";


include('footer.php');
?>

Und zum eintragen in die DB:

PHP:
<?php
include ('header.php');
 
 
 





//Variablen zuweisen
$bezeichnung = mysql_real_escape_string ($_POST["bezeichnung"]);
$kategorie = mysql_real_escape_string ($_POST["kategorie"]);
$zustand = mysql_real_escape_string ($_POST["zustand"]);
$tauschpreis= mysql_real_escape_string ($_POST["tauschpreis"]);
$beschreibung = mysql_real_escape_string ($_POST["beschreibung"]);
$username = $_SESSION['username'];  

if (($bezeichnung == "") OR ($kategorie == "") OR($zustand == "")) {
        echo "Fehler: Eintrag unvollständig.";
        die; 
}



//Verbindung herstellen
include ('mysql.php');



//Daten in DB speichern
$sql_befehl = mysql_query("INSERT INTO `artikel` (`bezeichnung`, `kategorie`, `zustand`, `tauschpreis`, `beschreibung`, `username`) VALUES ('".$bezeichnung."', '".$kategorie."', '".$zustand."', '".$tauschpreis."', '".$beschreibung."', '".$username."')");  
if($sql_befehl)
{ echo "Ihr Eintrag wurde hinzugef&uumlgt."; }

//Verbindung beenden
mysql_close($connect); 

 

include ('footer.php');

?>

wenn ich nun , beide zusammenfügen könnte wäre es perfekt ....
 
Warum sollte man das nicht zusammenfügen können.
Oder erst das Thema erstellen und nur wenn es ein Thema gibt, den Upload-Button sichtbar machen (was die last_insert_id Abfrage obsolet macht).

Wie man die Inserts für Artikel und Bilder zusammenfügen kann, habe ich dir ja schon gepoostet, du musst also nur die beiden Formulare in einem gemeinsamen Zusammenführen.
 
Werbung:
Hmm ja beim zusammenfügen bekomm ich leider immer nen error...

Naja werd schon nen weg finde. Danke für deine bemühungen :)

EDIT: Ahhhh..

Bekomme jetzt diese ausgabe :
Last inserted record has id 61

Kann ich nun "mysql_insert_id()" weiter verarbeiten für das bild ?

Hmm... Ich kann nach dem klick auf eintragen die letzte ID auslesen....

aber wenn ich dann noch das bild hochlade, bleibt die articel id auf 0 ...

Hmm

Die erste Form für die daten:
PHP:
<?php 
include ('header.php');
error_reporting(0);
if($_SESSION['username']) 
 
 
 
 
echo " 
<div id='content'>
<form action='jetzt_tauschen.php' method='POST'>
 <table>
 
<tr> 
    <td>
    Bezeichnung:
    </td>
    <td>
     <input name='bezeichnung' value='' type='text' >*<br />
    </td> 
</tr>
    

<tr> 
    <td>
    Kategorie:
    </td>
    <td>
     <input name='kategorie' value='' type='text' >*<br />
    </td>
</tr>


<tr> 
    <td>
    Zustand:
    </td>
    <td>
    <input name='zustand' value='' type='text' >*<br />
    </td> 
</tr>


<tr> 
    <td>
    Tauschpreis:
    </td>
    <td>
    <input name='tauschpreis' value='' type='text' >*<br />
    </td>
</tr>


<tr> 
    <td>
    Produktbilder:
    </td>
    <td>
<a href='upload2.php' onclick='FensterOeffnen(this.href); return false'>Bilder hinzuf&uumlgen</a><br />
    </td>
</tr>



<tr> 
    <td>
    Beschreibung:
    </td>
    <td>
    <textarea name='beschreibung' cols='30' rows='10' value='' type='textarea' ></textarea>*<br />
    </td> 
</tr>


 </table>
 <input type='submit' value='OK'>
</form>


<br />
Die mit einem * gekennzeichneten Felder sind Pflichtfelder.

"; 


 
 
else 
include('loginform.php');

echo"</div>";


include('footer.php');
?>

die "jetzt_tauschen.php"

PHP:
<?php
include ('header.php');
 
 
 





//Variablen zuweisen
$bezeichnung = mysql_real_escape_string ($_POST["bezeichnung"]);
$kategorie = mysql_real_escape_string ($_POST["kategorie"]);
$zustand = mysql_real_escape_string ($_POST["zustand"]);
$tauschpreis= mysql_real_escape_string ($_POST["tauschpreis"]);
$beschreibung = mysql_real_escape_string ($_POST["beschreibung"]);
$username = $_SESSION['username'];  

if (($bezeichnung == "") OR ($kategorie == "") OR($zustand == "")) {
        echo "Fehler: Eintrag unvollständig.";
        die; 
}



//Verbindung herstellen
include ('mysql.php');



//Daten in DB speichern
$sql_befehl = mysql_query("INSERT INTO `artikel` (`bezeichnung`, `kategorie`, `zustand`, `tauschpreis`, `beschreibung`, `username`) VALUES ('".$bezeichnung."', '".$kategorie."', '".$zustand."', '".$tauschpreis."', '".$beschreibung."', '".$username."')");  
printf("Last inserted record has id %d\n", mysql_insert_id());
include('upload2.php');
//Verbindung beenden
mysql_close($connect); 

 

include ('footer.php');

?>

Dann kommt ja per include das upload formular das hier ... (upload2.php)

PHP:
<?php



include("mysql.php");


$username = $_SESSION['username'];


if($_POST['submit'])
{
    // hier dein Insert für den Artikel
    $article_id = mysql_insert_id();

    for($i=1;$i<=count($_FILES['myfile']['name']);$i++)
    {
        //get file attributes
        $name = $_FILES['myfile']['name'][$i];
        $tmp_name = $_FILES['myfile']['tmp_name'][$i];
        //start upload
        $location = "avatars/$name";
        move_uploaded_file($tmp_name,$location);

        if(file_exists($location))
        {
            $sql = 'INSERT INTO `boerse`.`image` (`id`, `article_id`, `path`) VALUES (\'\', \''.$article_id.'\', \''.$name.' \');';
            $ergebnis = mysql_query($sql);
        }
        else
        {
            echo "Kein File ".$name." gefunden....<br>";
        }
    }
    echo "Fertig..!";
    exit;

}

if($_SESSION['username'])
{

echo"
Profilbild &aumlndern:<br>
<br>
<form action='upload2.php' method='POST' enctype='multipart/form-data'>
File: <input type='file' name='myfile[1]'><br />
File: <input type='file' name='myfile[2]'><br />
<input type='submit' name='submit' value='Upload!'>
</form>

";
}

else
{
    echo "Please Login";
}

Nur die ID bleibt auf 0 also die article_id :/
 
Zuletzt bearbeitet:
Na einmal noch, dann ist aber gut :roll: Ein bisschen Fummelei bleibt dir aber auch noch, z.B. das Absichern der Daten vor dem Speichern.

PHP:
<?PHP
session_start();

include("header.php");
include("mysql.php");


$_SESSION['username'] = 'abc';


if($_POST['submit'])
{
    $sql_befehl = mysql_query("INSERT INTO `artikel` (`ID`, `bezeichnung`, `kategorie`, `zustand`, `tauschpreis`, `beschreibung`, `username`) VALUES (NULL, '".$_POST['bezeichnung']."', '".$_POST['kategorie']."', '".$_POST['zustand']."', '".$_POST['tauschpreis']."', '".$_POST['beschreibung']."', '".$_SESSION['username']."');");
    $article_id = mysql_insert_id();
    
    for($i=1;$i<=count($_FILES['myfile']['name']);$i++)
    {
        //get file attributes
        $name = $_FILES['myfile']['name'][$i];
        $tmp_name = $_FILES['myfile']['tmp_name'][$i];
        //start upload
        $location = "avatare/$name";
        move_uploaded_file($tmp_name,$location);

        if(file_exists($location))
        {
            $sql = 'INSERT INTO `boerse`.`image` (`id`, `article_id`, `path`) VALUES (\'\', \''.$article_id.'\', \''.$name.' \');';
            $ergebnis = mysql_query($sql);
        }
        else
        {
            echo "Kein File ".$name." gefunden....<br>";
        }
    }
    echo "Fertig..!";
    exit;

}

if($_SESSION['username'])
{

echo"
Profilbild &aumlndern:<br>
<br>
<form action='test2.php' method='POST' enctype='multipart/form-data'>

 <table>

<tr>
    <td>
    Bezeichnung:
    </td>
    <td>
     <input name='bezeichnung' value='' type='text' >*<br />
    </td>
</tr>


<tr>
    <td>
    Kategorie:
    </td>
    <td>
     <input name='kategorie' value='' type='text' >*<br />
    </td>
</tr>


<tr>
    <td>
    Zustand:
    </td>
    <td>
    <input name='zustand' value='' type='text' >*<br />
    </td>
</tr>


<tr>
    <td>
    Tauschpreis:
    </td>
    <td>
    <input name='tauschpreis' value='' type='text' >*<br />
    </td>
</tr>


<tr>
    <td>
    Beschreibung:
    </td>
    <td>
    <textarea name='beschreibung' cols='30' rows='10' value='' type='textarea' ></textarea>*<br />
    </td>
</tr>


 </table>





File: <input type='file' name='myfile[1]'><br />
File: <input type='file' name='myfile[2]'><br />
<input type='submit' name='submit' value='Upload!'>
</form>

";
}

else
{
    echo "Please Login";
}

PS
Ach ja, Pfade anpassen und die Datei heisst bei mir test2.php, also den Form-Link anpassen.....
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Habe das mal editiert.
die Artikel ID sollte ein Autowert sein und als Value übergibt man NULL oder Leer. Code wurde editiert.

Du darfst auch korrektur lesen, ich hatte artikel_id statt $article_id geschrieben.
 
Bevor ich von mermshaus eine auf's Dach bekomme (schönen Gruss übrigens) mysql_real_escape_string bei den $_POST Daten nicht vergessen, die Pflichtfelder abfragen etc......
 
Werbung:
Ok , ist bei dem script sonst noch was , was ich schützen könnte ?

Ist jedes Script halbwegs sicher wenn ich immer mysql_real_escape_string verwende ?

Eine generelle frage hätte ich noch. Hier mal ein Beispiel

So liste ich die Artikel der gewählten Kategorie:

PHP:
$query = "SELECT * FROM artikel WHERE kategorie='$_GET[name]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
 

echo"
<a href='show.php?id=$row[id]'>$row[bezeichnung]</a> 
";

Nun hab ich ja das Problem das ich nicht im selben Query $row[image] auslesen kann, da die bilder ja in
einer anderen tabelle untergebracht sind...

Ich würde es nun so machen, darunter noch eine abfrage:

PHP:
$query = "SELECT * FROM image WHERE article_id='70'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  

echo"$row[path]";

Problem ist , das ich nun zwar die ausgabe bekomme die ich haben will aber nur zu der ID 70....
Verstehst du mich ?

EDIT:
Nun könnte ich ja bei WHERE article_id='70' das einfügen $row[id]..
Nur geht das ja nicht da es ja ein anderer query ist ?

Nochmal EDIT: geht ja doch ^^
xD

Aber muss ich das nun per CSS formatieren oder geht das auch anders ? Also das jedes bild neben der bezeichnung steht ?

Bildschirmfoto-2.jpg
 
Was macht show.php, ich gehe davon aus, dass show.php den gewünschten Datensatz aufruft und anzeigt.
in der show.php also eine Abfrage

PHP:
  $querya = "SELECT * FROM `boerse`.`image` WHERE article_id='".mysql_real_escape_string($_GET['id'])."'";  
  $images = mysql_query($querya);  
  while ($row = mysql_fetch_array($images)) 
  {
      echo $row[path];
  }

Kleine Anmerkung
* Variablen muss man beim echo nicht unter Anführungszeichen setzen.
* alphanummerische Indizes in Arrays bitte unter Quotes oder singel Quotes. Gibt es irgendwo ein DEFINE, kann es zu unerwünschten Effekten kommen.
 
ich habe eine kategorie.php

Da werden eben die artikel in einer kategorie aufgerufen...

<?php include('header.php');?>

<div id="content">

<div id="login">
<?php include('loginform.php');?>
</div>

PHP:
<?php




include ('mysql.php'); 
 
$query = "SELECT * FROM artikel WHERE kategorie='$_GET[name]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
 

echo"

<a href='show.php?id=$row[id]'>$row[bezeichnung]</a> 

";

$query = "SELECT * FROM image WHERE article_id='$row[id]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  

echo"$row[path]";

?>
 
</div> 


<?php include('footer.php');?>

Hier ist das problem das in der url keine ID vorhande ist , die URL sieht zb so aus kategorie.php?name=handy

Leider schaffe ich es nicht hier das bild auszulesen zu dem dazugehöhrigen artikel....

Wenn man nun in der kategorie.php auf einen artikel klickt, kommt man auf die show.php die die einzelnen daten zu dem jeweiligen artikel ausliest !
url: show.php?id=72

In der show.php klappt alles so wie es sein soll, da ich ja mit GET die Id aus der URL auslesen kann....
Aber in der Kategorie.php wird einfach kein bild ausgelesen bzw. angezeigt...
 
Werbung:
Klammern sind nicht dein Ding oder....
Grundlagen von PHP!
Werden mehrere Anweisungen unter eine Schleife oder Bedingung gesetzt, dann gehören die Anweisungen zwischen geschweifte Klammern.

So, ich muss mich jetzt erst mal um meine eigenen sql-Statements kümmern, vielleicht am Abend wieder...
 
So besser ?

PHP:
$query = "SELECT * FROM artikel WHERE kategorie='$_GET[name]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
{ 

echo"
<a href='show.php?id=$row[id]'>$row[bezeichnung]</a> 
";
  } 
  
  
$query = "SELECT * FROM image WHERE article_id='$row[id]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
{
echo "$row[path]";
  }

:)

Ja dann wart ich halt mal :D
 
So hier mal mein derzeitiges Script und meine derzeitige Frage ;)

PHP:
include ('mysql.php'); 
 
$query = "SELECT * FROM artikel WHERE kategorie='$_GET[name]'";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
{ 

echo"
<a href='show.php?id=$row[id]'>$row[bezeichnung]</a> 
";
  } 
  
  
$query = "SELECT * FROM image WHERE article_id='73' LIMIT 0, 1 ";  
 
$result = mysql_query($query);  
  while ($row = mysql_fetch_array($result))  
{
echo "
<img src=\"$row[path]\" height=\"100px\">
";
  }

Es passt alles ausser die article_id='', diese soll dynamisch werden !
Ich habe keine ID in der URL die ich auslesen könnte...
Perfekt wäre wenn ich das $row[id] aus der ersten abfrage verwenden könnte , was aber nicht funktioniert ...
So wäre es perfekt article_id='$row[id]' ...

Jemand ne andere lösung ?
 
Werbung:
Gibt es denn die Spalte id auch?
Wie sieht denn die Artikel Tabelle aus, die Spalte id muss existieren, heisst die Spalte z.B. art_id muss man $row[art_id'] verwenden. Da ich deinen Tabellenaufbau und die Spaltenbezeichnungen nur raten kann, tue ich mir schwer. Also bitte den Tabellenaufbau der Artikeltabelle posten.

Meine Annahme ist die:

Tabelle artikel

id| bezeichnung | kategorie
| zustand | tauschpreis | beschreibung | username

Wobei ID ein Autowert ist.




Ich behirne den Aufbau deines Scripts noch garnicht.
Du liest alle Daten einer Kategorie aus und gibst alle Links zu einer bestimmten Kategorie aus. Zum eigentlichen Artikel kommt man erst, wenn man dem Link folgt (link öffnet die show.php)

Bilder sind einem bestimmten Artikel zugeordnet und werden nicht je Kategorie ausgelesen. Es macht also erst Sinn die Bilder auszulesen, wenn ich mit einen bestimmten Artikel ansehe (also wieder in der show.php).

Mein Facit:
Die Abfrage der Bilder ist also eigentlich beim auslesen der Kategorieen vollkommen sinnlos.
 
Deine annahmen wegen dem Tabellenaufbau ist richtig...

Naja sinnlos nicht, denn wenn ich ein produkt sehe und nur die bezeichnung dasteht naja... ^
Es geht weniger um artikel sondern produkte ...
 
Zurück
Oben