AND Anweisung möglich?

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

AND Anweisung möglich?

Beitrag von Overhead »

Hallo Leute,

ich versuche gerade die Polls etwas aufzubohren, jetzt stellt sich mir die Frage ob ich eine/mehrere AND Anweisung/en so in die posting.php hineinpacken kann, ohne hier gnadenlos einen Logikbug verbaut zu haben?

Code: Alles auswählen


$vote_id = $vote_info['vote_id'];
AND $id_vote = $vote_info['vote_id'];

} $sql = "SELECT * 
FROM " . VOTE_USERS_TABLE . " WHERE vote_id = $vote_id 
AND "WHERE id_vote = $vote_id
		AND vote_user_id = " . $userdata['user_id'];
			if ( !($result2 = $db->sql_query($sql)) )
{
				message_die(GENERAL_ERROR, 'Could not obtain user vote data for this topic', '', __LINE__, __FILE__, $sql);
			}

			$prev_vote = $db->sql_numrows();
		$counter = 0;
		$row = $db->sql_fetchrowset($result2);
$vbn = array();
		for ($i = 0; $i < count($vote_id); $i++)
		{
			//	check if already voted on certain options
			$flag = false;
			for ($j = 0; $j < $prev_vote; $j++)
			{
				if ($vote_id[$i] == $row[$j]['vote_option_id'])
				{
					$flag = true;
					break;
				}
			}
			if (!$flag)
			{
				$vbn[$counter] = $vote_id[$i];
				$counter++;
			}
		}

		$db->sql_freeresult($result2);

		$sql = "SELECT vd.vote_id    
			FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr
			WHERE vd.topic_id = $topic_id 
				AND vr.vote_id = vd.vote_id 
				AND vr.vote_option_id = $vote_option_id
			GROUP BY vd.vote_id";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
		}

		if ( $vote_info = $db->sql_fetchrow($result) )
		{
			$vote_id = $vote_info['vote_id'];

			$sql = "SELECT * 
				FROM " . VOTE_USERS_TABLE . "  
				WHERE vote_id = $vote_id 
					AND vote_user_id = " . $userdata['user_id'];
			if ( !($result2 = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain user vote data for this topic', '', __LINE__, __FILE__, $sql);
			}
			if ( $max_vote >= (count($vbn) + $prev_vote) )	//	Modded	
			{
				foreach ($vbn as $vote_option_id)
				{

				$sql = "UPDATE " . VOTE_RESULTS_TABLE . " 
					SET vote_result = vote_result + 1 
					WHERE vote_id = $vote_id 
						AND vote_option_id = $vote_option_id";
				if ( !$db->sql_query($sql, BEGIN_TRANSACTION) )
				{
					message_die(GENERAL_ERROR, 'Could not update poll result', '', __LINE__, __FILE__, $sql);
				}
cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

} $sql = "SELECT *
FROM " . VOTE_USERS_TABLE . " WHERE vote_id = $vote_id
AND "WHERE id_vote = $vote_id
      AND vote_user_id = " . $userdata['user_id'];
Das ist nun komplett daneben.
Wenn dann schon eher so:

Code: Alles auswählen

} $sql = "SELECT *
FROM " . VOTE_USERS_TABLE . " WHERE vote_id = $vote_id
AND vote_user_id = " . $userdata['user_id'];
Und was soll das hier?

Code: Alles auswählen

$vote_id = $vote_info['vote_id'];
AND $id_vote = $vote_info['vote_id'];
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ oxpus

Code: Alles auswählen

$vote_id = $vote_info['vote_id']; 
AND $id_vote = $vote_info['vote_id'];

das erste dient dazu später im ACP anzuzeigen (Namen) wer alles abgestimmt hat - nicht wie sondern nur wer (das mit dem wie hatte ich mir kurz überlegt aber das war mitr dann viel zu hoch!)
das zweite dient dazu in der DB festzuhalten wer bei einer Multiplen Abstimmung noch nicht alle Punkte ausgenutzt hat und deshalb sein Abstimmungsergebnis verändern kann. d.h. er kann sich völlig umorientieren oder halt die fehlenden Punkte ergänzen. Ziel ist es das User aus einer Anzahl X die der Ersteller einer Abstimmung festlegt, eine Anzahl Y an Möglichkeiten hat - wobei Y <= X sein kann. Solange der Abstimmende noch nicht vollständig abgestimmt hat bekommt er das Ergebnis nicht angezeigt(hide)! Die Ergebnis der Abstimmungen können in ein csv exportiert werden wobei via ACP festgelegt wird ob die User das dürfen oder das nur den Admins Und /oder Mods erlaubt ist. Nach Abstimmungsende werden dann aller Ergebnisse angezeigt - und gewertet auch die in denen ein User nicht alle Möglichkeiten ausgeschöpft hat.

Code: Alles auswählen

} $sql = "SELECT * 
FROM " . VOTE_USERS_TABLE . " WHERE vote_id = $vote_id 
AND "WHERE id_vote = $vote_id 
      AND vote_user_id = " . $userdata['user_id'];
aha völlig daneben (ich hatte es befürchtet!) - und wie bekomme ich nun beide Abfragen unter einen Hut? oder muss ich die SELECT 2 x machen?

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

$vote_id = $vote_info['vote_id']; 
AND $id_vote = $vote_info['vote_id'];
Das kann so nicht geschrieben werden, da PHP ein AND als Verknüpfung in einer logischen Kette (z. B. in einer Bedingung) verwendet, aber nicht als Schlüsselwort ausserhalb einer SQL-Anweisung.

Wenn, dann musst Du das komplett in die SQL-Anweisung schreiben, nicht aber schon vorher definieren!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

Auweia,

jetzt arbeite ich mich in php ein und bekomme das so einigermassen gebacken und ejtzt haisst es wohl zusätzlich sql pauken....

schaun wir mal... zuerst mache ich mal das andere Projekt fertig dann werde ich hier wieder rangehen.

EDIT/

Code: Alles auswählen

ALTER TABLE phpbb_vote_desc ADD vote_max INT( 3 ) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_vote_desc ADD vote_voted INT( 7 ) DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_vote_desc ADD vote_hide TINYINT( 1 ) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_vote_desc ADD vote_undo TINYINT ( 1 ) DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_vote_voters ADD vote_option_id TINYINT( 4 ) DEFAULT '-1' NOT NULL;
das sollte doch zusätzlich reichen - oder?

cu Overhead
Antworten