php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2006, 22:47  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard Var außerhalb einer Funktion zur Verfügung stellen

Nabend,

ich bin völlig verwirrt, weil ich es einfach nicht hinbekomme.
Wo ist mein Problem?


PHP-Code:
function reArrange $modified ) {

    list(
$date$time) = explode(' '$modified);
    list(
$jahr$monat$tag) = explode('-'$date);
    
$modified $tag '.' $monat '.' $jahr;
    
    return;

Ich möchte den String $modified global oder zumindest an einer anderen Stelle außerhalb einer Funktion zur Verfügung stellen. Was mache ich dabei nicht richtig oder besser noch, wie bekomme ich diese Var außerhab dieser Funktion zur Verfügung gestellt?

Sorry, aber ich bin mir nicht mal sicher was return nun macht.
Sorgt return; oder return $modified; dafür, dass die var zurück an die Funktion gegeben wird, aus der der Funktionsaufruf gekommen ist?

Gruß
Tine
tinchen ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.08.2006, 22:56  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Für genau sowas gibts das Manual! ODER man kann es doch einfach mal ausprobieren ...


mach return $modified; und dann kannste mit $a = reArrange($modified); deine modifizierte Version von $modified bekommen.
Flor1an ist offline  
Alt 09.08.2006, 00:11  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Du wirst es nicht glauben, aber ausprobiert habe ich genug, auch deinen Vorschlag.
Trotzdem gibt es Probleme, da das Problem wohl an anderer Stelle zu suchen ist.

$option steht definitiv zur Verfügung
PHP-Code:
switch (strtolower($option)) {

    case 
'com_content'
        
contentFooterInfo $id );
        break;

    
//...

    
default : 
        
contentFooterInfo  $id=);
        break;


PHP-Code:
function contentFooterInfo $id ) {

    global 
$database;
    
// Datenbankabfrage beim Aufruf von Content
    // Bereitstellung von Bearbeiter und Datum der ?nderung

    
$query "SELECT modified FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified $database->loadResult();
    
    
$query "SELECT modified_by FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified_by $database->loadResult();

    
$query "SELECT name FROM users WHERE id=$modified_by ";
    
$database->setQuery($query);
    
$name $database->loadResult();

     
// Wenn Änderungsdatum leer, wird das Erstellungsdatum verwendet
    
if (empty($modified)) {

        
$query "SELECT created FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$modified $database->loadResult();

        
$query "SELECT created_by FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$created_by $database->loadResult();

        
$query "SELECT name FROM users WHERE id=$created_by ";
        
$database->setQuery($query);
        
$name $database->loadResult();
    }
    
    
reArrange $modified );

Ich sehe das Problem nicht. Am Ende dieser Funktion contentFooterInfo steht $modified zur Verfügung, aber in der Funktion reArrage ( $modified ) kommt nichts an.

Zudem bräuchte ich die Var $name auch aus der Funktion contentFooterInfo, weiß aber auch hier nicht so recht weiter, wie ich aus einer Funktion zwei verschiedene andere Funktionen aufrufen kann. Darf man am Ende der FunktioncontentFooterInfo schreiben:
reArrange ( $modified );
nameCheck ( $name );

Ausprobiert habe ich das schon lange, einen Fehler prodiziert es nicht, aber auch keine Ausgabe.

Gruß
Tine
tinchen ist offline  
Alt 09.08.2006, 00:19  
Erfahrener Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 121
JumperII
Standard

Hallo,

was willst Du eigentlich mit dem Aurfruf reArrange erreichen? Einen formatierten String oder eine Ausgabe des formatierten Strings? Ansonsten sehe ich in der Funktion so keinen Sinn .... Du erklärst z.Zt. ein Problem zu einer unbekannten gewünschten Lösung. Und soviel gibt Dein Quelltext nixht her, dass es selbsterklärend ist.

Gruß,
Jumper, the II.
JumperII ist offline  
Alt 09.08.2006, 00:54  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Ich möchte $modified an die Funktion reArrange übergeben.

