mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 09:12 Benutzername: Passwort: Auto-Login

Thema: Problme beim Speichern in mysql vom 04.05.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Problme beim Speichern in mysql
Autor Nachricht
Tommy_D
Threadersteller

Dabei seit: 04.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 04.05.2006 16:26
Titel

Problme beim Speichern in mysql

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich habe ein Poblem beim Speichern von geänderten Datensätzen in mysql aus PHP
Die Function speichert zwei Bilder in verschiedenen Größen und ergänzt einen Datensatz in der Datenbank um den Dateinamen.

Rufe ich die Funktion zum Erstellen des Datensatz auf, funktioniert sie einwandfrei. Rufe ich sie mit gleichen Parametern zum Ändern auf, werden die Bilder gespeichert, ich bekomme auch die Meldung das der Datensatz gespeichert wurde ,ohne Fehlermeldung, ist er aber nicht. War vorher ein Dateiname in dem Feld gespeichert, ist es danach leer.

Wäre sehr dankbar wenn jemand eine Idee hätte woran das liegen kann.
Die Function:


Code:
function uploadBild($letzte_id, $breite, $hoehe, $dateiname, $typ)
{
Global $max_thumb_breite;
Global $max_thumb_hoehe;
Global $max_breite;
Global $max_hoehe;
global $_files;
Global $benutzer;
Global $Pass;
Global $a_table;      
Global $k_table;      
Global $dbase;
Global $artikel;
//Dateiendung suchen, Extension festlegen
if( "image/pjpeg" == $_FILES['datei']['type'])
$extension = ".jpg";
else $extension = ".gif";

$timestamp = time();  //Datumsvariable von jetzt
$dateiname_neu=$letzte_id.$extension;  //Neuen Dateinamen festlegen Galerie_ID.EXT

if($breite<$max_breite)  //Falls kleiner als Vergrößerung
   $max_breite=$breite;

if($hoehe<$max_hoehe)
   $max_hoehe=$hoehe;


if($breite<$max_thumb_breite)  //Falls kleiner als Thumbnail
   $max_thumb_breite=$breite;

if($hoehe<$max_thumb_hoehe)
   $max_thumb_hoehe=$hoehe;


if ($breite>$hoehe)  //Querformat
{
   $verhaeltnis=$hoehe/$breite;
   
   #Berechnung für Vergrößerung
   $hoehe2=intval($max_breite*$verhaeltnis);
   $breite2=$max_breite;

   #Berechnung für Thumbnail
   $hoehe2thumb=intval($max_thumb_breite*$verhaeltnis);
   $breite2thumb=$max_thumb_breite;
}

if ($breite<$hoehe)  //Hochformat
{
   #Berechnung für Vergrößerung
   $hoehe2=$max_hoehe;
   $verhaeltnis=$hoehe/$breite;
   $breite2=intval($hoehe2/$verhaeltnis);

   #Berechnung für Thumbnail
   $hoehe2thumb=$max_thumb_hoehe;
   $breite2thumb=intval($hoehe2thumb/$verhaeltnis);
}

$image_klein = imagecreatetruecolor($breite2thumb,$hoehe2thumb);  //Thumbnail
$image_gross = imagecreatetruecolor($breite2,$hoehe2);   //Vergrößerung


$image = imagecreatefromjpeg("../images/temp/".$dateiname);

//Tumbnailerstellung
ImageCopyResampled($image_klein, $image, 0,0,0,0,$breite2thumb,$hoehe2thumb,$breite,$hoehe);
imagejpeg($image_klein,"../images/angebot/thumb/$dateiname_neu",50);

//Vergrößerungerstellung
ImageCopyResampled($image_gross, $image, 0,0, 0,0,$breite2,$hoehe2,$breite,$hoehe);
imagejpeg($image_gross,"../images/angebot/$dateiname_neu",50);

$delete="../images/temp/$dateiname";
if(!unlink($delete))
   echo "Originalbild konnte nicht gelöscht werden. Bitte Webmaster infomrmieren";
//Eintrag in Datenbankfeld bild mit neuem Dateinamen ändern
echo "-$a_table-<br>-$benutzer-<br>-$Pass-<br>-$dbase-<br>-$letzte_id-<br>-$dateiname_neu-<br>-$breite-<br>-$hoehe-<br>";



   $Daten=mysql_connect("localhost", $benutzer, $Pass); //Prüfung ob Name bereits angemeldet
    if (!$Daten)
    die("Datenbank konnte nicht geöffnet werden, bitte später nochmal versuchen");
    mysql_select_db($dbase)
    or die ("Datenbank konnte nicht geöffnet werden, bitte später nochmal versuchen");


$sqlab = "update $a_table set bild = '$dateiname_neu' where id = '$letzte_id'";
   $ok = mysql_query($sqlab, $Daten) ;
if (!$ok)
   echo "Verknüpfung des Bildes mit der Datenbank konnte nicht erfolgreich durchgeführt werden. Bitte wiederholen oder den Webmaster informieren.<br>Fehler:".mysql_error();

else
   echo "Neuer Bildeintrag wurde gespeichert. $sqlab";# -$dateiname_neu- $sqlab- $Daten- Fehler:".mysql_error();

mysql_close ($Daten);  //Dastenbank schließen

echo "<br><br>Der Artikel <b>$artikel</b> wurde gespeichert<br><br>";
}


Aufruf mit
Code:
uploadBild($letzte_id, $breite, $hoehe, $dateiname, $typ);



Alle Variablen werden in einer Datei definiert und mit include eingelesen. In der Function werde alle Variablen mit Global definiert.

Irgendwo habe ich einen Fehler. Ich bin schon Tagen am suchen. Ich hoffe jemand hat einen Tip für mich. * Ich geb auf... *

Besten Dank im voraus.

Gruß
Tommy_D
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Do 04.05.2006 23:14
Titel

Antworten mit Zitat Zum Seitenanfang

Hast Du das Script mal mit
Code:
error_reporting(E_ALL)

laufen lassen?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
labrar

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Do 04.05.2006 23:18
Titel

Antworten mit Zitat Zum Seitenanfang

Ich tippe mal auf register_Globals

Versuch mal in der ersten Zeile

Code:
extract($HTTP_POST_VARS);

wobei damit das Teil nicht sicherer wird.

Wie sieht denn der Rest vom Script aus?


Zuletzt bearbeitet von labrar am Do 04.05.2006 23:19, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Tommy_D
Threadersteller

Dabei seit: 04.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 05.05.2006 07:31
Titel

Antworten mit Zitat Zum Seitenanfang

error_reporting(E_ALL); hat schon gereicht.
ich denke ich sollte mir angewöhnen da überall einzufügen.

Besten Dank für die Unterstützung.
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 05.05.2006 14:41
Titel

Antworten mit Zitat Zum Seitenanfang

Oh mein Gott! Was ist das denn??

Wieso in aller Welt arbeitest du denn da mit so vielen globalen Variablen? Das ist ganz schlechter Stil.
Du solltest versuchen, ohne globale Variablen auszukommen.
Das ist ganz schlechter Programmierstil und in den meisten Fällen überhaupt nicht notwendig.
Wenn es sein muß, dann übergib notfalls eine Variable als Referenz.

Zitat:
$ok = mysql_query($sqlab, $Daten) ;

Das sieht auch recht unschön aus. Hier solltest du lieber prüfen, ob was schiefgeht und notfalls eine Fehlermeldung ausgeben.
Code:
@mysql_query( $sqlab, $Daten) or die( 'Fehler: ' . mysql_error()' );


Zitat:
extract($HTTP_POST_VARS);

$HTTP_POST_VARS ist veraltet. Das gab es eigentlich nur mal kurz in der ersten PHP4-Version und jetzt ist es nur noch aus Kompatibilitätsgründen mit drin. Man kann sich nicht drauf verlassen, daß bei einem Hoster PHP so konfiguriert ist, daß es diese Arrays gibt.
Hier sollte $_POST verwendet werden. Dieses Array ist autoglobal, verhält sich also ein wenig anders als $HTTP_POST_VARS. Das werden viele aber sicherlich nicht einmal bemerken...

Tja und dann sollten Variablen niemals ungeprüft übernommen werden.
Ich sehe in deinem Script keine Prüfungen. Kann aber sein, daß die woanders stattgefunden haben (?).
Wenn Du Variablen an eine mysql_query() übergibst, dann solltest du z.B. immer mysql_real_escape_string() drauf anwenden, damit man dir keine SQL-Injection unterschummeln kann.
  View user's profile Private Nachricht senden
Tommy_D
Threadersteller

Dabei seit: 04.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 06.05.2006 18:25
Titel

Antworten mit Zitat Zum Seitenanfang

Da smit dem Stil ist so eine Sache. Meistens ist mann als Hobbyprogramierer ja froh wenn hinterher alles Läuft. Das mit den Global habe ich übrigens aus einem Buch.
$HTTP_POST_VARS hat man mir zur Fehlersuche epfohlen, hat aber nichts gebracht. Ist nur noch nicht wieder gelöscht

Püfungen füge ich dann ein, wenn der Rest funktioniert. sonst hat man viel Text bei der Fehlersuch zu lesen.
Aber besten Dank für den Tip mit dem Maskieren, Das werde ich gerne übernehmen. *bäh*
  View user's profile Private Nachricht senden
 
Ähnliche Themen [mysql/php] array speichern
[PHP, MySQL] Fließkommazahlen speichern - how to?
Javascript in Mysql DB speichern
daten von Oracle DB in MySql speichern
mit php login + registrieren und auf mysql db speichern
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.