tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Napofis
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
331
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Noeden Noeden ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    150
    Hallo Leute,
    ich hab ein Problem, was ich damals in der prozeduralen Programmierung wahrscheinlich nicht gehabt hätte. Ich schicke einen AJAX-Request zu meinem Server, woraufhin er einige Datenbankupdates machen soll, und die Seite neu rendern soll, damit die Aktualisierungen sichtbar werden. Um flexibel zu bleiben (Damit ich auch nur Datenbanken updaten kann oder mir nur die Seite neu Rendern lassen kann) habe ich mir zwei switchschleifen gebaut: (auszugsweise)

    PHP-Code:
    if( $ajax ){
                switch(
    true){
                    case 
    $get['edit'] == 'ref' && $get['refID']:
                        
    $this->updateRef(); //Datenbankupdates
                        
    break;
                }
                
                switch(
    true){
                    case 
    $get['screen'] == 'yes':
                        
    $content $this->renderContent(); //Siterendering
                        
    break;
                }
            }else{
                
    $content $this->renderContent();
            } 
    Sind jetzt nur die rel. Cases und etwas vereinfacht. In dem array $get sind die Get-Parameter. Naja auf jeden Fall bekomme ich per Ajax noch die alte Version geladen, nach einem Reload kommt erst die neue.

    Danke schonmal
    Noeden
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Switchschleife........ ist mMn hier ein falscher Ansatz. ein Einfacher if() sollte reichen

    Deine Logik wertet bei $ajax aus, ob $get['edit'] auf ^ref' steht und macht dann den Update.
    Der Content wird nur neu geladen, wenn $get['screen'] == 'yes'. Ansonsten wird kein neuer Content geladen. Ist diese Bedinung bei deinem Ajax-Aufruf erfüllt? Wenn nicht, wird $content nicht neu geladen
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Noeden Noeden ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    150
    Hmm, ich finde es so eleganter, sollte aber ja auf jeden Fall auf das gleiche hinauslaufen. Ich sehe auch in der Antwort die alte Version. Er führt die renderfunktion definitiv erneut aus und er updated auch auf jeden Fall die Datenbank.
     

  4. #4
    Avatar von Napofis
    Napofis Napofis ist offline require 'brain.php';
    Registriert seit
    Jun 2007
    Ort
    Bayern
    Beiträge
    587
    Zitat Zitat von Noeden Beitrag anzeigen
    PHP-Code:
    if( $ajax ){
                switch(
    true){
                    case 
    $get['edit'] == 'ref' && $get['refID']:
                        
    $this->updateRef(); //Datenbankupdates
                        
    break;
                }
                
                switch(
    true){
                    case 
    $get['screen'] == 'yes':
                        
    $content $this->renderContent(); //Siterendering
                        
    break;
                }
            }else{
                
    $content $this->renderContent();
            } 
    Im Prinzip das selbe wie:
    PHP-Code:
    if($ajax && $get['edit'] == 'ref' && $get['refID'])
        
    $this->updateRef();
    else
        
    $content $this->renderContent(); 
    Wenn der Rest von deinen Code auch so aufgebaut ist glaub ich das mit dem zu schnell eher weniger.
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Nope Napofis
    Es ist kein else. Sondern
    PHP-Code:
    if($ajax){
        if(
    $get['edit'] == 'ref' && $get['refID'])     $this->updateRef();
        if(
    $get['screen'] == 'yes')    $content $this->renderContent();
    }else{
        
    $content $this->renderContent();

    Noeden bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Noeden Noeden ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    150
    Ja, das weiß ich Ich habe den Code der Übersichtlichkeit halber nur gekürzt. Ich habe viel mehr Cases in den Switch-Schleifen. Ich bekomme aber keinen Fehler, und der Content wird neu gerendert, wenn ich nämlich nach Seitenaufbau und vor AJAX-Request eine Debugausgabe einfüge, bekomme ich die per AJAX. Aber wie gesagt, die alte Version von vor dem Datenbankupdate.

    PS: Ich gehe davon aus, dass das unerheblich ist, aber ich aktualisiere die Datenbank mit Funktionen aus Typo3 ( $GLOBALS['TYPO3_DB']->exec_UPDATEquery() ).
    Geändert von Noeden (11.01.12 um 15:38 Uhr)
     

  7. #7
    Avatar von Napofis
    Napofis Napofis ist offline require 'brain.php';
    Registriert seit
    Jun 2007
    Ort
    Bayern
    Beiträge
    587
    Im Prinzip schon aber wenn ich mir die Variablen so ansehe, lässt sich das bestimmt noch weiter verkürzen und der redundante Aufruf auslagern.

    Aber egal ich glaube der eigentliche Fehler liegt in den Operationen:
    $this->updateRef()
    $content = $this->renderContent()

    Eventuell ist es auch ein Caching Fehler?
    Noeden bedankt sich. 

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von Noeden Beitrag anzeigen
    PS: Ich gehe davon aus, dass das unerheblich ist, aber ich aktualisiere die Datenbank mit Funktionen aus Typo3 ( $GLOBALS['TYPO3_DB']->exec_UPDATEquery() ).
    Ich kenne Typo3 nicht. Ist die Frage ob diese Funktion den Code blockiert bis er Update durch ist oder nicht.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  9. #9
    Noeden Noeden ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    150
    Danke Napofis, ich bin schon selber drauf gekommen, ganz doofe Geschichte
    Das OOP verleitet dazu nur noch über das Interface nachzudenken. Wenn ich dem sage 'gib mir das', dann gibt er mir das. Naja. Ich hab am Anfang ein Array geschrieben, aus dem der Content kam, um die Datenbankabfragen zu minimieren. Da stand natürlich nicht das Update drin .

    Danke an Euch!

    Mann ist mir das peinlich
     

Ähnliche Themen

  1. Problem bei Datenbankupdate
    Von laempisch im Forum PHP
    Antworten: 7
    Letzter Beitrag: 25.02.08, 13:27
  2. Wie rendert man?
    Von NevLou im Forum Cinema 4D
    Antworten: 5
    Letzter Beitrag: 21.03.07, 23:09
  3. Datenbankupdate aus formular heraus
    Von papabaerchen im Forum PHP
    Antworten: 9
    Letzter Beitrag: 27.09.06, 08:44
  4. Antworten: 6
    Letzter Beitrag: 18.02.05, 17:33
  5. Seite springt zu schnell um
    Von guidograef im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 15.06.04, 00:06