Toon posts:

[PHP] Meerdere functies gebruiken

Pagina: 1
Acties:
  • 98 views sinds 30-01-2008

Verwijderd

Topicstarter
Het is niet zo'n hoogstaande vraag denk ik, maar ik kom er niet helemaal uit.

Ik ben bezig een plugin voor wordpress aan het editten. In deze plugin wil ik meerdere functies aanroepen. Dat lukt me ook maar ik denk dat ik daarvoor veel-te-veel code gebruik. Ik zoek dus naar een manier om het sneller en stabieler te maken.

Dit is het origineel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function c2c_get_recent_posts ($num_posts = 5, 
    $format = "<li>%post_date%: %post_URL%</li>", 
    $categories = '',        // space separated list of category IDs -- leave empty to get all 
    $orderby = 'date', 
    $order = 'DESC',        // either 'ASC' (ascending) or 'DESC' (descending) 
    $offset = 0,            // number of posts to skip 
    $date_format = 'm/d/Y',        // Date format, php-style, if different from blog's date-format setting 
    $authors = '',            // space separated list of author IDs -- leave empty to get all 
    $include_passworded_posts = false) 
{ 
    global $wpdb, $tablecomments, $tableposts, $tablepost2cat; 
    if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments; 
    if (!isset($tablepost2cat)) $tablepost2cat = $wpdb->post2cat; 
    if (!isset($tableposts)) $tableposts = $wpdb->posts; 
    if ($order != 'ASC') $order = 'DESC'; 
    if ('max_comment_date' == $orderby) { $add_recent_comment_to_sql = 1; } 
    else { 
        if ($orderby != 'rand()') $orderby = "$tableposts.post_$orderby"; 
        $add_recent_comment_to_sql = 0; 
    } 
    $include_sticky_posts = true; 
     
    $now = current_time('mysql'); 
    if ($add_recent_comment_to_sql) $sql = "SELECT $tableposts.*, MAX(comment_date) AS max_comment_date FROM $tablecomments, $tableposts "; 
    else $sql = "SELECT DISTINCT * FROM $tableposts "; 
    if ($categories) { 
        $sql .= "LEFT JOIN $tablepost2cat ON ($tableposts.ID = $tablepost2cat.post_id) "; 
        $cats = explode(' ', $categories); 
    } 
    $sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' "; 
    if ($include_sticky_posts) $sql .= "OR $tableposts.post_status = 'sticky' "; 
    $sql .= ") "; 
    if (!$include_passworded_posts) $sql .= "AND $tableposts.post_password = '' "; 
    if ($add_recent_comment_to_sql) $sql .= "AND $tableposts.ID = $tablecomments.comment_post_ID AND $tablecomments.comment_approved = '1' "; 
    if ($categories) { 
        $first = 1; 
        $sql .= "AND ( "; 
        foreach ($cats as $cat) { 
            if ($first) $first = 0; 
            else $sql .= "OR "; 
            $sql .= "$tablepost2cat.category_id = '$cat' "; 
        } 
        $sql .= ") "; 
    } 
    if ($authors) { 
        $auths = explode(' ', $authors); 
        $first = 1; 
        $sql .= "AND ( "; 
        foreach ($auths as $author) { 
            if ($first) $first = 0; 
            else $sql .= "OR "; 
            $sql .= "$tableposts.post_author = '$author' "; 
        } 
        $sql .= ") "; 
    } 
    if ('modified' == $orderby) $sql .= "AND $tableposts.post_modified_gmt <= '$now' "; 
    $sql .= "GROUP BY $tableposts.ID ORDER BY $orderby $order"; 
    if ($num_posts) $sql .= " LIMIT $offset, $num_posts"; 
    $posts = array(); 
    $posts = $wpdb->get_results($sql); 
    if (empty($posts)) return; 
    return c2c_get_recent_handler($posts, $format, $date_format); 
} //end function c2c_get_recent_posts()


Dit 10 keer onder elkaar plakken werkt, het enige wat ik daarbij hoef te doen is de functie een andere naam geven. Maar dan krijg je denk ik teveel overbodige code.

Vandaar dat ik dit geprobeerd heb (twee functies onder elkaar):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function c2c_get_recent_posts ($num_posts = 1, 
    $format = "<li>%post_date%: %post_URL%</li>", 
    $categories = '1',        // space separated list of category IDs -- leave empty to get all 
    $orderby = 'date', 
    $order = 'DESC',        // either 'ASC' (ascending) or 'DESC' (descending) 
    $offset = 0,            // number of posts to skip 
    $date_format = 'm/d/Y',        // Date format, php-style, if different from blog's date-format setting 
    $authors = '',            // space separated list of author IDs -- leave empty to get all 
    $include_passworded_posts = false) 

