Głosowanie na losowy cytat we wtyczce Cytaty
|
Szapko |
Dodany dnia 10.02.2010 01:15:34
|
Bywalec
Postów: 888 Pomógł: 66
Data rejestracji: 19.08.2007 19:49
|
Witam!
Od jakiegoś czasu próbuję napisać proste głosowanie na losowy cytat z wtyczki Cytaty.
Panel, który losuje cytat zdołałem napisać samemu, ale z głosowanie już nie idzie tak gładko.
Założenie jak to miało wyglądać:
Są dwa przyciski + i - i gdy naciśniemy np. + to wysyłamy formularz, który pobiera liczbę z tabeli cytaty, pola cytat_plus i dodaje do niej 1 po czym z powrotem wysyła wartość do pola (już z dodaną jedynką). Głos może oddać tylko użytkownik i tylko raz, na plus albo minus.
Część panelu odpowiedzialna za głosowanie:
if (isset($_POST['dodaj']) && trim($_POST['dodaj']) != "") {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=".$_POST['dodaj']." WHERE cytat_id='".$data['cytat_id']."' ");
}
$plu = $data['cytat_plus'] + 1;
$minu = $data['cytat_minus'] + 1;
echo "<form action='news.php?plus=$plu' method='post'>
<input type='hidden' name='dodaj' value='".$plu."'>
<input type='submit' value='' class='plus'>
</form>";
Na razie dodałem tylko formularz dodający głos na + ale i tak nie działa. Nie wiem gdzie zrobiłem błąd, ale pola w bazie szaleją. Punkty dodają się raz do dobrego pola (to chyba tylko, dlatego, że nie raz losuje ten sam cytat dwa razy), a nie raz do innego pola. Wartość jednak jest dobra. Nie wiem czemu tak się dzieje, ale powinno pobierać ID cytatu, który się wyświetla aktualnie, a nie kolejnego.
Pola w bazie wyglądają tak:
cytat_plus varchar(100), latin2_general_ci, domyślnie: 0
cytat_minus varchar(100), latin2_general_ci, domyślnie: 0
Cały panel wygląda tak:
openquote('');
$result = dbquery("SELECT * FROM ".$db_prefix."cytat ORDER BY RAND()");
if (dbrows($result)) {
if ($data = dbarray($result)) {
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
$result = dbquery("SELECT * FROM ".$db_prefix."cytat_cat WHERE cytat_cat_id='".$data['cytat_cat']."'");
if (dbrows($result)) {
if ($data2 = dbarray($result)) {
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data2['cytat_cat_name']."</div>";
if (iMEMBER) {
//TUTAJ
if (isset($_POST['dodaj']) && trim($_POST['dodaj']) != "") {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=".$_POST['dodaj']." WHERE cytat_id='".$data['cytat_id']."' ");
}
$plu = $data['cytat_plus'] + 1;
$minu = $data['cytat_minus'] + 1;
echo "<form action='news.php?plus=$plu' method='post'>
<input type='hidden' name='dodaj' value='".$plu."'>
<input type='submit' value='' class='plus'>
</form>";
//TUTAJ
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/+.png' border='0'></a> ";
echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/-.png' border='0'></a> ";
echo "| <a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Więcej cytatów...</a>";
}
}
}
}
}
closequote();
Edytowane przez Pieka dnia 10.02.2010 01:39:51
|
|
|
|
Wścibski Gość |
Dodany dnia 25.11.2024 21:41:03
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
kefirek |
Dodany dnia 10.02.2010 10:16:23
|
Zaawansowany
Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Spróbuj tak
I pola w bazie zmień na INT a nie VARCHAR
openside("name");
$result = dbquery("SELECT cytat_cat, cytat_cat_name, cytat_name, cytat_cat cytat_description, cytat_id FROM ".$db_prefix."cytat LEFT JOIN ".$db_prefix."cytat_cat ON (cytat_cat=cytat_cat_id) ORDER BY RAND() LIMIT 1");
if (dbrows($result)) {
$data = dbarray($result);
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data['cytat_cat_name']."</div>";
if (iMEMBER) {
//TUTAJ
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$data['cytat_id']."' ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus-1 WHERE cytat_id='".$data['cytat_id']."' ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='submit' name='add' value='+' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='submit' name='substract' value='-' class='plus'>
</form>";
echo "<a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Wi?cej cytatów...</a>";
}
}
closeside();
|
|
|
|
Szapko |
Dodany dnia 10.02.2010 17:04:11
|
Bywalec
Postów: 888 Pomógł: 66
Data rejestracji: 19.08.2007 19:49
|
Prawie działa, jednak dodaje i odejmuje nie do cytatu, który aktualnie się wyświetla (ten, na który głosuje) tylko do cytatu, który pojawia się po zagłosowaniu.
Wiadomość doklejona:
Jednak już sobie poradziłem.
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$_POST['id']."' ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus+1 WHERE cytat_id='".$_POST['id']."' ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='submit' name='add' value='' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='submit' name='substract' value='' class='minus'>
</form>";
Wiadomość doklejona:
Głosowanie jest dla widoczne tylko dla userów, ale nie wiem jak zrobić by jeden user mógł oddać tylko jeden głos, na plus albo na minus do danego cytatu.
Edytowane przez Szapko dnia 10.02.2010 17:12:12
|
|
|
|
kefirek |
Dodany dnia 10.02.2010 17:29:24
|
Zaawansowany
Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Zrób sobie dodatkową tabele w bazie danych z kolumnami
Cytat_id | user_id | ocena |
I potem sprawdzasz czy id cytatu oraz usera istnieje w bazie. Jeśli tak user głosował już jeśli nie znaczy że nie głosował.
|
|
|
|
Szapko |
Dodany dnia 10.02.2010 23:12:49
|
Bywalec
Postów: 888 Pomógł: 66
Data rejestracji: 19.08.2007 19:49
|
Zrobiłem tylko dwie kolumny, trzeciej nie będę potrzebował:
cytat_id int(10), Atrybut: UNSIGNED, Null: Nie
user_id int(10), Atrybut: UNSIGNED, Null: Nie
Kod wygląda teraz tak:
openquote('');
$result = dbquery("SELECT * FROM ".$db_prefix."cytat ORDER BY RAND()");
if (dbrows($result)) {
if ($data = dbarray($result)) {
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
$result = dbquery("SELECT * FROM ".$db_prefix."cytat_cat WHERE cytat_cat_id='".$data['cytat_cat']."'");
if (dbrows($result)) {
if ($data2 = dbarray($result)) {
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data2['cytat_cat_name']."</div>";
if (iMEMBER) {
$result4 = dbquery("SELECT * FROM ".$db_prefix."cytat_vote WHERE cytat_id='".$data['cytat_id']."'");
if (dbrows($result4)) {
if ($data4 = dbarray($result4)) {
if ($data4['user_id'] = $user_data['user_id']) {
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='add' value='' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='substract' value='' class='minus'>
</form>";
} else {
echo "Już głosowałeś | ";
}
}
}
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/+.png' border='0'></a> ";
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/-.png' border='0'></a> ";
echo "<a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Więcej cytatów...</a>";
}
}
}
}
}
closequote();
Napis już głosowałeś wyświetla się prawidłowo przy tych cytatach, na które zagłosowałem, ale gdy jeszcze nie głosowałem na jakiś cytat to nie wyświetlają mi się przyciski do głosowania.
Wiadomość doklejona:
Problem rozwiązany przez @kefirka:
openquote('');
$result = dbquery("SELECT * FROM ".$db_prefix."cytat LEFT JOIN ".$db_prefix."cytat_cat ON (cytat_cat=cytat_cat_id) ORDER BY RAND()");
if (dbrows($result) > 0) {
$data = dbarray($result);
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data['cytat_cat_name']."</div>";
if (iMEMBER) {
$rows = dbcount("(*)", $db_prefix."cytat_vote WHERE cytat_id='".$data['cytat_id']."' AND user_id='".$userdata['user_id']."'");
if(!$rows > 0 ) {
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='add' value='' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='substract' value='' class='minus'>
</form>";
} else {
echo "Już głosowałeś | ";
}
}
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/+.png' border='0'></a> ";
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/-.png' border='0'></a> ";
echo "<a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Więcej cytatów...</a>";
}
closequote();
Edytowane przez Szapko dnia 12.02.2010 22:43:01
|
|
|
|
Ummm |
Dodany dnia 08.06.2010 00:50:12
|
Przedszkolak
Postów: 18
Data rejestracji: 05.05.2010 20:37
|
Jak chcę dodać panel mam taki error:
Fatal error: Call to undefined function openquote() in /home/gta2/domains/gta2.unl.pl/public_html/administration/panel_editor.php(128) : eval()'d code on line 1
Wiadomość doklejona:
dan_0803 napisał/a:
Zrobiłem tylko dwie kolumny, trzeciej nie będę potrzebował:
cytat_id int(10), Atrybut: UNSIGNED, Null: Nie
user_id int(10), Atrybut: UNSIGNED, Null: Nie
Kod wygląda teraz tak:
openquote('');
$result = dbquery("SELECT * FROM ".$db_prefix."cytat ORDER BY RAND()");
if (dbrows($result)) {
if ($data = dbarray($result)) {
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
$result = dbquery("SELECT * FROM ".$db_prefix."cytat_cat WHERE cytat_cat_id='".$data['cytat_cat']."'");
if (dbrows($result)) {
if ($data2 = dbarray($result)) {
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data2['cytat_cat_name']."</div>";
if (iMEMBER) {
$result4 = dbquery("SELECT * FROM ".$db_prefix."cytat_vote WHERE cytat_id='".$data['cytat_id']."'");
if (dbrows($result4)) {
if ($data4 = dbarray($result4)) {
if ($data4['user_id'] = $user_data['user_id']) {
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='add' value='' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='substract' value='' class='minus'>
</form>";
} else {
echo "Już głosowałeś | ";
}
}
}
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/+.png' border='0'></a> ";
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/-.png' border='0'></a> ";
echo "<a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Więcej cytatów...</a>";
}
}
}
}
}
closequote();
Napis już głosowałeś wyświetla się prawidłowo przy tych cytatach, na które zagłosowałem, ale gdy jeszcze nie głosowałem na jakiś cytat to nie wyświetlają mi się przyciski do głosowania.
Wiadomość doklejona:
Problem rozwiązany przez @kefirka:
openquote('');
$result = dbquery("SELECT * FROM ".$db_prefix."cytat LEFT JOIN ".$db_prefix."cytat_cat ON (cytat_cat=cytat_cat_id) ORDER BY RAND()");
if (dbrows($result) > 0) {
$data = dbarray($result);
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>\n";
echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
echo "<td class='c2'></td>\n";
echo "<td class='c3' valign='top'>".$data['cytat_description']."</td>\n";
echo "<td class='c4'></td>\n";
echo "</tr>\n</table>\n";
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td class='c5'></td>\n";
echo "</tr>\n</table>\n";
echo "<div style='color: #deb72f; font-weight: bold; float: right;'>".$data['cytat_cat_name']."</div>";
if (iMEMBER) {
$rows = dbcount("(*)", $db_prefix."cytat_vote WHERE cytat_id='".$data['cytat_id']."' AND user_id='".$userdata['user_id']."'");
if(!$rows > 0 ) {
if (isset($_POST['add'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_plus=cytat_plus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
if (isset($_POST['substract'])) {
$result_add = dbquery("UPDATE ".$db_prefix."cytat SET cytat_minus=cytat_minus+1 WHERE cytat_id='".$_POST['id']."' ");
$result_add2 = dbquery("INSERT INTO ".$db_prefix."cytat_vote SET cytat_id=".$_POST['id'].", user_id=".$_POST['userid']." ");
}
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='add' value='' class='plus'>
</form>";
echo "<form action='".FUSION_SELF."' method='post'>
<input type='hidden' name='id' value='".$data['cytat_id']."'>
<input type='hidden' name='userid' value='".$userdata['user_id']."'>
<input type='submit' name='substract' value='' class='minus'>
</form>";
} else {
echo "Już głosowałeś | ";
}
}
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/+.png' border='0'></a> ";
//echo "<a href='#' style='font-decoration: none;'><img src='".THEME."images/-.png' border='0'></a> ";
echo "<a href='".INFUSIONS."eXtreme_cytat/cytat.php?cat_id=".$data['cytat_cat']."' style='color: #ffffff;'>Więcej cytatów...</a>";
}
closequote();
Witam mógłbym dostać kodzik do wklejenia w myphpadmina aby mi utworzył takie tabelki?
Edytowane przez Ummm dnia 12.06.2010 19:26:40
|
|
|