php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-08-2012, 02:36
Blackbenji
 Registrierter Benutzer
Links : Onlinestatus : Blackbenji ist offline
Registriert seit: Aug 2012
Beiträge: 7
Blackbenji befindet sich auf einem aufstrebenden Ast
Standard SQL-Funktion (mit ifs) für mehrere Anfragen konfigurieren

Hallo,

ich habe eine Funktion die per SQL Datensätze aus der Datenbank lädt.

Ich möchte nur ungerne die gleiche Funktion kopieren und die WHERE klausel entfernen, also setze ich auf eine If-Abfrage innerhalb des SQL Strings.

es gibt zwei aufrufe, der eine ist ohne die "id", dabei sollen alle datensätze ausgegeben werden.
dann gibt es den aufruf mit "id", dabei soll nur ein datensatz ausgeliefert werden.

PHP-Code:
    public function fetchPageData($id) {
        
$page_content "";
        
$db_result $this->database->runSQLQuery("
        SELECT *,
        DATE_FORMAT(last_edit, '%d.%m.%Y') AS date_format,
        DATE_FORMAT(last_edit, '%H:%i:%s') AS time_format FROM "
.GLOBAL_PAGE_DB."
        "
.($id?' ':"WHERE id='".$id."'")
        );
        while(
$row mysql_fetch_array($db_resultMYSQL_ASSOC)) {
            
$state_name $this->state->Pull_State_Name($row['state']);
            
$page_content[] = array(
                
'id' => $row['id'],
                
'id_order' => $row['id_order'],
                
'name' => $row['name'],
                
'url' => $row['url'],
                
'content' => stripslashes($row['content']),
                
'date' => $row['date_format'],
                
'time' => $row['time_format'],
                
'state' => $row['state'],
                
'state_name' => $state_name,
            );
        }
        return 
$page_content;
    } 
das problem: der aufruf ohne id funktioniert, der aufruf mit id funktioniert nicht, auch hier werden alle datensätze angezeigt.

hat vielleicht jemand eine ahnung warum?

mfg
Mit Zitat antworten
  #2 (permalink)  
Alt 04-08-2012, 05:13
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Diese „type-cast-to-bool“-Bedingung beim Test auf „$id“ finde ich etwas merkwürdig.

Wie rufst du die Funktion denn jeweils konkret auf? Und Bonusfrage: Welcher Query-String wird dabei generiert?
Mit Zitat antworten
  #3 (permalink)  
Alt 04-08-2012, 08:16
Blackbenji
 Registrierter Benutzer
Links : Onlinestatus : Blackbenji ist offline
Registriert seit: Aug 2012
Beiträge: 7
Blackbenji befindet sich auf einem aufstrebenden Ast
Standard

hallo,

es gibt zwei aufrufe, der eine zum darstellen der "seiten" in form von:

PHP-Code:
$id TRUE;
$tpl->assign('content_array'$content->fetchContenData($id)); 
und dann gibt es einen aufruf innerhalb der switch-case abfrage:

PHP-Code:
        case "page":
            
$tpl->assign('page_content_array'$pages->fetchPageData($_GET['id']));
            
$tpl->display('page.html');
            break; 
wenn ich mir nun per var_dump $id angucke, ist es im oberen teil der seite der wert 1 und zeigt mir alle seiten an (richtig).

im unteren teil soll dann nur die gewählte seite angezeigt werden. die id der seite ist zb 2. auch var_dump gibt im unteren teil dafür eine 2 aus, dennoch werden alle möglichen seiten angezeigt.

zum sql string:

PHP-Code:
        echo ("
        SELECT *,
        DATE_FORMAT(last_edit, '%d.%m.%Y') AS date_format,
        DATE_FORMAT(last_edit, '%H:%i:%s') AS time_format FROM "
.GLOBAL_PAGE_DB."
        "
.($id?' ':"WHERE id='".$id."'")
        ); 
PHP-Code:
SELECT *,         DATE_FORMAT(last_edit'%d.%m.%Y') AS date_format,         DATE_FORMAT(last_edit'%H:%i:%s') AS time_format FROM blog_page 
also $id scheint garnicht abgefragt zu werden.
Mit Zitat antworten
  #4 (permalink)  
Alt 04-08-2012, 10:44
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Also…

