php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.11.2008, 14:46  
Benutzer
 
Benutzerbild von echo
 
Registriert seit: 20.09.2008
Beiträge: 91
PHP-Kenntnisse:
Anfänger
echo ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Code innerhalb eines Skriptes übergeben

Hallo,

ich würde gerne wissen, ob folgendes mit PHP überhaupt möglich ist (bin immer noch am lernen ):

Kann man innerhalb eines Skriptes einen Code-Schnipsel definieren und diesen dann an beliebiger Stelle benutzen?

Bsp:

Ich habe einen Code, der lautet
Code:
$lala = "Hello World!";
Diesen Code möchte ich gerne in einer eigenen Variable speichern.
So funktioniert es aber leider nicht:

Code:
$codeschnipsel = '$lala = "Hello World!"';
echo $lala;
Ich weiß inzwischen, dass man das mit eigenen Funktionen machen kann. Was aber, wenn ich innerhalb einer Funktion einen Codeschnipsel brauche?

Bsp:
Für ein Skript brauche ich immer wieder eine while-Schleife. Jetzt möchte ich mir sparen, immer wieder diese while-Schleife zu tippen. Also mache eine Funktion:
Code:
function MyWhileSchleife($dasmussnochrein)
{
while($row = mysql_fetch_object($ergebnis))
   {
   echo $dasmussnochrein;
   }
} 


Cool wäre jetzt, wenn ich es irgendwie hinkriegen würde, das folgendes funzt:

Code:
 $codeschnipsel = '$row->url <br>';
MyWhileSchleife($codeschnipsel);
Wer hat ne Idee, wie das geht??

1000 Dank!!
Lisa

echo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.11.2008, 14:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Eine Möglichkeit: Du übergibst den Namen der Funktion, den Du als callback verwenden möchtest
PHP-Code:
<?php
function foo($x) {
  echo 
"--$x-- ";
}

function 
bar($callback) {
  foreach(array(
1,2,3,4,5) as $x) {
    
$callback($x);
  }
}

bar('foo');
?>
Dass Du den Namen der Funktion als Zeichenkette übergibst, ist eine Eigenheit von PHP.
In anderen Sprachen ist das etwas anderes gelöst.

Es geht auch anders, das Prinzip bleibt aber das selbe, deshalb erspare ich Dir das an dieser Stelle
David ist offline  
Alt 29.11.2008, 15:44  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Zu 1/
Auch diesmal die Frage: Warum willst Du das so machen?

Zu 2/
Das wird so nicht gehen. Es sei denn $ergebnis ist bekannt. Und selbst dann ist das keine gute Lösung.
__________________
--
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 29.11.2008, 15:59  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Zu 1/
Auch diesmal die Frage: Warum willst Du das so machen?
Bei array_map und in vielen anderen Fällen machen wir das doch auch so.
Ich habe das jetzt einfach mal als arg verkürztes Beispiel angesehen
David ist offline  
Alt 29.11.2008, 16:00  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Ich meine das erste Beispiel.
__________________
--
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 29.11.2008, 16:20  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ja, sehe ich halt als "naiven" (nicht negativ gemeint) Ansatz und verkürztes Beispiel.
David ist offline  
Alt 29.11.2008, 16:54  
Benutzer
 
Benutzerbild von echo
 
Registriert seit: 20.09.2008
Beiträge: 91
PHP-Kenntnisse:
Anfänger
echo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für die schnellen Antworten!!

Irgendwie raucht mir gerade der Kopf und ich komme nicht weiter.

Also, ich versuche wie gesagt eine MySql-Abfrage in eine Funktion zu packen:

PHP-Code:
<?php
function db_abfrage ($spalten$tabellen$codeschnipsel)
{
$abfrage "SELECT $spalten FROM $tabellen";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
   {
   
$codeschnipsel;
   }
}

db_abfrage ('st_title''seiten', ????);
?>
Es doll also definiert werden können, welche Spalten von welcher Tabelle abgefragt werden sollen und wie diese dann angezeigt werden sollen ($codeschnipsel).

