Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

1 Funktion, aber 2 Parameter

Fragen zum Thema PHP können hier gestellt werden

Moderatoren: Basti, Guillermo, Andreas W.

1 Funktion, aber 2 Parameter

Beitragvon Patchie am 14.11.2011, 13:35

Hallo.

Ich habe meine Datenbank so aufgebaut, dass ich einmal tbl_content, mit sich nicht weiter veränderndem Inhalt habe und einmal tbl_news, die sich ständig um einen Eintrag erweitert.
Wie kann ich das jetzt in einer Funtkion auslesen?? :xx:

Mit GET und $id klappt alles ohne Probleme, doch wenn ich jetzt mit GET eine $news anhängen und abfragen möchte hab ich keine Idee, wie man das komplett in getData() reinbekommt. :dw:
Oder muss ich mit 2 Funktionen arbeiten?
Muss doch zu lösen sein. Haben doch ganz viele Seiten auch "News" die angerissen werden.... :?
Code: Alles auswählen
<?php
      
         function getData($id = '1', $news = '0') {
            
            global $sql;
            $select = "SELECT inhalt FROM tbl_rino_content WHERE id = {$id}  ";
             $sql    = mysql_query($select) or die('Fehler in der sql bei content.');            
            return $sql;
            
            global $sql;
            $select = "SELECT inhalt FROM tbl_rino_neuigkeiten WHERE news = {$news}  ";
             $sql    = mysql_query($select) or die('Fehler in der sql bei news.');            
            return $sql;
          }
         
         
         if(isset($_GET['id'])) {
            
            $machwas = getData($_GET['id']);
            
             while($daten = mysql_fetch_array($machwas)) {
                echo $daten['inhalt'];
             }
            
          } else {
            
            $machwas = getData();
            
             while($daten = mysql_fetch_array($machwas)) {
                echo $daten['inhalt'];
             }

          }
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: 1 Funktion, aber 2 Parameter

Beitragvon Basti am 14.11.2011, 19:19

Stehen Seiten und News in einer Beziehung zueinander oder handelt es sich um globale News?

Grundsätzlich rate ich davon ab, zu vieles in eine einzige Funktion packen zu wollen, gerade wenn es um Anzeigelogik geht. Im hinteren Teil nimmst du doch ohnehin eine Fallunterscheidung vor, sodass es auch kein Problem wäre, diese zu nutzen, um zwei unterschiedliche Funktionen aufzurufen.
Wenn du statische Inhalte und News in einer Funktion abhandeln möchtest, wirst du früher oder später Probleme bekommen, deine eigenen Quelltexte zu verstehen und zu erweitern. Um dem entgegenzuwirken, sind sprechende Namen übrigens eine nicht zu unterschätzende Bereicherung. ;)

Ich würde dir für den Anfang empfehlen, mit einer Funktion getStaticContent($id) und getNews($id) zu arbeiten. Auf diese Weise weißt du auch ohne die Implementierung zu kennen sofort, welchen Zweck diese Funktionen eigentlich erfüllen. Außerdem bleibst du flexibel für neue Inhaltstypen. Um die ein oder andere Fallunterscheidung wirst du sowieso nicht umher kommen.
Benutzeravatar
Basti
Site Admin
 
Beiträge: 3075
Registriert: 15.06.2006, 17:33
Wohnort: Kaiserslautern

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 09:08

Hm... ok.
Ich werd es dann mal mit 2 Funktionen versuchen :)
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 10:05

Ich habs jetzt mal so gelöst, aber da wurmt mich noch immer was.
arnold_content und arnold_news (Tabellen in meiner Datenbank) haben beide id und text. So bin ich doch nicht in der Lage zu unterscheiden WELCHE id gemeint ist??
Deshalb hab ich die "id" von arnold_news kurzerhand in "news" umbenannt.
Mach is das so richtig? ist eine kleine Webseite. Oder würden das "Profis" anders lösen?
Bitte kein OOP und keine "Informatiker" Lösungen. :wink:

Code: Alles auswählen
<?php
   echo 'test echo';
   function getStaticContent($id) {
      global $sql;
      $select = "SELECT * FROM arnold_content WHERE id= {$id}";
      $sql    = mysql_query($select) or die('fehler in der sql bei arnold content');
      return $sql;
   }
   function getNews($news) {
      global $sql;
      $select = "SELECT * FROM arnold_news WHERE news= {$news}";
      $sql    = mysql_query($select) or die('fehler in der sql bei arnold content');
      return $sql;
   }

   if( isset($_GET['id']) ) {
      
      $machwas =    getStaticContent($_GET['id']);
      while($daten = mysql_fetch_array($machwas)) {
         echo $daten['text'];
      }
   }

   if( isset($_GET['news']) ) {
      
      $machwas2 = getNews($_GET['$news']);
      while($daten = mysql_fetch_array($machwas2)) {
         echo $daten['text'];
      }
   }

   ?>
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Basti am 15.11.2011, 11:44