function c2c_get_recent_posts2 ($num_posts = 10, 
    $format = "<li>%post_date%: %post_URL% %post_excerpt_short%</li>", 
    $categories = '2',        // space separated list of category IDs -- leave empty to get all 
    $orderby = 'date', 
    $order = 'DESC',        // either 'ASC' (ascending) or 'DESC' (descending) 
    $offset = 0,            // number of posts to skip 
    $date_format = 'm/d/Y',        // Date format, php-style, if different from blog's date-format setting 
    $authors = '',            // space separated list of author IDs -- leave empty to get all 
    $include_passworded_posts = false) 
{ 
    global $wpdb, $tablecomments, $tableposts, $tablepost2cat; 
    if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments; 
    if (!isset($tablepost2cat)) $tablepost2cat = $wpdb->post2cat; 
    if (!isset($tableposts)) $tableposts = $wpdb->posts; 
    if ($order != 'ASC') $order = 'DESC'; 
    if ('max_comment_date' == $orderby) { $add_recent_comment_to_sql = 1; } 
    else { 
        if ($orderby != 'rand()') $orderby = "$tableposts.post_$orderby"; 
        $add_recent_comment_to_sql = 0; 
    } 
    $include_sticky_posts = true; 
     
    $now = current_time('mysql'); 
    if ($add_recent_comment_to_sql) $sql = "SELECT $tableposts.*, MAX(comment_date) AS max_comment_date FROM $tablecomments, $tableposts "; 
    else $sql = "SELECT DISTINCT * FROM $tableposts "; 
    if ($categories) { 
        $sql .= "LEFT JOIN $tablepost2cat ON ($tableposts.ID = $tablepost2cat.post_id) "; 
        $cats = explode(' ', $categories); 
    } 
    $sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' "; 
    if ($include_sticky_posts) $sql .= "OR $tableposts.post_status = 'sticky' "; 
    $sql .= ") "; 
    if (!$include_passworded_posts) $sql .= "AND $tableposts.post_password = '' "; 
    if ($add_recent_comment_to_sql) $sql .= "AND $tableposts.ID = $tablecomments.comment_post_ID AND $tablecomments.comment_approved = '1' "; 
    if ($categories) { 
        $first = 1; 
        $sql .= "AND ( "; 
        foreach ($cats as $cat) { 
            if ($first) $first = 0; 
            else $sql .= "OR "; 
            $sql .= "$tablepost2cat.category_id = '$cat' "; 
        } 
        $sql .= ") "; 
    } 
    if ($authors) { 
        $auths = explode(' ', $authors); 
        $first = 1; 
        $sql .= "AND ( "; 
        foreach ($auths as $author) { 
            if ($first) $first = 0; 
            else $sql .= "OR "; 
            $sql .= "$tableposts.post_author = '$author' "; 
        } 
        $sql .= ") "; 
    } 
    if ('modified' == $orderby) $sql .= "AND $tableposts.post_modified_gmt <= '$now' "; 
    $sql .= "GROUP BY $tableposts.ID ORDER BY $orderby $order"; 
    if ($num_posts) $sql .= " LIMIT $offset, $num_posts"; 
    $posts = array(); 
    $posts = $wpdb->get_results($sql); 
    if (empty($posts)) return; 
    return c2c_get_recent_handler($posts, $format, $date_format); 
} //end function c2c_get_recent_posts() 


Alle hulp is van harte welkom.

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Een functie kan je toch meerdere keren aanroepen. Vandaar de naam functie 8)7
PHP:
1
2
for($i=0;$i<10;$i++)
   c2c_get_recent_posts($data,$data,etc);

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
disjfa schreef op dinsdag 25 oktober 2005 @ 00:54:
Een functie kan je toch meerdere keren aanroepen. Vandaar de naam functie 8)7
PHP:
1
2
for($i=0;$i<10;$i++)
   c2c_get_recent_posts($data,$data,etc);
Nogmaals excuses, ik weet gewoon zo goed als niks van PHP (ben in de leerfase :) )

Weet je misschien hoe ik het probleem kan oplossen?
Als ik de functies namelijk allemaal onder elkaar zet (zoals in het tweede <code> gedeelte van mijn post krijg ik een parse error op regel 22:

PHP:
1
global $wpdb, $tablecomments, $tableposts, $tablepost2cat;

[ Voor 10% gewijzigd door Verwijderd op 25-10-2005 01:05 ]


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Verwijderd schreef op dinsdag 25 oktober 2005 @ 01:04:
[...]
Als ik de functies namelijk allemaal onder elkaar zet (zoals in het tweede <code> gedeelte van mijn post krijg ik een parse error.
Tsja als je je functie niet beeindigd krijg je een parse error. Zeker als je alleen de functienaam kopiert en voor de rest niets. Ik denk dat het beter is een paar tutorials door te nemen of wat nog beter is een van de betere php boeken komen zodat je eerst php leert. Als je daar geen zin in hebt denk ik beter is van de php af te blijven. Als je niets weet kan je het namelijk beter eerst leren dan zomaar een lap code te posten en het aan ons over te houden. Daarnaast leer je veel beter door het te leren.

Als je zelf al niet kan debuggen (lees de error en bedenk waarom het fout is) dan moet je echt eerst zelf meer doen :)

[ Voor 5% gewijzigd door disjfa op 25-10-2005 01:08 ]

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
Heb al een tweetal boekjes gekocht, ben nu echter nog bezig met de beginners tutorial. :)

Ik snap dat het overkomt als 'schrijf dat eens ff' maar een duwtje in de juiste richting is alles wat ik nodig heb denk ik. Ik ben nu in ieder geval stukken over functions en het afsluiten daarvan aan het lezen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Sorry, maar om te beginnen geven we geen support op scripts van derden, en ten tweede is dit gewoon dermate basiskennis dat je dit prima zonder onze hulp moet kunnen vinden. Hoe je functies maakt en aan moet roepen staat in elke tutorial over functioneel/procedureel programmeren.

Ik zou zeggen, begin hier eens. Succes!

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.