#1 26. November 2009 Variable kann nicht übergeben werden. Hallo Leute, ich habe folgendes Problem und hoffe ihr seit so nett und könnt mir helfen: Und zwar bekomme ich es nicht hin, in den Fettabgedruckten Abschnitt eine Variable zu übergeben. Ich habe diese Variablen mit GET übergeben und lese sie weiter oben im Code aus und kann sie an der Stelle auch direkt ausgeben. Nur irgendwie nicht in der Uploadfunktion. PHP: $art = $_GET [ 'art' ]; if ( $art == 1 ){ $lid = 0 ;}else{ $lid = $_GET [ 'lid' ];} Leider zeigt er immer keinen Wert an wenn ich mir die Variablen in dieser Funktion anzeigen lassen will. (echo $lid Muss ich die Variablen zwingend an die Funktion übergeben? Und wenn ja wie? Bin ne Programmier niete Ich möchte Sie hier in das 2. MYSQL Statement hinzufügen. PHP: // Daten speichern $orginalname = mysql_real_escape_string ( $orginal );IF ( Art == 1 ){ MYSQL_QUERY ( "INSERT INTO easylist_picupload (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight, Art, Listenid) VALUES('', ' $user_id ', NOW(), ' $uploadverzeichnis ',' $orginalname ', ' $rand_value ', ' $endung ', ' $dateigroesse ', ' $picinfo [ 0 ] ', ' $picinfo [ 1 ] ', '1', '0')" );}else{ MYSQL_QUERY ( "INSERT INTO easylist_picupload (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight, Art, Listenid) VALUES('', ' $user_id ', NOW(), ' $uploadverzeichnis ',' $orginalname ', ' $rand_value ', ' $endung ', ' $dateigroesse ', ' $picinfo [ 0 ] ', ' $picinfo [ 1 ] ', '2', ' $lid ')" );} header ( "Location: ./upload.php" );exit;} Hier nochmal der Komplette Code: PHP: <? php # DB Host $server = "##############" ; # DB Name $datenbank = "#############" ; # DB Username $user = "###########" ; # DB Passwort $passwort = "#############" ; MYSQL_CONNECT ( $server , $user , $passwort ) or die ( "<H3>Datenbankserver nicht erreichbar</H3>" ); MYSQL_SELECT_DB ( $datenbank ) or die ( "<H3>Datenbank nicht vorhanden</H3>" ); $art = $_GET [ 'art' ]; if ( $art == 1 ){ $lid = 0 ;}else{ $lid = $_GET [ 'lid' ];} // Aktionen und Menue fuer diese Datei// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // if (isset( $_GET [ 'action' ]) && $_GET [ 'action' ] != "" ) { $action = $_GET [ 'action' ];}elseif (isset( $_POST [ 'action' ]) && $_POST [ 'action' ] != "" ) { $action = $_POST [ 'action' ];} switch ( $action ) {case "upload" : upload (); break;default: formular (); break;} // Uploadformular// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // function formular ( $printfehler = "" ) { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript">function insertbildlink(wert1) {opener.document.forms.Formular.elements.eintrag_bild.value=wert1;window.close(); }</script> <style type="text/css">body {background-color: #f7f7f7;font-family: Verdana, Arial;font-size: 12px;color: #000000;} .tborder {background-color: #979cb0;} .tdkopf {background-color: #dedfe4;padding: 3px;border: 1px solid #ffffff;font-size: 11px;} .tdcont {background-color: #ffffff;padding: 3px;font-size: 11px;width: 50%;} form { display: inline;} .fc {border: 1px solid #65698d;font-size: 11px;background-color: #ffffff;} .button {border: 1px solid #65698d;font-size: 11px;background-color: #bac0cd;} </style></head><body><div align="center"> <?php // Fiktive USER ID $user_id = 1 ; // Auslesen der Gesamtsumme aller gespeicherten Bytes ?> <form action="upload.php" method="post" enctype="multipart/form-data"><input type="hidden" name="action" value="upload"><input type="hidden" name="user_id" value="<?php echo $user_id ; ?>"><input type="hidden" name="art" value="<?php echo $art ; ?>"><input type="hidden" name="lid" value="<?php echo $lid ; ?>"><table cellspacing="1" cellpadding="0" border="0" width="500" class="tborder"><tr></tr><tr> <td class="tdcont" colspan="2"><?php echo $printfehler ; ?> </td></tr><tr> <td class="tdkopf" colspan="2"><b>» Dateiupload</b></td></tr><tr> <td class="tdcont">Datei auswählen</td> <td class="tdcont"><input class="fc" type="file" name="datei"></td></tr><tr> <td class="tdcont" colspan="2">Erlaubt sind Dateien mit der Endung: jpg, jpeg, gif und png mit einer max. Dateigröße von 500 kb.</td></tr><tr> <td class="tdkopf" colspan="2" align="center"><input class="button" type="submit" name="upload" value="Datei hochladen"></td></tr></table></form><br> <?php // Ausgabe der Bilder des Users IF ( Art == 1 ){ $query = "SELECT DATE_FORMAT( pictime, '%d.%c.%Y um %H:%i:%S Uhr' ) AS datum, picverz, pvorn, pend, picbytes, picwidth, picheight FROM easylist_picupload WHERE userid = ' $user_id ' AND Art = '1' ORDER BY pictime DESC" ;}else{ $query = "SELECT DATE_FORMAT( pictime, '%d.%c.%Y um %H:%i:%S Uhr' ) AS datum, picverz, pvorn, pend, picbytes, picwidth, picheight FROM easylist_picupload WHERE userid = ' $user_id ' AND Art = 2 AND Listenid = '35' ORDER BY pictime DESC" ;} $result = mysql_query ( $query ); $reihen = mysql_num_rows ( $result ); if ( mysql_num_rows ( $result )) { # Ausgabe while ( $daten = mysql_fetch_array ( $result )) { echo 'Datei vom:' . $daten [ datum ]. '<br><img src="' . $daten [ picverz ] . '/' . $daten [ pvorn ] . '.' . $daten [ pend ]. '" border="0" width="250" height="200" alt="Bild mit ' . $daten [ picbytes ]. ' Bytes">' ;echo "<b><br><br>Diesen Link kopieren:</b><br><input name='url' type='text' size='42' maxlength='120' value='/" , $daten [ picverz ], "/" , $daten [ pvorn ], "." , $daten [ pend ], "'>" ; ?> <a href='#' onClick='insertbildlink("<? echo "/" , $daten [ picverz ], "/" , $daten [ pvorn ], "." , $daten [ pend ] ?>")'>Bild auswählen!<br><br><hr></a> <?php }} ?> </div></body></html> <?php } // Uploadfunktion// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // function upload () { // Array mit erlaubten Dateiendungen $arr_erlaube_dateityp = array( gif , jpg , jpeg , png ); $dateiname = $_FILES [ 'datei' ][ 'name' ] ; // User ID $user_id = $_POST [ 'user_id' ]; $user_id = preg_replace ( "/[^0-9]/" , "" , $user_id ); if ( $dateiname != '' ) { $dateiname = preg_replace ( "/[^0-9a-zA-Z\.]/" , "_" , $dateiname );} // Dateiendung ermitteln $punkt = strrpos ( $dateiname , '.' ); $laenge = strlen ( $dateiname ); $endung = strtolower ( substr ( $dateiname , -( $laenge - $punkt - 1 ))); $orginal = strtolower ( substr ( $dateiname , 0 , -( $laenge - $punkt ))); // Fehlerbehandlung// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // $fehlermeldung = "" ; $fehler_gefunden = "" ; // Name Check $errormeldung = "<li>Es wurde keine Datei ausgewählt\n" ;if (empty( $dateiname )) { $fehlermeldung = $fehlermeldung . $errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "<li>Der gewählte Dateityp ist nicht erlaubt\n" ;if (! in_array ( $endung , $arr_erlaube_dateityp ) && !empty( $dateiname )) { $fehlermeldung = $fehlermeldung . $errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "<li>Die gewählte Datei ist zu groß, upload abgelehnt. Max 500 kb Dateigröße sind gestattet.\n" ;if ( $_FILES [ 'datei' ][ 'size' ] > ( 500 * 1024 )) { $fehlermeldung = $fehlermeldung . $errormeldung ; $fehler_gefunden = 1 ; } // Wenn Fehler - dann aufruf der Fehlerausgabe... if ( $fehler_gefunden ) { $printfehler = "<ol> $fehlermeldung </ol>" ; formular ( $printfehler );exit;} // Zufaelligen Dateiname aus Orginalbildname und Zeit basteln $bildzeit = time (); $rand_value = randomstring ( $bildzeit . $orginal ); $savename = $rand_value . ". $endung " ; // In welches Verzeichnis soll die Datei $uploadverzeichnis = 'images/upload' ; // Keine Fehler, dann speichern if ( $printfehler == '' ) { move_uploaded_file ( $_FILES [ 'datei' ][ 'tmp_name' ], $uploadverzeichnis . '/' . $savename );} // Dateigroesse und Bildabmessungen auslesen $dateigroesse = filesize ( $uploadverzeichnis . '/' . $savename ); $picinfo = getimagesize ( $uploadverzeichnis . '/' . $savename ); // Daten speichern $orginalname = mysql_real_escape_string ( $orginal );IF ( Art == 1 ){ MYSQL_QUERY ( "INSERT INTO easylist_picupload (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight, Art, Listenid) VALUES('', ' $user_id ', NOW(), ' $uploadverzeichnis ',' $orginalname ', ' $rand_value ', ' $endung ', ' $dateigroesse ', ' $picinfo [ 0 ] ', ' $picinfo [ 1 ] ', '1', '0')" );}else{ MYSQL_QUERY ( "INSERT INTO easylist_picupload (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight, Art, Listenid) VALUES('', ' $user_id ', NOW(), ' $uploadverzeichnis ',' $orginalname ', ' $rand_value ', ' $endung ', ' $dateigroesse ', ' $picinfo [ 0 ] ', ' $picinfo [ 1 ] ', '2', ' $lid ')" );} header ( "Location: ./upload.php" );exit;} // Zufallszeichen fuer Dateiname// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // function randomstring ( $dateiname ) { $dateiname = strtolower ( substr ( md5 ( microtime ()), 0 , 20 ));return $dateiname ;} MYSQL_CLOSE (); ?> + Multi-Zitat Zitieren
#2 26. November 2009 AW: Variable kann nicht übergeben werden. Gehört eher zu Webentwicklung. + Multi-Zitat Zitieren
#3 26. November 2009 AW: Variable kann nicht übergeben werden. Hallo Viruz2005, ich probiere mal dir etwas zu helfen, sogut ich kann. beim durchlesen ist mir mehrere fehler aufgefallen: PHP: // Daten speichern $orginalname = mysql_real_escape_string ( $orginal ); IF ( Art == 1 ) // ist Art einen constante oder eine variable ? MYSQL_CONNECT ( $server , $user , $passwort ) or die ( "<H3>Datenbankserver nicht erreichbar</H3>" ); MYSQL_SELECT_DB ( $datenbank ) or die ( "<H3>Datenbank nicht vorhanden</H3>" ); // ersetzen durch $connect = MYSQL_CONNECT ( $server , $user , $passwort ) or die ( "<H3>Datenbankserver nicht erreichbar</H3>" ); MYSQL_SELECT_DB ( $datenbank , $connect ) or die ( "<H3>Datenbank nicht vorhanden</H3>" ); und bei den querys : MYSQL_QUERY ( "SQL" , $connect ); + Multi-Zitat Zitieren
#4 26. November 2009 AW: Variable kann nicht übergeben werden. Das ist eine Varibale die ich beim öffnen dieses Uploadfenster übergebe. Diese Variable wird später immer passend übergeben je nachdem wie die Art und die ID der Liste ist. Zu Testzwecken habe ich feste Werte in die java funktion geschrieben) HTML: function fenster1() { var win; win=window.open("upload.php?art=2&lid=35","Ueberschrift","height=450,width=555, scrollbars=yes"); } + Multi-Zitat Zitieren
#5 26. November 2009 AW: Variable kann nicht übergeben werden. dann muss es als variable deklariert werden. also "Art" durch "$Art" ersetzen. da php "Art" als eine konstante implementiert.. + Multi-Zitat Zitieren
#6 26. November 2009 AW: Variable kann nicht übergeben werden. Oh ja ich Depp^^ Habe das behoben aber der Upload funktioniert immer noch nicht. Beim klicken des Upload Button kommt trotzdem kein Bild rein. Der übernimmt einfach die Variablen im letzten SQL Statement nicht in die Datenbank. Vielleicht übergebe ich die weiter unten im Code auch falsch... bin völlig überfragt + Multi-Zitat Zitieren
#7 26. November 2009 AW: Variable kann nicht übergeben werden. kann daran liegen das die variablen bei der query nicht ersetzt werden. probiers mal damit PHP: // anstatt $query = "SELECT DATE_FORMAT( pictime, '%d.%c.%Y um %H:%i:%S Uhr' ) AS datum, picverz, pvorn, pend, picbytes, picwidth, picheight FROM easylist_picupload WHERE userid = ' $user_id ' AND Art = '1' ORDER BY pictime DESC" ; // folgendes $query = "SELECT DATE_FORMAT( pictime, '%d.%c.%Y um %H:%i:%S Uhr' ) AS datum, picverz, pvorn, pend, picbytes, picwidth, picheight FROM easylist_picupload WHERE userid = '" . $user_id . "' AND Art = '1' ORDER BY pictime DESC" ; @ der tabellename "easylist_picupload" passt nicht ganz zu dem ganzen script ^^. daten wie: breite und höhe des bildes braucht man nicht speichern. man kann nämlich die daten mit getimagesize() jeder zeit holen. + Multi-Zitat Zitieren
#8 26. November 2009 AW: Variable kann nicht übergeben werden. Oh ja ich Depp^^ Habe das behoben aber der Upload funktioniert immer noch nicht. Beim klicken des Upload Button kommt trotzdem kein Bild rein. Der übernimmt einfach die Variablen im letzten SQL Statement nicht in die Datenbank. Vielleicht übergebe ich die weiter unten im Code auch falsch... bin völlig überfragt Er macht dein Eintrag in der DB aber der Wert lid ist immer 0 + Multi-Zitat Zitieren
#9 26. November 2009 AW: Variable kann nicht übergeben werden. sowie ich es verstehe, soll die $lid wert "0" haben wenn $_GET['art'] gleich 1 ist. probiers mal mit ?art=0 du hast noch ein paar fehler im script: PHP: // fehler while ( $daten = mysql_fetch_array ( $result )) { echo 'Datei vom:' . $daten [ datum ].... // $daten[datum] durch $daten['datum'] ersetzen, und alle weitere in der schleife + Multi-Zitat Zitieren
#10 26. November 2009 AW: Variable kann nicht übergeben werden. Leider waren die Fehler nicht der Grund. + Multi-Zitat Zitieren
#11 27. November 2009 AW: Variable kann nicht übergeben werden. Es geht um folgendes, oder?!: und da wird das $lid nicht eingetragen?! dann lass das $lid mal direkt vor der funktion ausgeben, und sonst nirgendwo. Gibt er es da aus, ist der wert auf jeden fall in der variable. Dann kannst du die hälfte davon weglassen, um fehler zu beseitigen, also: am besten schreibst du den query zuerst in eine variable, da merkst du dann ob da schon fehler drin sind, dann erst die funktion benutzen. und dann solltest du variablen im query besser mit '".$lid."' einfügen. Wenns dann noch nicht funktioniert, schreib mal echo mysql_error; dadrunter und lass dir den fehler ausgeben. + Multi-Zitat Zitieren