Jump to content

Recommended Posts

Sorry to post again but i found another issue with this  :-\

 

The method only works if an author exists. So if i enter just NEW authors the code does not work, therefore does not insert..

 

However, if i enter an existing author and then enter NEW authors the code works..

 

Any ideas what the problem might be?

 

Thanks

Change

            echo "Generated SQL Query:<pre>$sql</pre><hr />";
            $result = mysql_query($sql);
            
            // If there are Authors left within the $authArray
            // Add them to the Pname table
            if(count($authArray) > 0)
            {
                // call insertPersons method for remaining authors
                $this->insertPersons($authArray);
                
                // now we call this method again and insert the remaining auhtors into PeopleCon
                $this->insertAuthor($authArray, $PCorder);
            }
        }
    }
}

 

To

            echo "Generated SQL Query:<pre>$sql</pre><hr />";
            $result = mysql_query($sql);
        }
        
        // If there are Authors left within the $authArray
        // Add them to the Pname table
        if(count($authArray) > 0)
        {
            // call insertPersons method for remaining authors
            $this->insertPersons($authArray);
                
            // now we call this method again and insert the remaining auhtors into PeopleCon
            $this->insertAuthor($authArray, $PCorder);
        }
    }
}

 

Hi,

 

That's worked. I made some amendments and managed not to mess the function up  :)

 

This is the code:

 

public function insertAuthor($authArray, $PCorder=0)
    {
        $query = sprintf('SELECT Pid, Pname FROM People WHERE Pname IN(\'%s\') ORDER BY Pid ASC', implode('\',\'', $authArray));
        $result = mysql_query($query);

        $maxquery = "SELECT MAX(CPid) as max FROM ConfPaper WHERE CPRid = ".$_GET['CPRid'];
        $maxresult = mysql_query($maxquery);
        $max = mysql_fetch_array($maxresult);
        $CPid = $max['max'];

        if($result && mysql_num_rows($result) > 0)
        {
            $sqlValues = array();
            while(list($PId, $PName) = mysql_fetch_row($result))
            {
                if(in_array($PName, $authArray))
                {
                    $sqlValues[] = sprintf("(%d, 1, ".$CPid.", %d, now(), 0)", $PId
                                                               , $PCorder++ );
                    // Author already exists within the Pname table
                    // remove user from $authArray
                    $key = array_search($PName, $authArray);
                    unset($authArray[$key]);
                }
            }
        $sql  = "INSERT INTO PeopleCon(Person_id, PCHid, Pid, PCorder, PCdateadded, PCdeleted) VALUES \n";
        $sql .= implode(",\n", $sqlValues);
        $result = mysql_query($sql);
        }
        // If there are Authors left within the $authArray
        // Add them to the Pname table
        if(count($authArray) > 0)
        {
            $this->insertPersons($authArray); // call insertPersons method for remaining authors
            $this->insertAuthor($authArray, $PCorder); // insert the remaining auhtors into PeopleCon
        }
    }

 

Just want to thank you for your help to get this working. I will now try to work out a method so i can edit/update authors, will post a new thread if i get stuck anywhere..  :D

 

By the way, feel free to criticize the new bits of code i have added  just in case i'm doing something the wrong way :-\

 

Thanks

Regards

Hey,

 

I'm trying to do the upload method, see this code:

 

public function updateAuthor($authArray, $PCorder=0)
    {
        $query = sprintf('SELECT Pid, Pname FROM People WHERE Pname IN(\'%s\') ORDER BY Pid ASC', implode('\',\'', $authArray));
        $result = mysql_query($query);

        $deletequery = "DELETE t1, t2 FROM People AS t1 LEFT JOIN PeopleCon AS t2 ON t1.Pid = t2.Person_id WHERE t1.Pname IN('".implode('\',\'', $authArray)."')";
        $delete = mysql_query($deletequery);

        if($result && mysql_num_rows($result) > 0)
        {
            $sqlValues = array();
            while(list($PId, $PName) = mysql_fetch_row($result))
            {
                if(in_array($PName, $authArray))
                {
                    $sqlValues[] = sprintf("(%d, 1, ".$_GET['ID'].", %d, now(), 0)", $PId
                                                               , $PCorder++ );
                    // Author already exists within the Pname table
                    // remove user from $authArray
                    $key = array_search($PName, $authArray);
                    unset($authArray[$key]);
                }
            }
        $sql  = "INSERT INTO PeopleCon(Person_id, PCHid, Pid, PCorder, PCdateadded, PCdeleted) VALUES \n";
        $sql .= implode(",\n", $sqlValues);
        $result = mysql_query($sql);
        }
        // If there are Authors left within the $authArray
        // Add them to the Pname table
        if(count($authArray) > 0)
        {
            People::insertPersons($authArray); // call insertPersons method for remaining authors
            $this->insertAuthor($authArray, $PCorder); // insert the remaining auhtors into PeopleCon
        }
    }

 

They way i'm doing it is to delete the existing Authors and then re-insert.. Is this the correct way to do it?

 

It does sort of work, but it doesn't do the re-insert, can you assist?

 

My front end i call the method like this:

 

    $p = new Conferences();
    $authors = array_filter(array_map('mysql_real_escape_string', $_POST['author']));
    $p->updateAuthor($authors);

 

Any ideas what i'm doing wrong?

 

Thanks

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.