PHP-Code:
function reArrange $modified ) {

    if (empty(
$modified)) {
        
$modified='unbekannt';
    } 
    else {
        list(
$date$time) = explode(' '$modified);
        list(
$jahr$monat$tag) = explode('-'$date);
        
$modified $tag '.' $monat '.' $jahr;
    }
    return 
$modified;

Damit ich dann auf der HP das Datum der letzten Aktualisierung per
<?php echo reArrange ( $modified ); ?>
ausgaben kann. Derzeit steht da aber ein 'unbekannt' und ich weiß nicht wo sich der Fehler eingeschlichen hat. Die $option und $id stehen zu Verfügung. Wenn ich das mit

PHP-Code:
if($option=='com_content') {
global 
$database;
    
// Datenbankabfrage beim Aufruf von Content
    // Bereitstellung von Bearbeiter und Datum der ?nderung

    
$query "SELECT modified FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified $database->loadResult();
    
    
$query "SELECT modified_by FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified_by $database->loadResult();

    
$query "SELECT name FROM users WHERE id=$modified_by ";
    
$database->setQuery($query);
    
$name $database->loadResult();

     
// Wenn ?nderungsdatum leer, wird das Erstellungsdatum verwendet
    
if (empty($modified)) {

        
$query "SELECT created FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$modified $database->loadResult();

        
$query "SELECT created_by FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$created_by $database->loadResult();

        
$query "SELECT name FROM users WHERE id=$created_by ";
        
$database->setQuery($query);
        
$name $database->loadResult();
    }

löse ist alles klar und Ausgabe ist da. Eingebettet in Funktionen wie contentFooterInfo über den switch geht es nicht und mir ist nicht klar warum.

Gruß
Tine
tinchen ist offline  
Alt 09.08.2006, 07:48  
Erfahrener Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 121
JumperII
Standard

Hallo Tinchen

jetzt habe ich ja einen 2. Quelltext, in der es die Funktion nicht mehr gibt, obwohl Du Dich im Text darauf beziehst ....

Aber ich denke, ich mische mal das Ganze etwas.
Mit <?php echo reArrange ( $modified ); ?> gibst Du den Rückgabewert der Funktion reArrange direkt auf der Seite aus. In der Funktion contentFooterInfo rufst Du zwar die Funktion reArrange auf, wirfst aber das Ergebnis einfach weg. Entweder möchtest Du das Ergebnis weiter herunter reichen, so dass Du mit <?php echo contentFooterInfo( $<name>); ?> dann den Inhalt ausgibst oder Du willst sie explizit einer globalen Variable zuweisen.
Bei ersterem Musst Du dann in der Funktion contentFooterInfo das Ergebnis von reArrange als Ergebnis weiter durchreichen (return reArrange( $modified)). Bei zweiteren eine globale Variable definieren, in der funktion contentFooterInfo kentlich machen und dann dieser variablen das Ergebnis von reArrange zuordnen ( $global_modified = reArrange( $modified)).

Gruß,
Jumper, the II.
JumperII ist offline  
Alt 13.08.2006, 23:38  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Hallo,

verstanden habe ich es immer noch nicht und ausprobiert habe ich nun vier Tage.
Ich verstehe das nicht. Ich habe doch geschrieben, dass ich es mit Funktionen
machen möchte, aber es nicht hinbekomme. Das Beispiel mit der if-Abfrage sollte
lediglich ein Beispiel dafür sein, dass alle Vars und Abfragen funktionieren bzw.
verarbeitet werden.

Noch mal kurz zusammengefasst was mein Problem ist.

PHP-Code:
//Aufruf per switch
switch (strtolower($option)) {

    case 
'com_content':
        
contentFooterInfo $id );
        break;

    case 
'com_xyz';
        
xyzFooterInfo $id );
        break;

    
//...und noch mehr

    
default :
        
contentFooterInfo  $id=);
        break;
}

function 
contentFooterInfo $id ) {

    global 
$database;
    
// Datenbankabfrage beim Aufruf von Content
    // Bereitstellung von Bearbeiter und Datum der ?nderung

    
$query "SELECT modified FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified $database->loadResult();
    
    
$query "SELECT modified_by FROM content WHERE id=$id ";
    
$database->setQuery($query);
    
$modified_by $database->loadResult();

    
$query "SELECT name FROM users WHERE id=$modified_by ";
    
$database->setQuery($query);
    
$name $database->loadResult();

     
// Wenn Änderungsdatum leer, wird das Erstellungsdatum verwendet
    
if (empty($modified)) {

        
$query "SELECT created FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$modified $database->loadResult();

        
$query "SELECT created_by FROM content WHERE id=$id ";
        
$database->setQuery($query);
        
$created_by $database->loadResult();

        
$query "SELECT name FROM users WHERE id=$created_by ";
        
$database->setQuery($query);
        
$name $database->loadResult();
    }
    
    
//was muss hier passieren? Aber was?
    
return $modified 
    
// was ist hier mit $name?

Die Var $modified und $name sollen hier an zwei verschiedene Funktionen weitergegeben werden.

PHP-Code:
function reArrange $modified ) {

    if (empty(
$modified)) {
        
$modified='unbekannt';
    } 
    else {
        list(
$date$time) = explode(' '$modified);
        list(
$jahr$monat$tag) = explode('-'$date);
        
$modified $tag '.' $monat '.' $jahr;
    }
    return 
$modified;

bzw.

PHP-Code:
function nameOutput $name ) {
    
    if(empty(
$name)) {
         
$name 'unbekannt';
    }

    return 
$name;

Auf der Seite wird dann per
PHP-Code:
 <div class="left">
       | Letzte Änderung [b]<?php echo reArrange $modified ); ?>[/b]
    | <?php echo  nameOutput $name ); ?>
</div>
Nun kommt die Var $modified bzw. $name aber nicht bei den entsprechenden
Funktionen an. Zudem weiß ich nicht genau, was ich tun muss, wenn ich zwei Variablen in aus einer Funktion in zwei verschiedene Funktionen übergeben möchte.
Zur Not kann man die Funktion nameOutput und reArrange auch zusammenfassen, aber dazu müsste ich erst einmal wissen, wie ich die beiden Vars aus der Funktion contentFooterInfo in die Funktion übergebe.

Ich habe nun
return $modified;
reArrange ( $modified );
oder ähnliches in allen Kombinationen ausprobiert. Geht so nicht.

Gruß
Tine
tinchen 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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
Array in rekursiver Funktion auslesen Gumfuzi PHP Tipps 2007 17 15.11.2005 12:01
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
Funktion() anwendung -bitte um Hilfe PHP Tipps 2004-2 17 08.12.2004 11:58
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wird die funktion zur verfügung gestellt, php variable in funktion zur verfügung stellen, php function global zur verfügung stellen, var außerhalb von einer funktion

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