php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.05.2008, 18:27  
Neuer Benutzer
 
Registriert seit: 27.01.2008
Beiträge: 19
haubna
haubna eine Nachricht über ICQ schicken haubna eine Nachricht über MSN schicken
Standard upload & beitrag in datenbank übergeben - in einem scrip

Hallooo...

Hab wieder mal eine frage
nachdem ich mich jetzt rechterfolgreich mit meinem cms beschäftige und schon recht weit gekommen bin, soweit sogar ALLES funktioniert, komme ich jetzt doch wieder zu einem punkt, den es zu knacken gibt ...

folgende ausgangssituation;

ich habe 2 ganz banale dateien mit namen;
admin_add.php
admin_action.php

Admin Add ist einfach das Formular, also hauptsächlich HTML, übergibt dann die dateien in Admin Action.
Das funktioniert soweit alles einwandfrei

jetzt möchte ich aber ein Bild hinzufügen - hierzu habe ich mir diverse sachen durchgelesen und auch erfolgreich ein upload script erstellt, mit einem nachteil - der benutzer(un-)freundlichkeit.

Die seite sieht wie folgt aus;

TITEL [.............................] Formularfeld für den Titel
TEXT [.............................] Textfeld für den Inhalt (mit WYSWIG Editor)

Bildupload [........] < Textfeld für URL

Bei Bildupload ist das Prinzip bis jetzt, wie folgt;
"Bildupload" ist ein Link - man klickt darauf und es öffnet sich ein popup (upload.php) mit dem "Durchsuchen & Hochladen"-Zeug. Nach dem klick auf Hochladen wird IM POPUP (mittels echo) der Pfad zum Bild ausgegeben - also sieht das ganze z.b. so aus;
Zitat:
Bild erfolgreich hochgeladen!

Pfad
http://ieineseite.at/news_images/bild1.jpg
Dieser Pfad wird dann, mittels copy&paste, in das Textfeld für URL gegeben (in admin_add.php) und die URL mit dem drücken auf Absenden in die Datenbank gespeichert...

So hat der Beitrag #1 dann folgende Daten in der Datenbank;
ID = 1 -|- Titel = "Test" -|-Inhalt = "laaaaaanger text" -|- ImgLink = "
http://ieineseite.at/news_images/bild1.jpg"

Was ich jetzt eigentlich möchte?
Nungut, nach dieser doch etwas lang geratenen einleitung, steh ich eigentlich vor folgendem problem;

GIBT es eine möglichkeit, das popup zu ersparen und DIREKT in "admin_add.php" einzubauen?
Also das "Durchsuchen" usw mit der Datenbank ID verknüpfen?

Stelle bei bedarf alle nötigen Dateien zur verfügung, vllt kann mir ja doch jmd helfen


falls es etwas unverständlich zu lesen ist steh ich natürlich für rückfragen hier im forum zur verfügung

lg
haubna

p.s. hoffe ich habs im richtigen bereich gepostet
haubna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.05.2008, 22:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Mach halt ein File Feld ins Formular und übernimm die upload Funktionalität ins Folgescript...

Zitat:
p.s. hoffe ich habs im richtigen bereich gepostet
Nö. Dazu ist die Beschreibung schon zu kauderwelschig. Das geht sicher auch weniger anstrengend.
nikosch ist offline  
Alt 26.05.2008, 14:46  
phyton
Gast
 
Beiträge: n/a
Standard

ich zeig dir mal wie nikosch das meint:

Code:
<input type="hidden" name="MAX_FILE_SIZE" value="1000"><input type="file" name="img_url">
das ist das feld, wo der benutzer sein bild auswählt mit der zugelassenen größe der datei (MAX_FILE_SIZE).

