Hello,
I'm not sure if anyone else as the need for a php/MySQL based bibliography, but
the application that I am developing (which is basically a module for phpSlash)
is coming along fairly well. If anyone is interested in seeing the code I can
bundle it up and send it out to them (still a long way from finished mind). The
draft version of it is up and running here:
http://openconcept.ca/WLP/biblio/index.php3
I'm running into a couple problems though that I don't have the logic language
for and I was hoping folks here could help me (as you have done in the past).
The problem is that I've set up a many to many table to ensure that I can have
an author be listed as writing many books and a book be written by many authors.
However in listing the books as a bibliography (as the URL above), I want to be
able to list multiple authors, and do so in a different format for the first
author than for all subsequent ones.
I'm hoping to be able to produce output like this:
Young, D. and N. Dixon. Helping Leaders Take Effective Action: A Program
Evaluation. Greensboro, North Carolina: Center for Creative Leadership,
1996.
So, I think the first challenge should be to calculate which books have multiple
authors by doing something like this (It's using phplib structures, sorry):
$q2 = "SELECT * FROM WLPbib2profile ORDER BY bibID";
$this->db->query($q2); // Performs above query
while ($this->db->next_record()) {
if ($this->db->Record["bibID"] != $last_bibID) {
echo "<br>" . $this->db->Record["bibID"] . " : " .
$this->db->Record["profileID"];
} else { // Multiple Authors
echo ", " . $this->db->Record["profileID"];
$multiple_profileID .= array ($this->db->Record["bibID"] =>
$this->db->Record["profileID"]);
$multiple_profileID .= array($this->db->Record["bibID"] =>
"yes");
}
$last_bibID = $this->db->Record["bibID"];
}
}
With this I can then use the value $multiple_profileID to determine if this
record has duplicates or not and use something like this to include both authors
and not repeat the bibliography item:
if ($multiple_profileID[$bibID]=="yes") {
while (list($key, $val) = each($multiple_profileID)) {
$written_by = $key . " : " . $val . "<br>";
if ($this->db->Record["firstName"]) {
$written_by .= stripslashes($this->db->Record["firstName"]) . " ";
}
if($this->db->Record["lastName"]) {
$written_by .= stripslashes($this->db->Record["lastName"]);
}
}
} else {
if($this->db->Record["lastName"]) {
$written_by .=
stripslashes($this->db->Record["lastName"]) . ", ";
}
if ($this->db->Record["firstName"]) {
$written_by .=
stripslashes($this->db->Record["firstName"]);
}
}
But this seems really awkward (at the best of times) and (worst of all) it isn't
working.
I've got another related problem in that I've set up the following fields in one
table:
firstName
lastName
organization
and I need to be able to order them by a combination of lastName & organization.
I could list the organization field simply as the lastName, but that seems
like it would be confusing the data types... Must be a way around this.. I
suspect it is limited by my logic & not PHP's.
Any ideas would be appreciated.
Mike
--
Mike Gifford, OpenConcept Consulting, http://openconcept.ca
Offering everything your organization needs for an effective web site.
Abolish Nuclear Weapons Now!: http://pgs.ca/petition/
It is a miracle that curiosity survives formal education. - A Einstein
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]