Hallo zusammen,
ich habe mir mal spaßeshalber den Quoter installiert. Wollte den mal testen. Nun ist es so, dass der erste Eintrag funktioniert, aber beim nächsten versucht wird, die "0" als ID mitzugeben. Fehlermeldung:
MySQL Error:
1062 : Duplicate entry '0' for key 'PRIMARY'
in Query:
INSERT INTO `ic1_quotes` ( `freigeschaltet` ,`tstamp` ,`user` ,`quote` ,`vote`) VALUES ( '1', '1442422494', 'Name', '"Kopf hoch, sonst fällt doch das Krönchen runter!" ', '0');
Debug backtrace:
@ mysql.php:46 -- debug_bt()
@ mysql.php:64 -- db_check_error(...)
@ quotes.php:88 -- db_query(...)
@ index.php:42 -- require_once(...)
Dann habe ich in der Ddatenbank direkt mal den Wert des ersten Quotes auf 1 gesetzt und versucht, einen neuen Eintrag zu erstellen. Klappt, aber wieder mit ID "0" ^^
Kann sich den Code mal bitte einer anschauen. Ggf. könnte an der Stelle die quotes.php im Installationspaket direkt überarbeitet werden
<?php
##########################################################
# IRC/Chat-Quotes
# by DjGeCk0
# Support: http://www.ilch.de/forum-showposts-38191.html
# Doku : http://djgecko.kilu.de/index.php?articles-show-A3
##########################################################
defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Quotes';
$hmenu = 'Quotes';
$design = new design ( $title , $hmenu );
$design->header();
$tpl = new tpl ( 'quotes.htm', 0 );
# Fehler anzeigen, falls gewollt auskommentieren
#error_reporting(E_ALL); ini_set('display_errors', 1);
# Variablen für weitere Verwendung definieren
$time = time();
$expl = '';
$postquote = '';
$setrulez = '';
$sites = '';
$minusday = strtotime("now -1 day");
$getip = $_SERVER['REMOTE_ADDR'];
$username = $_SESSION['authname'];
# Scripteigene Funktionen
function escape_ip(&$ip)
{
$ip = preg_replace('/[^0-9\.]/i','',$ip);
}
# Einträge aus Log löschen die älter als ein Tag alt sind
db_query("DELETE FROM prefix_quotes_log WHERE tstamp < '".$minusday."'");
# escapes
$getpage = ctype_digit($menu->get(1)) ? escape($menu->get(1),'int') : escape($menu->get(1),'string');
$getvid = ctype_digit($menu->get(2)) ? escape($menu->get(2),'int') : escape($menu->get(2),'string');
$getvote = ctype_digit($menu->get(3)) ? escape($menu->get(3),'int') : escape($menu->get(3),'string');
$getwd = ctype_digit($menu->get(4)) ? escape($menu->get(4),'int') : escape($menu->get(4),'string');
$page = ( $menu->getA(2) == 'p' ? $menu->getE(2) : 1 );
escape_ip($getip);
# Einstellungen aus dem Adminbereich auslesen
# Breite der textarea in Zeichen
$formwidth = db_result(db_query("SELECT einstellung FROM prefix_quotes_set WHERE auswahl = 'textbreite'"));
# wenn getpage leer ist wird diese Seite angezeigt
$standardseite = db_result(db_query("SELECT einstellung FROM prefix_quotes_set WHERE auswahl = 'startseite'"));
# 1 = automatisch freischalten, 0 = durch admin freischalten
$autopost = db_result(db_query("SELECT einstellung FROM prefix_quotes_set WHERE auswahl = 'freischalten'"));
# Anzahl der Quotes pro Seite
$xproseite = db_result(db_query("SELECT einstellung FROM prefix_quotes_set WHERE auswahl = 'anzahlx'"));
##########################################################
# Topmenü ( Sortieren nach Top, Newest oder Neuen Quote
##########################################################
$topmenue = '<a href="?quotes-top">Top</a>';
$newmenue = '<a href="?quotes-new">Neuste</a>';
$sendmenue = '<a href="?quotes-send">Einsenden</a>';
$reglmenue = '<a href="?quotes-regel">Regel</a>';
$statsmenue = '<a href="?quotes-stats">Stats</a>';
# wenn User Admin ist wird der Adminlink angezeigt
if (is_siteadmin('quotes') == '1') {
$adminmenu = '<a href="admin.php?quotes">Admin</a>';
} else {
$adminmenu = '';
}
# wenn User Admin ist wird der Lösch-Link angezeigt
if (is_siteadmin('quotes') == '1') {
$xadmindel = '[X]';
} else {
$xadmindel = '';
}
# leere seitenangabe definieren
if(empty($getpage)) $getpage = $standardseite;
# Quote einsenden
if (isset($_POST['setsend'])) {
$setname = escape($_POST['setname'], 'string');
$setquote = escape(htmlentities($_POST['setquote']), 'string');
if(!empty($_POST['setrulez'])) {$setrulez = escape($_POST['setrulez'], 'integer');}
if ($setrulez == '1'){
db_query("INSERT INTO `prefix_quotes` (
`freigeschaltet` ,`tstamp` ,`user` ,`quote` ,`vote`)
VALUES (
'".$autopost."', '".$time."', '".$setname."', '".$setquote."', '0');");
if ($autopost == '1') {
wd ('?quotes', 'Quote eingetragen...', '3' );
}
if ($autopost == '0') {
wd ('?quotes', 'Quote eingetragen...<br>Ein Admin wird diesen bald freischalten', '3' );
}
}
else {
echo 'Bitte bestätigen Sie die Regel';
}
}
switch ($getpage) {
##########################################################
# DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL
##########################################################
case 'del':
if (is_siteadmin('quotes') == '1'){
db_query("UPDATE `prefix_quotes` SET freigeschaltet = 0 WHERE id = '".$getvid."' ");
wd ('index.php?quotes-'.$getwd.'', 'Status auf 0 gesetzt...<br>endgültiges Löschen ist im Adminbereich möglich', '3' );
}
else {
wd ('index.php?quotes-'.$getwd.'', 'Admins only !! Dont try to hack me...', '3' );
}
break;
##########################################################
# TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP
##########################################################
case 'top':
$sites = db_make_sites ($page , "WHERE freigeschaltet = 1" , $xproseite , '?quotes-new' , 'quotes' );
$anfang = ($page - 1) * $xproseite;
$topqry = db_query("SELECT * FROM prefix_quotes WHERE freigeschaltet = 1 ORDER BY vote DESC LIMIT ".$anfang.",".$xproseite."");
while ($rowtop = db_fetch_assoc($topqry)) {
$postquote = nl2br(unescape($rowtop['quote']));
$expl .= ' <table width="100%" border="0">
<tr>
<td width="40%" bgcolor="#CCCCCC">
<a href="?quotes-'.$rowtop['id'].'"># '.$rowtop['id'].'</a> </td>
<td width="20%" bgcolor="#CCCCCC">von '.$rowtop['user'].'</td>
<td bgcolor="#CCCCCC">
<div align="center">
<a href="?quotes-vote-'.$rowtop['id'].'-p-top"><img border="0" src="include/images/quotes/vote_good.png" /></a> '.$rowtop['vote'].'
<a href="?quotes-vote-'.$rowtop['id'].'-m-top"> <img border="0" src="include/images/quotes/vote_bad.png" /></a> <a href="?quotes-del-'.$rowtop['id'].'-p-new">'.$xadmindel.'</a></div></td>
</tr>
<tr>
<td colspan="3">'.$postquote.'</td>
</tr>
</table>
<hr>';
}
$sites = db_make_sites ($page , "WHERE freigeschaltet = 1" , $xproseite , '?quotes-top' , 'quotes' );
break;
##########################################################
# NEWEST NEUSTE NEWEST NEUSTE NEWEST NEUSTE NEWEST NEUSTE
##########################################################
case 'new':
$sites = db_make_sites ($page , "WHERE freigeschaltet = 1" , $xproseite , '?quotes-new' , 'quotes' );
$anfang = ($page - 1) * $xproseite;
$newqry = db_query("SELECT * FROM prefix_quotes WHERE freigeschaltet = 1 ORDER BY tstamp DESC LIMIT ".$anfang.",".$xproseite."");
while ($rownew = db_fetch_assoc($newqry)) {
$postquote = nl2br(unescape($rownew['quote']));
$expl .= ' <table width="100%" border="0">
<tr>
<td width="40%" bgcolor="#CCCCCC">
<a href="?quotes-'.$rownew['id'].'"># '.$rownew['id'].'</a> </td>
<td width="20%" bgcolor="#CCCCCC">von '.$rownew['user'].'</td>
<td bgcolor="#CCCCCC">
<div align="center">
<a href="?quotes-vote-'.$rownew['id'].'-p-new"><img border="0" src="include/images/quotes/vote_good.png"></a>
'.$rownew['vote'].'
<a href="?quotes-vote-'.$rownew['id'].'-m-new"> <img border="0" src="include/images/quotes/vote_bad.png" /></a> <a href="?quotes-del-'.$rownew['id'].'-p-new">'.$xadmindel.'</a></div></td>
</tr>
<tr>
<td colspan="3">'.$postquote.'</td>
</tr>
</table>
<hr>';
}
break;
##########################################################
# SEND SEND SEND SEND SEND SEND SEND SEND SEND SEND SEND
##########################################################
case 'send':
$expl = '<form name="send" method="post" action="">
<input name="setname" type="text" id="setname" value="'.$username.'">
<p>
<textarea name="setquote" id="setquote" cols="'.$formwidth.'" rows="15"></textarea>
</p>
<p>
<input name="setrulez" type="checkbox" id="setrulez" value="1">
<a href="?quotes-regel">Regeln gelesen ?</a>
<input type="submit" name="setsend" id="setsend" value="senden">
</p>
</form>';
break;
##########################################################
# REGEL REGEL REGEL REGEL REGEL REGEL REGEL REGEL REGEL
##########################################################
case 'regel':
$getregel = db_result(db_query("SELECT einstellung FROM prefix_quotes_set WHERE auswahl = 'regel'"));
$expl = $getregel;
break;
##########################################################
# STATS STATS STATS STATS STATS STATS STATS STATS STATS
##########################################################
case 'stats':
$cquotes = db_result(db_query("SELECT COUNT(id) FROM prefix_quotes"));
$fquotes = db_result(db_query("SELECT COUNT(id) FROM prefix_quotes WHERE freigeschaltet = 1"));
$wquotes = db_result(db_query("SELECT COUNT(id) FROM prefix_quotes WHERE freigeschaltet = 0"));
$expl = '<table width="100%">
<tr width="50%">
<td width="50%">Anzahl der Quotes:</td>
<td width="50%">'.$cquotes.'</td>
</tr>
<tr width="50%">
<td width="50%">davon freigeschaltet</td>
<td width="50%">'.$fquotes.'</td>
</tr>
<tr width="50%">
<td width="50%">davon in Warteschlange</td>
<td width="50%">'.$wquotes.'</td>
</tr>
</table>';
break;
##########################################################
# VOTE VOTE VOTE VOTE VOTE VOTE VOTE VOTE VOTE VOTE VOTE
##########################################################
case 'vote':
$ipsperre = db_query("SELECT * FROM prefix_quotes_log WHERE ip like '".$getip."' AND quoteid = '".$getvid."' AND tstamp < '".$minusday."'");
if (isset($_SESSION['bewquotes'][$getvid], $ipsperre)) {
# zurück zur letzten Seite
wd ('index.php?quotes-'.$getwd.'', 'Sie haben bereits gevoted...', '3' );
$design->footer(1);
}
else {
# Vote-Form wird ausgeführt -
if ($getvote == 'm') {
db_query("UPDATE `prefix_quotes` SET vote = vote -1 WHERE id = '".$getvid."' ");
}
# Vote-Form wird ausgeführt +
if ($getvote == 'p') {
db_query("UPDATE `prefix_quotes` SET vote = vote +1 WHERE id = '".$getvid."' ");
}
# SESSION -> Cookie und IP in DB-Log speichern
$_SESSION['bewquotes'][$getvid] = TRUE;
db_query("INSERT INTO `prefix_quotes_log` (
`ip` ,`quoteid` ,`tstamp`)
VALUES (
'".$getip."', '".$getvid."', '".$time."');");
# zurück zur letzten Seite
wd ('index.php?quotes-'.$getwd.'', 'Vote wurde gespeichert...', '3' );
$design->footer(1);
}
break;
##########################################################
default:
$expl = 'ERROR : ein unbehandelter Fehler ist aufgetreten...';
break;
}
##########################################################
# Wenn ID übergeben wird ID ID ID ID ID ID ID ID ID ID ID
##########################################################
if (!empty ($getpage) && is_numeric($getpage)) {
$checkid = db_result(db_query("SELECT COUNT(id) FROM prefix_quotes WHERE id = '".$getpage."'"));
switch ($checkid) {
# wenn id nicht vorhanden
case '0':
wd ('index.php?quotes', 'Dieser Quote existiert nicht (mehr)...', '3' );
$design->footer(1);
break;
# wenn id vorhanden
case '1':
$qryid = db_query("SELECT * FROM prefix_quotes WHERE id = '".$getpage."'");
while ($rowid = db_fetch_assoc($qryid)) {
$postquote = nl2br(unescape($rowid['quote']));
$expl = '<table width="100%" border="0">
<tr>
<td width="40%" bgcolor="#CCCCCC">
<a href="?quotes-'.$rowid['id'].'"># '.$rowid['id'].'</a> </td>
<td width="20%" bgcolor="#CCCCCC">von '.$rowid['user'].'</td>
<td bgcolor="#CCCCCC">
<div align="center"><a href="?quotes-vote-'.$rowid['id'].'-p-new"><img border="0" src="include/images/quotes/vote_good.png" /></a> </a> '.$rowid['vote'].'
<a href="?quotes-vote-'.$rowid['id'].'-m-new"> <img border="0" src="include/images/quotes/vote_bad.png" /></a></a></div></td>
</tr>
<tr>
<td colspan="3">'.$postquote.'</td>
</tr>
</table>';
}
break;
# fehler
default:
$expl = 'ERROR : unbehandelter Fehler';
break;
}
}
##########################################################
# Template erstellen
##########################################################
$tpl->set('TOPMENU', $topmenue);
$tpl->set('NEWMENU', $newmenue);
$tpl->set('NEUMENU', $sendmenue);
$tpl->set('REGLMENU', $reglmenue);
$tpl->set('ADMINMEN', $adminmenu);
$tpl->set('FORMWIDTH', $formwidth);
$tpl->set('STATMENU', $statsmenue);
$tpl->set('SITELINK', $sites);
$tpl->set('EXPL', $expl);
$tpl->set('X', $xadmindel);
$tpl->out(0);
##########################################################
$design->footer(1);
?>
Zuletzt modifiziert von SHAQ am 16.09.2015 - 19:51:47