bild hochladen:
PHP-Code:
<?php
//Ordnername, in die die datei verschoben werden soll (ohne / am ende)
$order "xy";
//prüfen, ob es einen fehler gibt
if(is_uploaded_file($_FILES['img_url']['tmp_name']) and ($_FILES['img_url']['error'] == 0))
{
  
//datei in ordner "xy" verschieben
  
move_uploaded_file($_FILES['img_url']['tmp_name'],$order."/".$_FILES['img_url']['name']);
  
//pfad ausgeben
  
echo "Dateiübertragung erfolgreich!
Pfad: "
.$order."/".$_FILES['img_url']['name'];
  
//pfad speichern (zum weitergeben)
  
$path $order."/".$_FILES['img_url']['name'];
  
/* $_FILES['img_url']['name'] = ursprünglicher name der datei auf dem clientrechner.
     $_FILES['img_url']['size'] = dateigröße
     $_FILES['img_url']['tmp_name'] = temporärer name auf dem server
     $_FILES['img_url']['type'] = mime-type (header) der datei
     $_FILES['img_url']['error'] = fehlercode */
}
else {
  echo 
"Dateiübertragung fehlerhaft.";
  
//Meldung zum entsprechenden fehlercode ausgeben
  
switch($_FILES['img_url']['error'])
  {
    case 
1:
      echo 
"Datei zu groß!";
      break;
    case 
2:
      echo 
"Datei zu groß!";
      break;
    case 
3:
      echo 
"Datei nur teilweise hochgeladen";
      break;
    case 
4:
      echo 
"Keine Datei hochgeladen";
      break;
    default:
      echo 
"Unbekannter Fehler aufgetreten...";
      break;
  }
}
?>
 
Alt 30.05.2008, 16:05  
Neuer Benutzer
 
Registriert seit: 27.01.2008
Beiträge: 19
haubna
haubna eine Nachricht über ICQ schicken haubna eine Nachricht über MSN schicken
Standard

ich bins nochmal...danke erstmal

ich weiß, der beitrag war zu kompliziert geschrieben :/


ich hab folgendes problem

2 formulare sollen zu einem kombiniert werden. das eine ist das "beitrags-erstellen" formular und das 2te das upload formular.

die beiden scripte an sich funktionieren einwandfrei.

nur soll das upgeloadedte bild als News-Bild direkt dem datenbank eintrag zugewiesen werden und nicht "einfach nur upgeloaded"

um das ganze etwas zu veranschaulichen - der code... ich weiß, dass das normalerweise nicht gemacht wird, aber vllt hat ja jmd eine lösung parat :/

News erstellen:
PHP-Code:
<?php
  session_start
();
  if(!
session_is_registered('user') || $_SESSION['user'] == "") {
    
header("location:login.php");
    die;
  }
  
?>
<link href="admin.css" rel="stylesheet" type="text/css" />
<title>pacoooon | admin</title>
// < langweilige js scripte >
</head>
<?php include("menu.html"); ?>

<form method="post" action="admin_action.php"><center>
<?php echo '[b]<span class="Ueberschrift">Neuen Beitrag erstellen! </span>[/b]'?>


</center>
<table width="80%" border="0" align="center" cellpadding="4" cellspacing="4" bordercolor="#006666" bgcolor="#EBE9ED" id="table">
            <tr>
                <td class="td">Titel</td>
                <td class="td"><input type="text" name="Titel" size="24"></td>
            </tr>
            <tr>
            <td class="td"><?php print "<a href=\"javascript:Upload('upload.php')\">BildUpload</a>"?></td>
            <td valign="middle" class="td"><input name="ImgLink" type="text" size="65"> 
            (URL)            </td>
            </tr>

            <tr>
                <td class="td"valign="top">Text</td>
                <td class="td"><textarea name="Inhalt" cols="90" rows="20"></textarea></td>
            </tr>
</table>

<blockquote>
  <p align="center">
    <input name="submitButtonName" type="submit" value="Post it!">
    <input type="reset">
  </p>
</blockquote>
"auführscript"
PHP-Code:
<?php
  session_start
();
  if(!
session_is_registered('user') || $_SESSION['user'] == "") {
    
header("location:login.php");
    die;
  }
  
?>
<link href="admin.css" rel="stylesheet" type="text/css" />
<title>pacoooon | admin</title></head>
<?php
require("connect.inc.php");


$Name$_POST['Name'];
$Titel$_POST['Titel'];
$Inhalt$_POST['Inhalt'];
$ImgLink$_POST['ImgLink'];

$sql "INSERT news (Name,Titel,Inhalt,ImgLink) VALUES ('$Name','$Titel','$Inhalt','$ImgLink')";

 if ((
""== $Titel) OR(""== $Inhalt)) {
        echo 
"Fehler: Eintrag unvollständig.";
    } else {                        

  echo 
"<center>Ihr Eintrag wurde hinzugefügt</center>";
}
echo 
'<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="refresh" content="1;admin.php"></head>
<center><span class="Ueberschrift">Beitrag erstellt!</span>


