Ich habe den folgenden Code, den ich ausführen möchte, aber das Problem ist $ this-> Typ wird festgelegt, wenn die Klasse erstellt wird, indem Sie entweder Petition, Vorschlag oder Änderung angeben. Wie Sie sehen können, ist meine $ sql-Anweisung eine UNION von allen dreien, und ich möchte angeben, aus welcher Tabelle (Pet, Requisite oder Änderung) jede Datenzeile stammt.Condensing diesen Code
public function userProposals() {
$username = User::getUsername();
$sql = "SELECT * FROM petition WHERE author = '$username'
UNION SELECT * FROM proposition WHERE author = '$username'
UNION SELECT * FROM amendment WHERE author = '$username'";
$query = mysql_query($sql);
$state = User::userState();
while ($row = mysql_fetch_assoc($query)) { // $this->type needs to specify pet,prop,amend
echo "
<tr>
<td>$row[id]</td>
<td><a href='viewproposal.php?type=$this->type&id=$row[id]'>$row[title]</a></td>
<td>$this->type</td>
<td>$state</td>
</tr>";
}
}
Wie Sie sehen können, wird $ this-> type nur eines der drei sagen. Um meine Funktion funktionieren zu lassen, wie ich wollte, tat ich dies (was ich fühle, ist zu lang & dort muss ein kürzerer Weg sein).
public function userProposals() {
$username = User::getUsername();
$state = User::userState();
$sql = "SELECT * FROM petition WHERE author = '$username'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
echo "
<tr>
<td>$row[id]</td>
<td><a href='viewproposal.php?type=petition&id=$row[id]'>$row[title]</a></td>
<td>Petition</td>
<td>$state</td>
</tr>";
}
$sql = "SELECT * FROM proposition WHERE author = '$username'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
echo "
<tr>
<td>$row[id]</td>
<td><a href='viewproposal.php?type=proposition&id=$row[id]'>$row[title]</a></td>
<td>Proposition</td>
<td>$state</td>
</tr>";
}
$sql = "SELECT * FROM amendment WHERE author = '$username'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
echo "
<tr>
<td>$row[id]</td>
<td><a href='viewproposal.php?type=amendment&id=$row[id]'>$row[title]</a></td>
<td>Amendment</td>
<td>$state</td>
</tr>";
}
}
Ich habe einen Fehler: Abfrage fehlgeschlagen: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, für die richtige Syntax in der Nähe von '* FROM petition WHERE author =' test44 'UNION SELECT' Vorschlag 'als typ, *' in Zeile 1. Von $ query = mysql_query ($ sql); – asdfasdfasdfasdf
Entschuldigung, @Farhan, ich habe vergessen, dass Sie entweder * oder Felder verwenden können, aber nicht beides. Ich habe es behoben, um die spezifischen Felder zu verwenden (die Sie sowieso vornehmen möchten, um den über die Leitung gesendeten Datenverkehr zu minimieren). – paxdiablo
Seltsam, sollten Sie zumindest in der Lage sein zu verwenden: SELECT 'petition' AS typ, petition. * FROM petition ... –