php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.01.2010, 15:02  
Neuer Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
turboJug3nd befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] prüfen ob bild per formular übergeben wurde

Halli Hallo,

es ist mir ja schon fast unangenehm zu fragen weil die Lösung bestimmt nicht so schwer ist ... Aber ich bastel da jetzt schon den halben Tag dran rum und komm zu keinem Ergebnis.

Folgendes Problem besteht:

Normales "News-Script" mit Bilduploadfunktion, ich schreib einen Text und wenn ich will pack ich noch ein Bild darunter.

Formularauszüge:

HTML-Code:
<form action="news_add.php" method="POST" enctype="multipart/form-data" name="news_add" class="formular" id="news_add" onsubmit="return confirm('News eintragen?')">
...
<input type="file" name="meinbild" />
...
</form> 
Klappt alles super,

in der news_add.php wird überprüft ob die datei ein jpg oder gif ist, mit GD die größe verändert, thumb erstellt, die links und der Text dann in der Datenbank gespeichert. Alles kein Problem

Problem ist wenn der Benutzer kein Bild posten will.

Normal sollte das ja mit ner if-anweisung funktionieren. Wenn Bild da, resize -> speichern -> text prüfen -> alles in die Datenbank laden

jetzt hab ich probiert mit isset, array_key_exists() und empty() zu schauen ob ein Bild vorhanden ist

PHP-Code:
<?php
include "../inc/config.php";
error_reporting(E_ALL);
//Prüfen ob Bild gepostet wurde, wenn ja verarbeitungsscript ausführen, Nein nur News posten

if (isset($_POST['meinbild']))
{
"Bild- und Textverarbeitung"
}
"nur Text"
?>
irgendwie übergeht er aber die erste Anweisung und speichert selbst wenn man ein Bild angibt nur den Text.

Was muss man benutzen wenn man prüfen will ob die Datei gesendet wurde?

Danke für Hilfe!

Geändert von turboJug3nd (06.01.2010 um 16:48 Uhr).
turboJug3nd ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.01.2010, 17:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
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

Schau doch mal in $_POST rein: var_dump
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 06.01.2010, 17:22  
Neuer Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
turboJug3nd befindet sich auf einem aufstrebenden Ast
Standard

Mm scheint irgendwie gar nich dabei zu sein ...