[url="admin.php"]zurück[/url]'
;

$result mysql_query($sql) OR              
die(
"Query: <pre>".$sql."</pre>\n".                  
"Antwoertchen: ".mysql_error());
?>
upload formular
PHP-Code:
<?php
  session_start
();
  if(!
session_is_registered('user') || $_SESSION['user'] == "") {
    
header("location:login.php");
    die;
  }
  
?><head><script type="text/javascript" src="lightbox.js"></script>
<link href="admin.css" rel="stylesheet" type="text/css" />
<title>pacoooon | admin</title>

</head>
<center>
<?php $id $_GET['id'] ; ?>
<?php 
echo '[b]<span class="Ueberschrift">Bildupload </span>[/b]
&raquo; <a href="http://schlittenhunde-wm.at/index.php">Zur Homepage
</a>'
?>


</center>
<form action="upload_action.php" method="post" enctype="multipart/form-data" >
<table width="80%" height="150" border="0" align="center" cellpadding="0" cellspacing="0" id="table">
  <tr>
    <td valign="middle">
      <div align="center">
        <input name="file" type="file" value="" size="50">      
        <input name="Input" type="submit" value="Hochladen">
      

*.jpg *.gif *.png *.bmp

<?php echo '

[url="javascript:window.close()"]Fenster schließen[/url]'
?></div></td>
  </tr>
</table>
</form>
und schließlich das upload-ausführ-script
PHP-Code:
<html>
<head><link href="admin.css" rel="stylesheet" type="text/css" />
<title>pacoooon | admin</title>
</head>
 
<body>
<?php
$tempname 
$_FILES['file']['tmp_name'];
$name $_FILES['file']['name'];
$type $_FILES['file']['type'];
$size $_FILES['file']['size'];
$maxdatasize 99999999;
 
if (empty(
$name)) $error [] ="Du hast kein Bild ausgewählt!";
 
if (
$type != "image/gif" && $type != "image/jpeg" && $type != "image/png" && $type != "image/bmp"$error[] = "Es dürfen nur *.gif, *.jpeg, *.jpg, *.png und *.bmp Fotos hochgeladen werden!";
 
if (
$size $maxdatasize$error[] = "Das Bild ist zu groß!
Es darf maximal  "
.$maxdatasize." groß sein.";
 
while (
file_exists("news_images/".$name)) doppel_datei($name);
 
if (empty(
$error)) {
      
move_uploaded_file ($tempname"news_images/".$name);
      echo (
"

      <blockquote>
      Das Bild wurde erfolgreich hinzugefügt

[b]Pfad:[/b]


      <input type=\"text\" name=\"ImgLink\" size=\"65\" onfocus=\"this.select();\" value=\"http://www.schlittenhunde-wm.at/admin/news_images/$name \">
    </td>"

      
); 
}
else {
      foreach (
$error as $err) echo ($err."
"
);
}
?><?php echo '

[url="javascript:window.close()"]Fenster schließen[/url]'
?>
</body>
</html>

Grundsätzlich stellt sich die frage;

WIE ist der code, damit ein data-field im admin-add den dateinamen+dazugehörige endung etc in die datenbank (mit richtiger ID!) eingibt und gleichzeitig hochlädt?!
haubna ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Upload in eine Datenbank Magic PHP Tipps 2004-2 10 30.11.2004 13:08
upload von Binärdaten in datenbank PHP Tipps 2004 4 05.09.2004 19:32
Bild upload in Verzeichniss/ Bild-Name in MySQL Datenbank PHP Tipps 2004 5 10.08.2004 13:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2008/45947-upload-beitrag-datenbank-uebergeben-einem-scrip.html, head upload center, php mysql dateiupload unvollständig, move_uploaded_file pfad ausgeben, bildupload datenbank beschreibung php, upload url in datenbank, user datenbank uploads hinzufügen, übergeben upload verzeichnis, upload.php durchsuchen, mysql-datenbank user und pfad übergeben, html upload bilder übergabe an datenbank, upload datenbankeintrag, datei upload mit php pfad soll in eine mysql datenbank übergeben werden, php upload durchsuchen, text feld upload, html upload mit beitrag, bild upload url datenbank sql, $_post und $_file gleichzeitig, bilder upload scrip, php tmp_name upload \datei nur teilweise hochgeladen\

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.