$codeschnipsel soll z.B. so aussehen:
PHP-Code:
echo "$row->st_title <br>"
Bei ???? komme ich irgendwie nicht weiter.

Geändert von echo (29.11.2008 um 16:58 Uhr).
echo ist offline  
Alt 29.11.2008, 17:00  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Hallo,
soooo einfach wie du dir das vorstellst geht das nicht.
Du kannst es wie David vorgeschlage hat machen:
Schreibe für deinen "Codeschnipsel" eine extra Funktion. Deren Namen kannst du dann an deine db_abfrage()-Funktion übergeben. Dort rufst du dann deine Codeschnipsel-Funktion mit den gewünschten Parametern auf.

Genau das was du dir vorstellts ist das aber nicht. Das geht aber auch garnicht.
Du kannst dir mal Closures und Lambda-Funktionen anschauen (kommen in PHP6), das geht auch in die Richtung. Wenn du daber gerade erst mit PHP oder dem Programmieren angefangen hast, verwirrt das vielleicht nur...
agrajag ist offline  
Alt 29.11.2008, 21:27  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von agrajag Beitrag anzeigen
Hallo,
soooo einfach wie du dir das vorstellst geht das nicht.
Du kannst es wie David vorgeschlage hat machen:
Schreibe für deinen "Codeschnipsel" eine extra Funktion. Deren Namen kannst du dann an deine db_abfrage()-Funktion übergeben. Dort rufst du dann deine Codeschnipsel-Funktion mit den gewünschten Parametern auf.
Dein db_abfrage() ist mein bar(). Dein $codeschnipsel ist mein foo().
David ist offline  
Alt 30.11.2008, 01:24  
Benutzer
 
Benutzerbild von echo
 
Registriert seit: 20.09.2008
Beiträge: 91
PHP-Kenntnisse:
Anfänger
echo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nach langen Ausprobieren bin ich zu folgender Erkenntnis gelangt:
PHP-Code:
function test()
       {
       echo 
"$row->st_title <br>";  
       }
function 
db_abfrage ($spalten$tabellen)
{

 

$abfrage "SELECT $spalten FROM $tabellen";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
   {
  
   
test();
   }

Das funktioniert nicht.

Es scheint nur zu gehen, wenn man - wie in Davids Code - bei meiner Funktion test() (seine foo()) noch Parameter definiert. Das wäre aber so umständlich, dass ich genauso gut gleich die jeweilige while-Schleife ausschreiben kann.
echo 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] Steuckzahl wird inWarenkorb nicht übergeben! litterauspirna PHP Tipps 2008 4 22.08.2008 17:52
variable übergeben philips PHP Tipps 2006 6 08.01.2006 18:36
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
Werte von Paremeter übergeben seven-12 PHP Tipps 2007 1 02.11.2005 13:10
PHP innerhalb einer If-Anweisung krummzahn PHP Tipps 2005 4 27.04.2005 19:18
[Erledigt] BB Code entfernen PHP Tipps 2005 2 25.04.2005 15:20
code gesucht Beitragsarchiv 6 10.03.2005 03:14
Variablen übergeben innerhalb zwei php-Dateien PHP Tipps 2005 2 24.02.2005 14:15
Benutzereingaben von Formular prüfen (Sicherer Code?) PHP Tipps 2005 6 27.01.2005 10:16
Mausposition innerhalb eines Elementes Buhmann HTML, Usability und Barrierefreiheit 1 20.01.2005 16:58
code verstecken Skazi PHP Tipps 2005 4 19.01.2005 13:51
PHP-Datei ausführen und Ausgaben an Var übergeben - wie? zwelch PHP Tipps 2005 2 14.01.2005 18:46
[Erledigt] bb code innerhalb von bb code geht nicht PHP Tipps 2007 2 12.01.2005 17:29
Daten übergeben kampfnickel PHP Tipps 2005 4 05.01.2005 14:12
Array per Formular übergeben RoDa PHP Tipps 2004-2 10 16.11.2004 07:34


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