PHP-Code:
array(4) { ["Autor"]=> string(4"test" ["Titel"]=> string(4"test" ["Inhalt"]=> string(4"test" ["submit"]=> string(9"Speichern" 
aber warum. ohne abfrage hats doch die Bilder auch übermittelt

edit: aha is im POSt Array nich drin weils in $_FILES ist

PHP-Code:
array(4) { ["Autor"]=> string(4"test" ["Titel"]=> string(4"test" ["Inhalt"]=> string(4"test" ["submit"]=> string(9"Speichern" } array(1) { ["meinbild"]=> array(5) { ["name"]=> string(9"pers1.jpg" ["type"]=> string(10"image/jpeg" ["tmp_name"]=> string(24"E:\xampp\tmp\php6980.tmp" ["error"]=> int(0) ["size"]=> int(1537998) } } 

Geändert von turboJug3nd (06.01.2010 um 17:26 Uhr).
turboJug3nd ist offline  
Alt 06.01.2010, 17:24  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Möglicherweise hast du ein falsches Formular abgeschickt!

Zeig uns mal, was in den Lücken steht:
Code:
...
<input type="file" name="meinbild" />
...
</form>
Hast du eventuell das Formular zu früh geschlossen oder innerhalb des Formulars ein Zweites geöffnet?
Asipak ist offline  
Alt 06.01.2010, 17:46  
Neuer Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
turboJug3nd befindet sich auf einem aufstrebenden Ast
Standard

So, also Bild schicken geht wieder nur wenn kein bild übermittelt ist schreibt er trotzdem die url daten in die datenbank ...


hier nochmal das formular, obwohl damit alles ok ist denk ich mal.
HTML-Code:
 <form action="news_add.php" method="POST" enctype="multipart/form-data" name="news_add" class="formular" id="news_add" onsubmit="return confirm('News eintragen?')">
      <table width="92%" border="0" cellpadding="0" cellspacing="0" class="Stil5">
    <tr>
      <td width="8%" class="stil1">Autor:</td>
      <td colspan="2"><input type="text" name="Autor" id="Autor" size="10"/> <span class="stil1">Titel:
        <input type="text" name="Titel" id="Titel" size="46"/>
        </span></td>
      </tr>
    <tr>
      <td valign="top" class="stil1">News:</td>
      <td width="67%"><textarea name="Inhalt" cols="50" rows="7" id="Inhalt"/></textarea></td>
      <td width="25%">
    <a href="javascript: addsmiley(':)')"><img src="../img/smiley/smile.gif" alt="" width="15" height="15" border="0"></a>
    <a href="javascript: addsmiley(':D')"> <img src="../img/smiley/biggrin.gif" alt="" width="15" height="15" border="0"></a>
	<a href="javascript: addsmiley('8)')"><img src="../img/smiley/cool.gif" alt="" width="19" height="19" border="0"></a>
	<a href="javascript: addsmiley(':(')"><img src="../img/smiley/cry.gif" alt="" width="15" height="15" border="0"></a>
    <p>
	<a href="javascript: addsmiley(':top')"><img src="../img/smiley/top.gif" alt="" width="23" height="18" border="0"></a>
	<a href="javascript: addsmiley(':p')"><img src="../img/smiley/zunge.gif" alt="" width="15" height="15" border="0"></a>
	<a href="javascript: addsmiley(':zzz')"><img src="../img/smiley/zzz.gif" alt="" width="27" height="25" border="0"></a>
    <a href="javascript: addsmiley(':down')"><img src="../img/smiley/down.gif" alt="" width="15" height="15" border="0"></a>
    <p>
	<a href="javascript: addsmiley(':stumm')"><img src="../img/smiley/stumm.gif" alt="" width="15" height="16" border="0"></a>
	<a href="javascript: addsmiley(':vogel')"><img src="../img/smiley/vogel.gif" alt="" width="22" height="15" border="0"></a>
	<a href="javascript: addsmiley(';)')"><img src="../img/smiley/wink.gif" alt="" width="15" height="15" border="0"></a>
	<a href="javascript: addsmiley(':wink')"><img src="../img/smiley/winkewinke.gif" alt="" width="25" height="15" border="0"></a>
          </td>
    </tr>
    <tr>
      <td class="stil1">Titelbild:</td>
      <td colspan="2"><input type="file" name="meinbild" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td colspan="2"><input type="submit" name="submit" value="Speichern" />
        <input type="reset" name="submit2" value="L&ouml;schen" /></td>
    </tr>
  </table>  
      </form> 

und die php datei


PHP-Code:
<?php
include "../inc/config.php";
error_reporting(E_ALL);
//Prüfen ob Bild gepostet wurde, wenn ja verarbeitungsscript ausführen, Nein nur News posten
//var_dump($_POST);
//var_dump($_FILES);
if (isset($_FILES['meinbild']))
{
// prüfen, ob der User überhaupt ein Bild im Format jpg übergeben hat
if ((($_FILES['meinbild']['type'] == 'image/pjpeg') || ($_FILES['meinbild']['type'] == 'image/jpeg')) && ($_FILES['meinbild']['error'] == 0) && ($_FILES['meinbild']['tmp_name'] != 'none') && ($_FILES['meinbild']['name']) && ($_FILES['meinbild']['size'] > 0)) {
    
$filename_old $_FILES['meinbild']['name'];
    
$filename_new $_FILES['meinbild']['name'];
    
$filename_thumb_o $_FILES['meinbild']['name'];
    
$filename_thumb_n $_FILES['meinbild']['name'];
    
$savepath     '../img/pics/';
    
$savepath_thumb '.../img/pics/thumbs/';
    
$size         getimagesize($_FILES['meinbild']['tmp_name']);
    
$width_old    $size[0];
    
$height_old   $size[1];
    
$width_thumb_o    $size[0];
    
$height_thumb_o   $size[1];

        
// Neues Format definieren, 600 px maximal bei Höhe und Breite
    
if ($width_old $height_old) {
        
$width_new  '600';
        
$height_new intval($height_old $width_new $width_old);
    } else {
        
$height_new '600';
        
$width_new  intval($width_old $height_new $height_old);
    }
 
    
// Bild verarbeiten
    
$picture_old imagecreatefromjpeg($_FILES['meinbild']['tmp_name']); 
    
$picture_new imagecreatetruecolor($width_new$height_new);
    
imagecopyresampled($picture_new$picture_old0000$width_new$height_new$width_old$height_old);
 
    
// Neues Bild speichern
    
$create      imagejpeg($picture_new$savepath.$filename_new);
    
imagedestroy($picture_new);

    
    
// Thumbnail Format definieren
    
if ($width_thumb_o $height_thumb_o) {
        
$width_new_thumb  '250';
        
$height_new_thumb intval($height_thumb_o $width_new_thumb $width_thumb_o);
    } else {
        
$height_new_thumb '250';
        
$width_new_thumb  intval($width_thumb_o $height_new_thumb $height_thumb_o);
    }
 
    
// Bild verarbeiten
    
$picture_old_thumb imagecreatefromjpeg($_FILES['meinbild']['tmp_name']); 
    
$picture_new_thumb imagecreatetruecolor($width_new_thumb$height_new_thumb);
    
imagecopyresampled($picture_new_thumb$picture_old_thumb0000$width_new_thumb$height_new_thumb$width_thumb_o$height_thumb_o);
 
    
// Thumb speichern
    
$create      imagejpeg($picture_new_thumb$savepath_thumb.$filename_thumb_n);
    
imagedestroy($picture_new_thumb);

    if (
$create) {
        echo 
'<p>Das Bild wurde hochgeladen und kann <a href="'.$savepath.$filename_new.'">hier</a> angesehen werden.</p>'."\n";
    }
} else {
    echo 
'<p>Das Bild konnte nicht verarbeitet werden.</p>'."\n";
}
    
$savepath "img/pics/";
    
$namepath "$savepath$filename_new";
    
$savepath_thumb 'img/pics/thumbs/';
    
$namepath_thumb "$savepath_thumb$filename_new";
    
    @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR
        die(
"Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR
        die(
"Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    if(!isset(
$_POST['Autor'], $_POST['Titel'],
              
$_POST['Inhalt'])) {
        die(
"Bitte Benutzen sie das Formular aus dem Adminmen&uuml;\n");
    }

    if(
trim($_POST['Autor']) == "") {
        die(
"Bitte geben sie einen Namen ein!<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }
    if(
trim($_POST['Titel']) == "") {
        die(
"Bitte geben sie einen Titel für die News ein!<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }
    if(
trim($_POST['Inhalt']) == "") {
        die(
"Bitte geben sie einen Text ein<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }

    
$sql "INSERT INTO news
                (Autor, Titel, Inhalt, Bild_URL, thumb_url, Datum)
            VALUES
                ('"
.addslashes(stripslashes(htmlspecialchars($_POST['Autor'])))."',
                '"
.addslashes(stripslashes(htmlspecialchars($_POST['Titel'])))."',
                '"
.addslashes(stripslashes(htmlspecialchars($_POST['Inhalt'])))."',
                '"
.addslashes(stripslashes(htmlspecialchars($namepath)))."',
                '"
.addslashes(stripslashes(htmlspecialchars($namepath_thumb)))."',
                NOW())"
;

    
mysql_query($sql) OR die(mysql_error());
    
    echo 
"<span class=\"Stil1\">Danke f&uuml;r den Eintrag.</span></p>\n";
    echo 
"<br>\n";
    echo 
"<span class=\"Stil1\">Daten erfolgreich ge&auml;ndert!<p><a href=\"news_change.php\"><- zur&uuml;ck</a></span></p>\n";
}

//Hier sollte eigentlich die verarbeitung folgen wenn kein Bild angegeben ist.

else
{
    @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR
        die(
"Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR
        die(
"Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    if(!isset(
$_POST['Autor'], $_POST['Titel'],
              
$_POST['Inhalt'])) {
        die(
"Bitte Benutzen sie das Formular aus dem Adminmen&uuml;\n");
    }

    if(
trim($_POST['Autor']) == "") {
        die(
"Bitte geben sie einen Namen ein!<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }
    if(
trim($_POST['Titel']) == "") {
        die(
"Bitte geben sie einen Titel für die News ein!<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }
    if(
trim($_POST['Inhalt']) == "") {
        die(
"Bitte geben sie einen Text ein<p><a href=\"javascript:history.back()\"><- zur&uuml;ck</a>");
    }

    
$sql "INSERT INTO news
                (Autor, Titel, Inhalt, Datum)
            VALUES
                ('"
.addslashes(stripslashes(htmlspecialchars($_POST['Autor'])))."',
                '"
.addslashes(stripslashes(htmlspecialchars($_POST['Titel'])))."',
                '"
.addslashes(stripslashes(htmlspecialchars($_POST['Inhalt'])))."',
                NOW())"
;

    
mysql_query($sql) OR die(mysql_error());
    
    echo 
"<span class=\"Stil1\">Danke f&uuml;r den Eintrag.</span></p>\n";
    echo 
"<br>\n";
    echo 
"<span class=\"Stil1\">Daten erfolgreich ge&auml;ndert!<p><a href=\"news_change.php\"><- zur&uuml;ck</a></span></p>\n";
    }

?>
wahrscheinlich nicht die eleganteste Lösung wüsste aber auch nicht wie ichs anders bewerkstelligen könnte
turboJug3nd ist offline  
Alt 07.01.2010, 11:29  
Neuer Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
turboJug3nd befindet sich auf einem aufstrebenden Ast
Standard

hat keiner ne Idee woran es liegen könnte?

Ich hab das Array jetzt mal zerlegt und lasse mir den inhalt ausgeben ob zu testen ob ich nach der richtigen Bedingung frage ...

PHP-Code:
$name $_FILES['meinbild']['name'];
print 
$name;
if (isset(
$name)){
bild+text
}else{
nur text
Is doch eigentlich richtig? Ich frag nach dem name des bildes das im formular übergeben wurde. Oder wo liegt der fehler?
turboJug3nd ist offline  
Alt 07.01.2010, 12:42  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Is doch eigentlich richtig? Ich frag nach dem name des bildes das im formular übergeben wurde. Oder wo liegt der fehler?
Syntaktisch ja, logisch gesehen macht die Bedingung aber überhaupt keinen Sinn. Die Variable $name ist in deinem Fall immer gesetzt, daher wird die Bedingung auch immer erfüllt. Du solltest überprüfen, ob $name leer ist.

Schau halt in das _POST-Array. Dort steht doch, welchen Wert du unter
Code:
$_FILES['meinbild']['name']
findest, wenn kein Bild übermittelt wurde. Genau danach kannst du dann deine Bedingung erstellen.
Asipak ist offline  
Alt 07.01.2010, 16:04  
Neuer Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
turboJug3nd befindet sich auf einem aufstrebenden Ast
Standard

Yeah es klappt

habs jetzt so lösen können.

PHP-Code:
$name $_FILES['meinbild']['name'];
if (empty(
$name))
{
Text
}else{
Bild+Text

Danke für die Tipps !!!!
turboJug3nd 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
[Erledigt] Bild erstellen, speichern und gespeichertes Bild anzeigen Garog PHP Tipps 2009 26 11.07.2010 18:01
Daten von der DB in einem Formular übergeben tonikln PHP Tipps 2009 6 23.09.2009 11:48
[Erledigt] Formular vor dem Abschicken prüfen MCee Donald JavaScript, Ajax und mehr 5 15.05.2009 08:47
Problem beim Captcha Aufruf in einem Formular, nur das Bild wird angezeigt litterauspirna PHP Tipps 2009 19 11.05.2009 15:25
HTML Formular an PHP übergeben Lightware PHP Tipps 2008 12 06.10.2008 13:14
[Erledigt] Formular mit einem Link übergeben Felix JavaScript, Ajax und mehr 4 11.09.2008 11:54
Php Formular prüfen mit Javascript ohne <form> 0uhr15 PHP Tipps 2008 13 16.06.2008 11:26
POST Daten ohne Formular übergeben? &lt;Daniel&gt; PHP Tipps 2006 8 19.06.2006 14:34
getSelection() im Formular an andere Seite übergeben ?? HTML, Usability und Barrierefreiheit 2 17.01.2006 10:49
Variable aus Formular ohne submit Button übergeben PHP Tipps 2005-2 3 24.06.2005 17:08
variable ohne formular übergeben nautiluS PHP Tipps 2005 9 11.04.2005 13:46
formular übergeben ohne button me HTML, Usability und Barrierefreiheit 1 21.12.2004 14:56
radiobutton wert mit formular übergeben kain PHP Tipps 2004-2 2 20.12.2004 14:59
[Erledigt] Aktuelle Url an Formular übergeben PHP Tipps 2004 6 04.08.2004 16:12
JavaScriptvariable per Formular übergeben? HTML, Usability und Barrierefreiheit 3 30.07.2004 02:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formular php schauen ob bild hochgeladen werden soll, php prüfen ob datei hochgeladen, http://www.php.de/php-einsteiger/63045-erledigt-pruefen-ob-bild-per-formular-uebergeben-wurde.html, php überprüfen ob bild hochgeladen wurde, php prüfen ob datei hochgeladen wurde, java form prüfen ob $_post, formular bild an datenbank übergeben, prüfen ob formular gesendet wurde, php prüfen ob form abgeschickt, prüfen ob class=input file type=file leer ist, prüfen ob file gesendet wurde, php prüfen ob formular gesendet wurde, php prüfen ob datei bild ist, prüfen ob jpg oder gif php, php prüfen ob datei gesendet, bild an formular übergeben, prüfen ob formular gesendet wurde php, php prüfen ob bild hochgeladen, php bild typ überprüfen, überprüfen welche form übergeben wurde

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:54 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