Ergebnis 1 bis 20 von 20

Thema: HOWTO: get page_id by alias ?

  1. #1
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard HOWTO: get page_id by alias ?

    ich empfange via input->get ein query und gebe es als php string $alias (= ?meineid=meineseite) korrekt aus (meineseite).

    die ganze php-abfrage geschiet im template: fe_page (print_r($alias) = meineseite)

    wie kann ich jetzt über get die id des zugehörigen alias zurück geben (reutrn oder z.B. als XML) ??


    grund: jQuery.ajax();

  2. #2
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zu einem Alias die Passende id ausgeben kannst du über eine Datenbankabfrage!? WHERE alias = ?

  3. #3
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    Zitat Zitat von psren Beitrag anzeigen
    Zu einem Alias die Passende id ausgeben kannst du über eine Datenbankabfrage!? WHERE alias = ?
    wo genau kann ich das am schnellsten abfragen ?
    Code:
    $id = $this->Database->prepare("SELECT alias FROM ?? WHERE alias="+$alias)
    Geändert von mae (31.07.2011 um 15:28 Uhr)

  4. #4
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Die Seitenaliase sind in der Tabelle tl_page gespeichert.

  5. #5
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Was filtert denn Input->get alles (bzw. was nicht?)

    PHP-Code:
    $id $this->Database->prepare("SELECT alias FROM tl_page WHERE alias=?") ->execute($this->Input->get('param')) 
    so ists aber richtig oder?
    Geändert von psren (31.07.2011 um 16:21 Uhr)

  6. #6
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    ja, so ist es richtig. Wobei du die " durch ' ersetzen kannst. Ist ein Speed-Vorteil.
    Dankeschön für die Info. Das mit der execute Methode wusste ich schon, ich hatte mir nur nicht den Query-Versuch von mae angeschaut, sondern direkt die Tabelle gepostet ;-) Hätte besser lesen sollen. Aber das mit dem Geschwindigkeitsvorteil wusste ich nicht.
    Woher kommt das?

  7. #7
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    ganz einfach, in " sucht PHP nach variablen und ersetzt diese. In ' ist das nicht der Fall, da wird der String einfach als ganzes verarbeitet. Daher IMMER wenn man keine " braucht die einfachen verwenden.
    Ah okay Danke für die einfache Erklärung. Bei Strings benutze ich auch immer die einfachen. Hatte aber in irgendeiner Doku zur Database Klasse das so gesehen. (Ah, habs gefunden, war hier im Wiki)

  8. #8
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    besten dank !

    ich komme eigentlich aus der as3/air/js/ruby welt, daher ist contao mein erster php gehversuch. folgendes habe ich zusammengezimmert:


    fe_page.tpl
    PHP-Code:

    <?php

    $request 
    $this->Environment->request;
    $query parse_url($request); //eine php-core-function ? die urls automatisch parst (praktisch!)

    //check ob der parameter direkt über 
    // base (http://mydomain.com/?aliasToID=startseite) abgegeben wird 
    // ! und nicht über alias (http://mydomain.com/startseite.html?aliasToID=startseite oder http://mydomain.com/startseite/meineseite.html?aliasToID=meineseite (folderurl)

    if (($query['path']) === null): 

    $request $this->Environment->request;
    $result parse_url($request['query']);
    $result_keyed array_reverse(explode('='$query['query']), true); //aufräumen..

        
    function getPageIDByAlias($param)
        {
        
                        
    $objID $this->Database->prepare("SELECT alias FROM tl_page WHERE alias=?")
                                                ->
    execute($param);
                                                
                                     return 
    $objID;
             }


            return (
    getPageIDByAlias($result_keyed[1]));

    ?>
    Code:
    Fatal error: Call to a member function getPageIDByAlias() on a non-object
    was stimmt hier nicht ? O_o
    Geändert von mae (01.08.2011 um 01:44 Uhr)

  9. #9
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    In der Kürze liegt die Würze !

    fe_page.tpl > http://meineseite.com/?aliasToID=startseite
    PHP-Code:
    $request $this->Environment->request;
    $query parse_url($request);

    //check ob direkt über index.php abgefragt wird
    if (($query['path']) === null):  

    $query $this->Input->get('aliasToID');

    $this->import('Database');

                        
    $objID $this->Database->prepare("SELECT alias FROM tl_page WHERE alias=?")
                                                ->
    execute($query);

            
    print_r($objID); endif ; 
    Resultat
    Code:
    DB_Mysql_Result Object ( [resResult:protected] => Resource id #91 [strQuery:protected] => SELECT alias FROM tl_page WHERE alias='startseite' [intIndex:Database_Result:private] => -1 [intRowIndex:Database_Result:private] => -1 [blnDone:Database_Result:private] => [blnModified:Database_Result:private] => [arrCache:protected] => Array ( ) )
    works !

    das macht jetzt den eindruck eines arrays, wenn ich das richtig sehe - oder wie kann man das jetzt weiterverarbeiten?

  10. #10
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    besten dank! wieder was gelernt und ein weiterer grund, keine belletristik mehr von O'Reillys zu beziehen ^^

  11. #11
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard


    convert page-alias to id by using url parameters

    special thanks goes to: leo.unglaub

    note: this snippet works for singledomain installations only


    PHP-Code:


            
    // fe_page.tpl
            //
            // ORIGINAL: http://mysite.com/JohnDoeGoesNaked.html
            // - - 
            // #REQUEST: http://mysite.com/?aliasToID=JohnDoeGoesNaked       -> result: 5

            
    $query $this->Input->get('aliasToID');

            if (
    $query !== null):  

                
    $this->import('Database');

                    
    //check that alias is also in table:tl_page (sql) > return it to objID
                    
    $objID $this->Database->prepare("SELECT alias FROM tl_page WHERE alias=?")
                                            ->
    executeUncached($query);

                    
    //check if objID is true (alias is in table:tl_page)
                    
    if($objID->fetchAssoc() == true):

                        
    //get id by alias -> new sql request
                        
    $result $this->Database->prepare("SELECT id FROM tl_page WHERE alias=?")
                                                ->
    execute($query);
                                                
    $result $result->fetchAssoc();
                                                
    $result $result['id'];

                        
    //flush it out...
                        
    print_r($result);

                    ; else:

                        
    //flush on error too...
                        
    print_r("error")

                    ; endif; 

            ; endif; 


    ? was genau ist der unterschied zwischen executeUncached und execute ?
    ? wie kann man dies jetzt verschönern, z.B. durch GET/POST
    ? ist print_r(error) überhaupt sinnvoll, bzw. was sollte man ansonsten senden (Sicherheit)?
    Geändert von mae (01.08.2011 um 14:36 Uhr)

  12. #12
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.647
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    ja, es ist auch oft im Core nicht zu 100% durchgesetzt. Es ist einfach unschön un unnötig, da es einfach mehr unnütze CPU Zeit ist. Es ist genau so unsinnig wie Leute die das schliesende ?> weglassen. Es geht zwar, ist aber auch unschön
    no comment

    @mae: was ich nicht verstehe, du führst die Query nur aus wenn in der URL nichts drin steht ($query == '')?
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  13. #13
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    no comment

    @mae: was ich nicht verstehe, du führst die Query nur aus wenn in der URL nichts drin steht ($query == '')?
    oups, korrigiert !

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.572
    User beschenken
    Wunschliste

    Standard

    Das geht jetzt aber nur bei einer Singledomain Installation korrekt, oder?
    Denn in einer Multidomain Installtion könnte es vorkommen, das ein Alias je Domain existiert (impressum), die SQL Abfrage würde somit auch mal 2 oder mehr Ergebnisse bringen.

    Ist vielleicht für mae's Fall nicht wichtig, aber wer das hier gleich rauskopiert und auch nutzen will, sollte das beachten.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  15. #15
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Das geht jetzt aber nur bei einer Singledomain Installation korrekt, oder?
    Denn in einer Multidomain Installtion könnte es vorkommen, das ein Alias je Domain existiert (impressum), die SQL Abfrage würde somit auch mal 2 oder mehr Ergebnisse bringen.

    Ist vielleicht für mae's Fall nicht wichtig, aber wer das hier gleich rauskopiert und auch nutzen will, sollte das beachten.

    habe einen entsprechenden hinweis beigefügt, danke !

  16. #16
    Contao-Nutzer
    Registriert seit
    14.11.2011.
    Beiträge
    16

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    Es ist genau so unsinnig wie Leute die das schliesende ?> weglassen. Es geht zwar, ist aber auch unschön
    Also - ich lass' das regelmäßig weg. Somit spare ich mir grundsätzlich das Risiko einer unsichtbaren ausgegebenen Zeile, die mir gerne mal den Header durch Includes verhunzt, wenn ohne output-buffering gearbeitet wird.
    Ich hab 'ne Ewigkeit gebraucht und Tonnen von grauen Haaren kassiert, um damals den Fehler zu finden…
    Soweit ich weiß, hat es aber auch keinen weiteren Nachteil…?

    Hank

  17. #17
    Contao-Nutzer
    Registriert seit
    14.11.2011.
    Beiträge
    16

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    Das hatten wir doch schon soooo oft. Warum grabt ihr immer wieder diese alten teile aus? Ich sage es ganz klar wie es ist, wenn man seinen Editor nicht soweit im griff hat, dass man nach den ?> keinen whitespace hat, Gelöscht wg. Verstoß gegen die Foren-Regeln.


    http://choosetheforce.blogspot.com/2...t-php-tag.html
    Gelöscht wg. Verstoß gegen die Foren-Regeln.
    DU hast das Thema hier doch angeschnitten, dann beschwer' Dich doch jetzt bitte nicht.

    Ich weiß ja nicht, wie es anderen geht, aber a) zeichne ich mich nicht für den Code und die Dateien anderer verantwortlich, und b) erhebe ich auf gar keinen Fall den Anspruch perfekt und fehlerfrei zu sein.
    Gelöscht wg. Verstoß gegen die Foren-Regeln..

    Grad scheint das nicht der Fall zu sein.

    Hank
    Geändert von alex (02.12.2011 um 11:17 Uhr)

  18. #18
    Contao-Fan Avatar von RainerG
    Registriert seit
    22.05.2011.
    Ort
    Hannover
    Beiträge
    851

    Standard

    Bitte bleibt sachlich!
    Rainer G. aus H.
    www.BunteReisebilder.de

  19. #19
    Contao-Nutzer
    Registriert seit
    14.11.2011.
    Beiträge
    16

    Standard

    Ja, Du hast recht. Danke für den Hinweis. Post wurde überarbeitet.

    Hank

  20. #20
    Community-Moderator Avatar von schman
    Registriert seit
    20.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von RainerG Beitrag anzeigen
    Bitte bleibt sachlich!
    Das gilt auch für dich leo.unglaub.

    Auf jeden Fall hab ich das Thema jetzt mal geschlossen.
    Kein Privat Support via PM.

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •