SitePoint Sponsor

User Tag List

Results 1 to 2 of 2
  1. #1
    SitePoint Member
    Join Date
    May 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Help Determining if Post Title is Unique in a Loop

    Hi, I know this topic is a PHP and Wordpress issue but it's more Wordpress so I hope here's the best place for it.

    I'm trying to make a seemingly simple bit of php (it output's to a Gravity Forms field, but that's basically irrelevant).

    I'm using Gravity Forms to create posts, which I can do easily, however I want each post to have a unique title (as this is how the user navigates).

    I managed to get this working for registration by checking if the user registration id (also the post title in that situation) was already in use, like so:

    PHP Code:
    // Builds complete user id function build_id ($pcode_id, $assigned_id_no) {

     
    do {
            
    $cmplt_id $pcode_id "-" number_pad($assigned_id_no3);  // Gets postcode string and calls the number padding function to add the leading 0's
             
    $assigned_id_no++; // Increase assigned_id_no
        
    }
        while(
    username_exists($cmplt_id));  // Restart loop if username_exists is true
        
    return $cmplt_id;

    return 
    $cmplt_id;
    }

    // Takes a string and add's however many 0's (or other character placed there) to the left of the string
    function number_pad($number,$n) { return str_pad((int) $number,$n,"0",STR_PAD_LEFT); } 
    $pcode_id is just a formatted post code as a string and $assigned_id_no is simply a loop number, passes 1 basically.

    As you can see the while criteria is does this exist, but for the life of me I can't emulate this by simply checking post type.

    The nearest I've come is get_page_by_title() and if it's null then finish else loop, but it doesn't work:

    PHP Code:
    function home_patient_id() { 

    $post_id $_GET['home_id']; 
    $home_post_code get_post_meta($post_id"wpcf-home-post-code"true); 
    $home_post_code format_id($home_post_code); 
    $home_post_code build_home_id($home_post_code1);

    return 
    $home_post_code;
    }

    // Builds complete user id function build_home_id ($pcode_id, $assigned_id_no) {

     
    do {
            
    $cmplt_id $pcode_id "-" number_pad($assigned_id_no3);  // Gets postcode string and calls the number padding function to add the leading 0's
             
    $assigned_id_no++; // Increase assigned_id_no
             
    $exist get_page_by_title($cmplt_id);
            }
        while(
    get_page_by_title($cmplt_id));    // Restart loop if username_exists is true
        
    return $cmplt_id;

    return 
    $cmplt_id;

    I've also tried checking if it returns null but nothing is working, I either get nothing or an infinite loop. I've also tried SQL queries and all sorts, but I just can't seem to get this to work!

    Can someone please help I'm pulling my hair out over this!

    Many thanks.

  2. #2
    SitePoint Member
    Join Date
    May 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    In case anyone's wondering I managed to get this fixed with a pointer about using var_dump(). Here's the modified loop.

    PHP Code:
    // Builds complete user id
    function build_home_id ($pcode_id$assigned_id_no) {

    //$cmplt_id = $pcode_id . "-" . number_pad($assigned_id_no, 3);  // Gets postcode string and calls the number padding function to add the leading 0's

    do {
            
    $cmplt_id $pcode_id "-" number_pad($assigned_id_no3);  // Gets postcode string and calls the number padding function to add the leading 0's
            
    $assigned_id_no++; // Increase assigned_id_no
            
    $existing get_page_by_title($cmplt_idOBJECT"patient");
            
    $existing_post $existing->post_title;
    }
        while(
    $cmplt_id == $existing_post);    // Restart loop if built id matches any already in existance
        
    return $cmplt_id;


    The problem is the get_page_by_title() returns an object not a string. Hope this helps someone.


Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •