php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.08.2009, 10:16  
Neuer Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 5
Motzki befindet sich auf einem aufstrebenden Ast
Standard Problem mit der übergabe von variablen

Hallo Leute, ich bin noch ziemlich neu hier, aber dafür habe ich schon ein Problem welches ich nicht ganz Nachvollziehen kann.
Unzwar habe ich ein script, wo eine Funktion eine Datei ausliest und diese in ein globales Array speichern soll.

In der Funktion klappt es auch, nur leider nicht außerhalb.

PHP Quellcode:
$file ="file.csv";
$file_calc = "file2.csv";

$barpreis = $_POST['products_leasing'];

$type_nr = $_POST['type_nr'];
$geraetetyp = $_POST['type_nr'];
$provision = 7;
$realPath = realPath;


$Lauf_Zeiten = array(); // Simples Lauf_Zeiten-Array
$Hash_Map = array(); // Zuweisungs-Array


function prepare($realPath, $file) {
global $Hash_Map,$Lauf_Zeiten;

$fp = fopen($realPath.$file,"r");
$line = fgets($fp);
while ($line > "") {
if (substr($line,0,1) != "#" && trim($line) != "") { // Kommentare und Leerzeilen ignorieren
if (substr($line,0,3) == "XXX") { // Kopfzeile
$Lauf_Zeiten = split(";",$line);
} else { //Preiszeile
$lineArray = split(";",$line);
for ($i=1;$i<sizeof($lineArray);$i++) {
$Hash_Map[trim($lineArray[0])][trim($Lauf_Zeiten[$i])] = trim($lineArray[$i]);
}
}
}
$line = fgets($fp);
}

fclose($fp);
}




$values = $Hash_Map[$barpreis];



in der Variable $values soll nun die Zeile wiedergegeben werden welche den Barpreis enthält.

Nur leider wird mir die Varriable mit NULL angezeigt.

in der Funktion wird mir die komplette Datei in der varriable mit var_dump angezeigt.

Dazu muss ich noch sagen, das ich das gleiche schon im Template integriert habe. Dort funktioniert es wunderbar ohne Probleme.

Was mache ich falsch????

die Variable Hash_Map ist in der Funktion gefüllt mit der kompletten Datei die ausgelesen wurde. Jetzt habe ich mal ein wenig getestet und wenn ich jetzt ausserhalb der funktion folgendes eintrage:

var_dump($Hash_Map[300]);

bekomme ich NULL ausgegeben.

In der Funktion wird mir die richtige zeile ausgegeben.
Ich versuche diese script in die
admin/includes/classes/categories.php einzufügen. in die Funktion "Function insert_product" Vielleicht hilft dir das etwas weiter.

Mit dem Template geht das so. XTC-Shop und wenn ich beim template xt4 die Raten ausgegeben haben möchte, muß ich die product_info.php ändern. dort habe ich das gleiche script eingefügt und es wird mir dort dann auch die Raten angezeigt. Bei der product_info.php ist die Funktion aber in keiner Klasse eingebaut.
Motzki ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.08.2009, 10:20  
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

Willkommen,

kannste du bitte [php] // dein Code[/php] verwenden, dann kann man deinen Code besser lesen!

php.de - BB-Code Liste


Gruß
Asipak ist offline  
Alt 06.08.2009, 10:24  
Neuer Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 5
Motzki befindet sich auf einem aufstrebenden Ast
Standard

Ich hoffe das es besser ist.

PHP-Code:
$file ="file.csv"
$file_calc "file2.csv";
 
$barpreis $_POST['products_leasing'];
 
$type_nr $_POST['type_nr'];
$geraetetyp $_POST['type_nr'];
$provision 7;
$realPath realPath;
 
 
$Lauf_Zeiten = array(); // Simples Lauf_Zeiten-Array
$Hash_Map = array(); // Zuweisungs-Array
 
 
function prepare($realPath$file) {
global 
$Hash_Map,$Lauf_Zeiten;
 
$fp fopen($realPath.$file,"r");
$line fgets($fp);
while (
$line "") {
if (
substr($line,0,1) != "#" && trim($line) != "") { // Kommentare und Leerzeilen ignorieren
if (substr($line,0,3) == "XXX") { // Kopfzeile
$Lauf_Zeiten split(";",$line);
} else { 
//Preiszeile
$lineArray split(";",$line);
for (
$i=1;$i<sizeof($lineArray);$i++) {
$Hash_Map[trim($lineArray[0])][trim($Lauf_Zeiten[$i])] = trim($lineArray[$i]);
}
}
}
$line fgets($fp); 
}
 
fclose($fp);
}
 
 
 
 
$values $Hash_Map[$barpreis]; 
Motzki ist offline  
Alt 06.08.2009, 12:01  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Also erstens sehe ich nirgends einen Aufruf der Funktion prepare().
Und zweitens stimmt diese Zeile mit Sicherheit nicht:
PHP-Code:
$realPath realPath
realPath() ist eine Funktion und benötigt einen Parameter!

Wenn realPath eine zuvor von Dir definierte Konstante ist, wäre die Zeile korrekt, ABER ebenso überflüssig.
Deshalb gehe ich davon aus, daß Du realPath() falsch verwendest...

Geändert von Arne Drews (06.08.2009 um 12:01 Uhr). Grund: Wichtige Klammern vergessen!
Arne Drews ist offline  
Alt 06.08.2009, 12:04  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ach ja,

bitte verwende auch Zeileneinrückung, in etwa so:
PHP-Code:
$file ="file.csv"
$file_calc "file2.csv";
 
$barpreis $_POST['products_leasing'];
 
$type_nr $_POST['type_nr'];
$geraetetyp $_POST['type_nr'];
$provision 7;
$realPath realPath;
 
 
$Lauf_Zeiten = array(); // Simples Lauf_Zeiten-Array
$Hash_Map = array(); // Zuweisungs-Array
 
 
function prepare($realPath$file) {
    global 
$Hash_Map,$Lauf_Zeiten;
 
    
$fp fopen($realPath.$file,"r");
    
$line fgets($fp);

    while (
$line "") {
        if (
substr($line,0,1) != "#" && trim($line) != "") { // Kommentare und Leerzeilen ignorieren
            
if (substr($line,0,3) == "XXX") { // Kopfzeile
                
$Lauf_Zeiten split(";",$line);
            } else { 
//Preiszeile
                
$lineArray split(";",$line);
                for (
$i=1;$i<sizeof($lineArray);$i++) {
                    
$Hash_Map[trim($lineArray[0])][trim($Lauf_Zeiten[$i])] = trim($lineArray[$i]);
                }
            }
        }
    
        
$line fgets($fp); 
    }
 
    
fclose($fp);

Es hat kaum einer Lust, den von Dir geposteten Quelltext zu durchforsten.
Mit Einrückung ist's übersichtlicher...
Arne Drews ist offline  
Alt 06.08.2009, 12:10  
Neuer Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 5
Motzki befindet sich auf einem aufstrebenden Ast
Standard

Hallo Arne,

ich habe wohl etwas vergessen zu posten. sorry
PHP-Code:
 
$file 
="file.csv";  
$file_calc "file2.csv"
  
define("realPath",DIR_WS_LEASING);

$barpreis $_POST['products_leasing']; 
  
$type_nr $_POST['type_nr']; 
$geraetetyp $_POST['type_nr']; 
$provision 7
$realPath realPath
  
  
$Lauf_Zeiten = array(); // Simples Lauf_Zeiten-Array 
$Hash_Map = array(); // Zuweisungs-Array 
  
  
function prepare($realPath$file) { 
    global 
$Hash_Map,$Lauf_Zeiten
  
    
$fp fopen($realPath.$file,"r"); 
    
$line fgets($fp); 

    while (
$line "") { 
        if (
substr($line,0,1) != "#" && trim($line) != "") { // Kommentare und Leerzeilen ignorieren 
            
if (substr($line,0,3) == "XXX") { // Kopfzeile 
                
$Lauf_Zeiten split(";",$line); 
            } else { 
//Preiszeile 
                
$lineArray split(";",$line); 
                for (
$i=1;$i<sizeof($lineArray);$i++) { 
                    
$Hash_Map[trim($lineArray[0])][trim($Lauf_Zeiten[$i])] = trim($lineArray[$i]); 
                } 
            } 
        } 
     
        
$line fgets($fp);  
    } 
  
    
fclose($fp); 
}  
 
 
$fileName "file.csv";
prepare(realPath$fileName); 
$values $hashMap[prepareBarpreis($barpreis)]; 
so sieht es in meinem script aus. die Funktion wird aufgerufen und dann soll die zuständige zeile an eine variable übergeben werden.
Motzki ist offline  
Alt 06.08.2009, 12:21  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Fehlermeldung? Error reporing an?
Was passiert denn bisher?
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline  
Alt 06.08.2009, 12:24  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ändere mal bitte
PHP-Code:
    $line fgets($fp); 

    while (
$line "") { ... 
in
PHP-Code:
    while ($line fgets($fp)) { ... 
Naja, und dann macht wie gesagt diese Zeile
PHP-Code:
$realPath realPath
keinen Sinn mehr.

Konstanten kannst Du überall verwenden, auch in Funktionen.
Dazu brauchst Du keine zusätzliche Variable definieren.
Arne Drews ist offline  
Alt 06.08.2009, 13:15  
Neuer Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 5
Motzki befindet sich auf einem aufstrebenden Ast
Standard

ich habe es mal geändert, aber es kommt nicht der Erfolg den ich haben möchte.

Also zum Punkt "realPath":
ich habe realPath einen Pfad zugewiesen, wo er die csv Dateien finden soll. Dieser wird benötigt.

PHP-Code:
define("realPath",DIR_WS_LEASING
ich möchte jetzt eigentlich nur die Werte, welche in der globalen Variable $Hash_Map() gespeichert wurden aus der Funktion in das normale script übernehmen. Und das klappt bei mir hier nicht. Ich habe schon geschrieben, das es unter den Templates funktioniert. Kann es vielleicht damit zusammen hängen, das die Werte in einer Class anders behandelt werden als im normalen Script??????
Motzki ist offline  
Alt 06.08.2009, 13:34  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Bin jetzt nicht ganz sicher, aber probier mal das hier:
PHP-Code:
$fileName "file.csv";
$file_calc "file2.csv"
  
define("realPath",DIR_WS_LEASING);

$barpreis $_POST['products_leasing']; 
  
$type_nr $_POST['type_nr']; 
$geraetetyp $_POST['type_nr']; 
$provision 7

$Lauf_Zeiten = array(); // Simples Lauf_Zeiten-Array 
$Hash_Map = array(); // Zuweisungs-Array 


function prepare($fileName) {
  global 
$Lauf_Zeiten$Hash_Map;

  
$fp fopen(realPath.$file,"r");
  while (
$line fgets($fp)) {
    if (
substr($line,0,1) != "#" && trim($line) != "") {
      if (
substr($line,0,3) == "XXX"$Lauf_Zeiten split(";",$line);
      else {
        
$lineArray split(";",$line);
        for (
$i=1;$i<sizeof($lineArray);$i++) $Hash_Map[trim($lineArray[0])][trim($Lauf_Zeiten[$i])] = trim($lineArray[$i]);
      }
    }
  }
 
  
fclose($fp);
}


prepare($fileName); 
$values $hashMap[prepareBarpreis($barpreis)]; 
Arne Drews 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
Problem mit Variablen eugen06 PHP Tipps 2008 3 31.12.2008 15:53
PHP variablen Übergabe für MySQL Abfrage mindenator PHP Tipps 2008 10 28.12.2008 03:01
[Erledigt] Problem mit Variablen in MySQL-Query Mr.Karl PHP Tipps 2008 18 05.09.2008 00:18
Erklärung zur Übergabe von Variablen Supeede PHP Tipps 2008 3 04.05.2008 13:01
Verzweifel... Get Variablen übergabe klappt nur temporär? KillePille PHP Tipps 2008 1 27.02.2008 23:14
Problem mit der Variablen übergabe... PHP Tipps 2007 22 02.12.2005 09:05
Dynamische Werte übergabe? Logik Problem jesus666 PHP Tipps 2005-2 21 03.08.2005 17:30
[Erledigt] Denkanstoß: Übergabe von nicht definierten Variablen PHP-Fortgeschrittene 11 23.07.2005 00:18
POST Problem: Übergabe von Formulardaten Asipak PHP Tipps 2005-2 19 19.07.2005 11:12
Variablen Übergabe PHP - JavaScript - PHP PHP Tipps 2005-2 3 13.06.2005 14:48
Übergabe eines wertes an eine Variablen PHP Tipps 2005-2 3 07.06.2005 17:56
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
variablen ausgabe problem..... PHP Tipps 2005 3 06.01.2005 02:27
[Erledigt] variablen problem PHP-Fortgeschrittene 2 29.09.2004 21:49
Problem mit dem Rechen mit Variablen PHP Tipps 2004 2 10.07.2004 14:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
realpath not working variable, php fgets variablen, realpath falsch, übergabe von variablen aus php class, php variable an javascript übergeben xtc, pfade werden per realpath falsch gespeichert php, insert_product function xtc

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