Beziehst du dich mit der ID auf den Namen des GET-Parameters?
Ohne zusätzliche Informationen zum Aufrufkontext ist es natürlich nicht möglich, die IDs zu unterscheiden. Deshalb kannst du entweder, so wie du es jetzt getan hast, mit zwei unterschiedlichen Namen arbeiten, oder eben mit der ID arbeiten und einen zusätzliche Parameter "news" verwenden, der ohne Wert übergeben wird und nur der Identifizierung von News-Unterseiten dient.
Gerade das Datenbankschema solltest du aber nicht zu sehr an Variablennamen in deiner Anwendung orientieren, dadurch leidet nämlich wieder die Verständlichkeit. Deshalb würde ich dort bei "id" bleiben. Auch der Parameter der getNews()-Funktion kann ohne Probleme in $id umbenannt werden, da der Name nur lokal sichtbar ist.

Es widerspricht sich übrigens ein wenig, wenn du danach fragst, wie "Profis" das lösen würden, gleichzeitig aber einen OOP-Ansatz und "Informatiker-Lösungen" kategorisch ausschließt. Richtig und falsch sind in der Software Entwicklung ohnehin sehr dehnbare Begriffe. ;)
Es gibt durchaus sauberere Lösungen für dein Problem, dafür braucht es aber auch die nötige Motivation und einen der Implementierung vorangestellten Entwurf. Die Frage, ob du daran interessiert bist, kannst wohl nur du beantworten. :)
Benutzeravatar
Basti
Site Admin
 
Beiträge: 3075
Registriert: 15.06.2006, 17:33
Wohnort: Kaiserslautern

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 12:19

kann kein oop :P :x :duckweg:
Noch nicht.

Ich werde es daher erstmal so weitermachen, bis ich es besser lösen kann :grossklein:

*gelöst* :)
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 12:45

Man soll den Tag nicht vor dem Abend loben... :? :( :x

Hab ich mich wieder mal zu füh gefreut. Meine Lösung funktioniert leider nicht bei includierten Dateien.

Code: Alles auswählen
function eingebetteteDatei($eingebettet) {
      global $zurueckwerfen;
      $zurueckwerfen = include('{$eingebettet}' . '.php');
      return $zurueckwerfen;
   }
// '#########################################
if( isset($_GET['eingebettet']) ) {
         eingebetteteDatei($_GET['eingebettet']);
         echo $zurueckwerfen;
      }
// '#########################################
<ul>
   <li><a href="?news=1">Arnold News</a></li>
    <li><a href="?id=1">Arnold Content</a></li>
    <li><a href="?eingebettet=include_test">Arnold Includiert</a></li>
</ul>


Warum klappt das nicht? :o0:

Das ist die Fehlermeldung:
Warning: include({$eingebettet}.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\htdocs_dino_v4\arnold_v2.php on line 43

Warning: include() [function.include]: Failed opening '{$eingebettet}.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\htdocs_dino_v4\arnold_v2.php on line 43
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 12:55

SO funktionert das, aber warum??
Code: Alles auswählen
function eingebetteteDatei($eingebettet) {
      global $zurueckwerfen;
      $darein = $eingebettet . '.php';
      $zurueckwerfen = include($darein);
      return $zurueckwerfen;
   }

Das versteh ich nicht ganz :(
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 15.11.2011, 13:21

Code: Alles auswählen
$zurueckwerfen = include("{$eingebettet}" . '.php');


Ok, mit ist noch nicht so ganz klar der Unterschied zwischen "" und ''.
Offenbar sind einfache Gänsefüßchen IMMER Strings in PHP und doppelte für Werterückgabe :handbuch:
So klappts dann auch ohne extra Variable :roll:
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22

Re: 1 Funktion, aber 2 Parameter

Beitragvon Basti am 15.11.2011, 15:05

Ja, den Unterschied muss man erst einmal kennen. Mit Rückgabewerten steht das allerdings in keiner Beziehung.

Doppelte Anführungszeichen beeinhalten zwar auch Strings, zusätzlich wird der Inhalt aber noch einmal vom PHP-Parser ausgewertet. D.h. wenn Variablen enthalten sind, werden diese durch ihre Werte ersetzt. Bei einfachen Anführungszeichen fällt diese Auswertung weg.
Deshalb sollten einfache Anführungszeichen aus Performance-Sicht immer dann verwendet werden, wenn keine Variablen enthalten sind. Die vorletzte Variante mit Konkatenation von Variablen und statischen Strings ist aber ebenfalls zu bevorzugen, da auch dies vom Parser besser zu verarbeiten ist als Strings mit eingebetteten Variablen.

PS: Bitte nutze zukünftig die Ändern-Funktion für deine Beiträge. Beim ersten Doppelpost habe ich noch ein Auge zugedrückt, aber vier Posts hintereinander sind wirklich zu viel. :rotekarte:
Benutzeravatar
Basti
Site Admin
 
Beiträge: 3075
Registriert: 15.06.2006, 17:33
Wohnort: Kaiserslautern

Re: 1 Funktion, aber 2 Parameter

Beitragvon Patchie am 21.11.2011, 09:52

PS: Bitte nutze zukünftig die Ändern-Funktion für deine Beiträge. Beim ersten Doppelpost habe ich noch ein Auge zugedrückt, aber vier Posts hintereinander sind wirklich zu viel. :rotekarte:


Tut mir leid... wollte nur, dass meine Sachen nachvollzogen werden können... :roll:
Habs dann aber doch am Ende selbst lösen können :)
Bin immer so panisch wenn was nicht funktioniert :xx:

Aber jetzt gehts mit php schon besser :) Nur halt nachlesen mit google :handbuch:
Patchie
Mitglied
 
Beiträge: 263
Registriert: 18.06.2008, 17:22


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast