php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.04.2007, 13:39  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard datenbankabfrage nach funktionsübergabe

Hallo,
Ich habe eine funktion geschrieben die mir eine Datenbankabfrage macht und ein erfebnis mit allen passenden Datensätzen zurückgeben soll.
PHP-Code:
function aufseitenverteilen($spaltenname,$tabellenname,$zusatzbedingungen,$ergebnissproseite,$aktuellereintrag)
    {
    
$returnarray = array(); //return mehrerer Variablen
    
include("dp_db_connexion.php"); //DB
    
$query "SELECT ".$spaltenname." FROM ".$tabellenname." ".$zusatzbedingungen."LIMIT ".($aktuellereintrag).", ".$ergebnissproseite;
    
$result mysql_query($query) or die (mysql_error()); 

wenn ich $result zurückgeben würde, dann hab ich nur eine Ressourcen-Kennung, die ich aber wie mir scheint nicht in meinem anderen Script nutzen kann um damit eine DB-Abfrage auszuführen.
Nun hab ich mir überlegt, dass ich einfach in der Funktion eine while schleife anlege und die ergebnisse einfach in ein neues array schreibe und
dies dann mit übergebe - das kommt mir aber viel zu umständlich vor und ich bin mir fast sicher, dass ihr mir eine bessere Lösung parat habt.

danke + grüße
Obi
obi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.04.2007, 14:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Nein das ist eigentlich weder umständlich noch unüblich.

Einer Funktion übergibst du eine Reihe von Parametern und diese liefert dir ein komplettes Ergebnis zurück, das keiner weiteren Bearbeitung mehr bedarf.

Allerdings nimmt dir deine aktuelle Funktion noch relativ wenig Arbeit ab.
Ich würde das LIMIT zB durch eine Seitenangabe ersetzen (Parameter $page = 1 erzeugt LIMIT 0, 30, wobei $ergebnisproseite einen Default-Wert in der Funktion zugewiesen bekäme) und auch $zusatzbedingungen mit einem Default-Wert belegen und diesen damit ans Ende der Parameterliste stellen.

PHP-Code:
<?php
<?php function aufseitenverteilen($spaltenname$tabellenname$seite 1$ergebnisseproseite 30$zusatzbedingungen '')
?>
Im besten Fall reduzierst du so die Anzahl deiner Parameter von 5 auf 2.
Zergling-new ist offline  
Alt 11.04.2007, 17:43  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo obi,

mir gefällt das Design der Funktion nicht, weil sie dir eigentlich nicht wirklich viel "Arbeit" erspart. Du musst dich auch ausserhalb der Funktion noch mit SQL-Stataments rumschlagen und kannst nicht einfach sagen

PHP-Code:
<?php
   
function getPageEntries($Type,$CurrentPage){

      
// Lese Konfiguration für $Type

      // Lese Einträge für $CurrentPage

      // Gebe Seite zurück
      
return $PageEntries;

   }

   
$aPageEntries getPageEntries('Gaestebuch',1);

   foreach(
$aPageEntries as $PageEntry){
      
print_r($PageEntry);
   }
?>
Überdenke nochmal das Design, denn wiederverwendbar ist die Funktion zwar schon einigermaßen, aber Arbeit abnehmen tut sie dir nicht wirklich.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.04.2007, 01:11  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

ok gut, ich weiß was ihr meint.
Aber meine Frage ist eher technischer Natur, denn ich weiß nicht, wie ich das ordentlich hinbekomme.
Mal angenommen ich übergebe der Funktion die Spaltennamen id, name, beruf, dann hätte ich in der funktion irgendwie sowas:

PHP-Code:
$sQuery"select $spalten from $tabelle LIMIt 1,10";
$result mysql_query($sQuery); 
Wie verfahre ich nun weiter, dass ich das passende array zurückgeben kann.
wenn ich nun z.B. eine while Schleife in der Funktion hätte müsste ich ja die spaltennamen wissen (die ja von anwendungsfall zu anwendungsfall variieren)
- also irgendwie trennen mit ereg_irgendwas ?!

PHP-Code:
$aAusgabe = array();
while (
$row mysql_fetch_array($result))
{
$aAusgabe[][0] = $row["id"];
$aAusgabe[][1] = $row["name"];
$aAusgabe[][2] = $row["beruf"];
}
return(
$aAusgabe
und dann im anderen Teil:
PHP-Code:
 $aPageEntries getPageEntries('tabelle2000','id, name, beruf');
 foreach(
$aPageEntries as $PageEntry){
      
print_r($PageEntry);
   } 
Das meinte ich eigentlich mit umständlich.
obi ist offline  
Alt 12.04.2007, 09:28  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von obi
wenn ich nun z.B. eine while Schleife in der Funktion hätte müsste ich ja die spaltennamen wissen
Nein warum? Aber ganz abgesehen davon kennst du sie ja, denn sie werden als Parameter übergeben.

PHP-Code:
<?php
function ..(..)
{
  
$sQuery 'SELECT ..';
  
$rQuery mysql_query($sQuery) or die(mysql_error());
  
$aData = array();
  while (
$aRow mysql_fetch_assoc($rQuery)) {
    
$aData[] = $aRow;
  }
  return 
$aData;
}
?>
Zergling-new ist offline  
Alt 12.04.2007, 16:29  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

ah, ja sehr cool, danke jetzt funktioniert's.
obi ist offline  
Alt 12.04.2007, 17:43  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

mir ist noch ein Problem eingefallen:
In der Funktion werden auch gleich die buttons für das Blättern generiert ($_PHP_SELF ruft seite erneut mit neuer seitenzahl auf), meine Seiten sind oft so aufgebaut, das eine variable in der adresszeile (Bsp.: seite.com?navigation=gaestebuch) die navigation steuert.
Wenn ich nun die seiten durchblättern will muss ich diese Variable in der funktion anhängen, ansonsten kann man nicht blättern.
gibt es ne möglichkeit diese variablen beim PHP_SELF zu behalten?
obi ist offline  
Alt 12.04.2007, 17:48  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo obi,

du musst dir eine weitere Funktion bauen, die dir Links behandeln (=erzeugen) kann. Einer solche Funktion übergibst du einfach die aktuelle URL und was du geändert haben möchtest - sprich die Seiten-Variable ausgetauscht. Rückgabe-Wert ist dann die neue URL. Ich habe so ein Tool in meinem Framework. Wenn du möchtest kannst du dir dort mal im Ordner apps/tools/link in der Datei linHandler.php ein Bild machen, wie soetwas aussieht. Downloaden kannst du das Package unter http://christian.zierpflanzenberatun...mo_package.zip.


EDIT: Arbeite besser mit $_SERVER['REQUEST_URI'], das steht der komplette Request-String drin.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 13.04.2007, 01:28  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

dann hab ich aber das problem dass die alten seitenangaben nicht überschrieben werden:

obi ist offline  
Alt 13.04.2007, 02:01  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Doch, denn meine linkHandler-Klasse parst die URL und überschreibt - falls du die Parameter überschrieben haben möchtest - diese. Schau dir die mal an...

Aufruf mit z.B.

PHP-Code:
<?php
   define
('APPS__URL_REWRITING',false);
   echo 
linkHandler::generateLink('http://www.daily-picks.de/seitenverteilentest.php?erstereintrag=1?erstereintrag=11', array('erstereintrag' => '2'));
?>
Die Konstante muss definiert werden, da man mit dieser einen Schalter für URL-Rewritete URLs hat.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. 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
Datenbankabfrage mit variablen select-Auswahlfeldern tinchen PHP Tipps 2006 1 11.04.2006 10:40
Struktur der Datenbankabfrage tinchen PHP Tipps 2006 2 07.04.2006 13:35
Ergebnisse einer Datenbankabfrage in eine Function packen Plague PHP Tipps 2006 26 28.02.2006 11:13
Datenbankabfrage mit Eingabe des Benutzers PHP Tipps 2006 4 20.02.2006 10:27
Begrenzte Datenbankabfrage PHP Tipps 2006 7 13.02.2006 16:55
problem bei distinct datenbankabfrage... Promaetheus Datenbanken 2 25.01.2006 17:28
Probleme bei Datenbankabfrage - blättern maccoder PHP Tipps 2005-2 2 23.10.2005 05:18
[Erledigt] 2 verschiedene Datum vergleichen - Datenbankabfrage Datenbanken 3 19.06.2005 10:29
datenbankabfrage faultier PHP Tipps 2005-2 10 13.06.2005 11:40
Datenbankabfrage Serverübergreifend PHP Tipps 2005 22 04.05.2005 12:42
Datenbankabfrage: Ergebnisse anzeigen PHP Tipps 2005 5 07.04.2005 10:31
Datenbankabfrage für Singlesuche ThaRider Datenbanken 6 27.03.2005 09:35
suche bestimmte Datenbankabfrage mit SUM() Datenbanken 4 21.01.2005 13:40
zu langsame Datenbankabfrage Datenbanken 3 09.11.2004 16:24
[Erledigt] Datenbankabfrage Datenbanken 4 30.10.2004 22:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
funktionen für viele datenbankabfragen, php datenbankabfrage mit function, datenbankabfrage limit, php datenbankabfrage variablen aus adresszeile

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