PHP-Code:
($id?' ':"WHERE id='".$id."'"
…gibt jedenfalls für alle numerischen IDs ungleich 0 den String ' ' zurück. Das ist sicherlich anders beabsichtigt.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-08-2012, 15:45
Benutzerbild von steffomia steffomia
 Registrierter Benutzer
Links : Onlinestatus : steffomia ist offline
Registriert seit: Aug 2012
Beiträge: 40
steffomia befindet sich auf einem aufstrebenden Ast
Standard

Liegt wahrscheinlich daran, dass nie eine $id > 0 übergeben wird.
Denn sonst sieht das Script gut aus.
Und da ich noch nie einen auto_increment id < 1 gesehen habe, kann man durchaus $id ? ... : ... verwenden.
Bestenfalls würde ich (int) $id verwenden.
__________________
Wer keine Arbeit hat, der macht sich welche
XAMPP + NetBeans + XDebug(Xampp included) + SVN == FUN
Mit Zitat antworten
  #6 (permalink)  
Alt 04-08-2012, 16:29
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Blackbenji Beitrag anzeigen
wenn ich mir nun per var_dump $id angucke, ist es im oberen teil der seite der wert 1 und zeigt mir alle seiten an (richtig).
1 als „Pseudo-ID“ für „alle Seiten“ zu benutzen, und für die einzelnen Seiten dann IDs von 2 ab aufwärts zu vergeben, erscheint mir ziemlich widersinnig. Damit gibst du einem ID-Wert eine Sonderbedeutung, die mit der simplen logischen Bedeutung der restlichen IDs, einfach nur einen bestimmten Inhalt eindeutig zu identifizieren, nicht zusammen passt.

Schreib deine Funktion einfach so, dass sie den Parameter nur optional übergeben bekommt:
PHP-Code:
public function fetchPageData($getSpecificPageByid false) {
  
// …
  
queryfunction('query' . ($getSpecificPageByid !== false ' WHERE id = ' $getSpecificPageByid '') );
  
// …
}

$foo->fetchPageData();     // not asking for a specific page   -> fetches all pages
$foo->fetchPageData(4711); // asking for a specific page by id -> fetches that specific page 
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 04-08-2012, 16:48
Blackbenji
 Registrierter Benutzer
Links : Onlinestatus : Blackbenji ist offline
Registriert seit: Aug 2012
Beiträge: 7
Blackbenji befindet sich auf einem aufstrebenden Ast
Standard

hallo wahsaga,

vielen dank, ich habe es bei mir angepasst, und so funktioniert es auch!
gibt es irgendwo eine erklärung zu den optionalen parametern? lese jetzt das erste mal davon.

das mit den id's war etwas blöd beschrieben. 1 gibt nicht alle seiten an, sondern 1 hat var_dump ausgespuckt. nur das verhalten war richtig. id 1,2,3,4...sind entsprechende seiten.

danke für die unterstützung!
Mit Zitat antworten
  #8 (permalink)  
Alt 04-08-2012, 16:56
Benutzerbild von steffomia steffomia
 Registrierter Benutzer
Links : Onlinestatus : steffomia ist offline
Registriert seit: Aug 2012
Beiträge: 40
steffomia befindet sich auf einem aufstrebenden Ast
Standard

Da gibt es eigentlich nur eine Regel:
Nach einem optionalen Parameter darf kein nicht-optionaler Parameter mehr kommen.
Also das ist Fail:
PHP-Code:
function test($a$b ''$c
Das aber geht:
PHP-Code:
function test($a$b ''$c null
Dann gibt es noch :
PHP: func_get_args - Manual
und
PHP: func_num_args - Manual
und viele mehr...
__________________
Wer keine Arbeit hat, der macht sich welche
XAMPP + NetBeans + XDebug(Xampp included) + SVN == FUN
Mit Zitat antworten
  #9 (permalink)  
Alt 04-08-2012, 17:52
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Blackbenji Beitrag anzeigen
gibt es irgendwo eine erklärung zu den optionalen parametern? lese jetzt das erste mal davon.
http://www.php.net/manual/en/functio...uments.default
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL-Server wird mit Anfragen zuge***ssen EEBKiller SQL / Datenbanken 0 27-09-2010 03:41
[SQL allgemein] SQL JOIN - mit Abfrage über mehrere Datenbanken!! chris1980 SQL / Datenbanken 5 26-02-2008 13:57
SQL Anfragen brechen immer ab??? lifeloops SQL / Datenbanken 3 06-10-2006 14:08
[SQL allgemein] SQL Konfigurieren jekib SQL / Datenbanken 2 20-04-2006 16:49
[SQL allgemein] Suchergebnisse welche alle Anfragen enthalten?? RalfS SQL / Datenbanken 4 05-02-2004 12:27

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:49 Uhr.