hi,
ich habe vor kurzem eine linkliste programmiert
das ganze seht ihr hier:
www.iso.bplaced.net
aber es sind noch ein paar fehler drin
zuerst mal was das script kann(können sollte)
es zeigt die links mit einer beschreibung an
wenn mehr als 10 links da sind wird oben ein weiter button erstellt
das geht alles
aber dann sollte wenn man auf linkeitnragen geht per jquery ein fenstern mit dem eintragen aufgehen
dort kann man dann link und beschreibung eingeben
die beschreibung darf nciht länger als 70 zeichen sind und die laufen obenbei per javascript mit
bei dem melden und dem scuhen sollte auch ein kästechen per jquery aufegehen
aber das ganze geht leider nciht
sorry für den langen code (ca. 700zeilen) aber ich kann php dateien leider nciht im anhang hochladen
zuerst die index.php die die linkliste anzeigt:
dann die auswertung.php die den link und die beschreibung in die db schreibt
dann die einstellung.php wo ich wichtige daten ausgelagert habe um den umgang mit dem script zu vereinfachen
die melden.php die zuständig ist dass man beim melden eine e-mail bekommt
die class.AJAX.php für die suchmaschine (mit oop):
Die AJAX.JavaScript.js in der wichtige javascript funktionen drin sind
die searchlinkliste.php für das durchsuchen
und zum schluss noch die entryContent.php die die ergebnisse anzeigt
und ncoh eine frage
wenn man einen link herauslöscht dann werden ja die id´s nciht neu vergeben
dh. es gibt dann zb. 1,2,4...
wie kann ich das ändern?
mfg
ich habe vor kurzem eine linkliste programmiert
das ganze seht ihr hier:
www.iso.bplaced.net
aber es sind noch ein paar fehler drin
zuerst mal was das script kann(können sollte)
es zeigt die links mit einer beschreibung an
wenn mehr als 10 links da sind wird oben ein weiter button erstellt
das geht alles
aber dann sollte wenn man auf linkeitnragen geht per jquery ein fenstern mit dem eintragen aufgehen
dort kann man dann link und beschreibung eingeben
die beschreibung darf nciht länger als 70 zeichen sind und die laufen obenbei per javascript mit
bei dem melden und dem scuhen sollte auch ein kästechen per jquery aufegehen
aber das ganze geht leider nciht
sorry für den langen code (ca. 700zeilen) aber ich kann php dateien leider nciht im anhang hochladen
zuerst die index.php die die linkliste anzeigt:
PHP:
<?
include ("einstellungen.php");
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
include ("class.AJAX.php");
$AJAX = new AJAX();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
<style type="text/css">
#eintragen
{
padding-top: 10px;
color: #FFFFFF;
text-align: center;
height: 200px;
width: 500px;
background-color: black;
display: none;
}
#melden
{
color: #FFFFFF;
text-align: center;
height: 150px;
width: 500px;
background-color: black;
display: none;
}
#suchen
{
color: #FFFFFF;
text-align: center;
height: 150px;
width: 500px;
background-color: black;
display: none;
}
#meldendiv
{
}
#eintragendiv
{
}
#suchendiv
{
}
</style>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script language="JavaScript"><!--
$("#eintragendiv").click(function()
{
if(this.id =='eintragenlink')
{
if ($("#eintragen").is(":hidden"))
{
$("#eintragen").slideDown(500);
}
else {
$("#eintragen").slideUp(500);
}
}
});
$("#meldendiv").click(function()
{
if(this.id =='meldenlink')
{
if ($("#melden").is(":hidden"))
{
$("#melden").slideDown(500);
}
else {
$("#melden").slideUp(500);
}
}
});
$("#suchendiv").click(function()
{
if(this.id =='suchenlink')
{
if ($("#suchen").is(":hidden"))
{
$("#suchen").slideDown(500);
}
else {
$("#suchen").slideUp(500);
}
}
});
function zaehlen () {
var laenge = document.formular.beschreibung.value.length;
if (laenge > 70) {
document.formular.beschreibung.value = document.formular.beschreibung.value.substring(0,160);
document.formular.feld.value = 0;
}
else {
document.formular.feld.value = 70 - laenge;
}
}
//--></script>
<?
$AJAX->addJavaScript();
?>
<head>
<body>
<table border="1" style="width: 500px;">
<?
$gesamt = mysql_num_rows(mysql_query("SELECT * FROM linkliste"));
if(isset($_GET['s']))
{
$start = $_GET['s'];
}
else
{
$start = 0;
}
if(($start+$intervall) > $gesamt)
{
$intervall = $gesamt - $start;
$mehr = 0;
}
else
{
$mehr = $start + $intervall;
}
$query = "SELECT * FROM linkliste LIMIT $start, $intervall";
$sql = mysql_query($query);
?>
<tr>
<td colspan="2">
<b>Die Linkliste enthält <?= $gesamt ?> Link(s), dies sind die Links Nummer <?= $start + 1?> bis <?= $start + $intervall?><br />
<? if($mehr>0){ ?><a href="index.php?s=<?= $mehr ?>">Weiter</a></b><? } ?>
</td>
</tr>
<?
while($ds = mysql_fetch_array($sql))
{
$link = $ds['link'];
$beschreibung = $ds['beschreibung'];
$id = $ds['id'];
echo "<tr>
<td style:'width: 20px;' align='center'>$id</td>
<td><a href=\"$link\" target='_blank'>$link</a></td>
</tr>
<tr>
<td colspan='2'>$beschreibung</td>
</tr>";
}
?>
</table>
<div id="eintragendiv">
<p id="eintragenlink">Eintragen</p>
</div>
<div id="eintragen">
<p>Ihren Link eintragen:</p>
<form action="auswertung.php" method="post" enctype="text/plain" name="formular">
Ihr Link:
<input name="link" value="http://" style="width: 480px;"/>
Ihre Beschreibung (Noch <input name="feld" value="70" size="2" maxlength="2" /> Zeichen!):
<textarea name="beschreibung" style="width: 435px;" onchange="javascript:zaehlen()" onkeydown="javascript:zaehlen()" onkeyup="javascript:zaehlen()"></textarea>
<input type="submit" value="OK" />
</form>
</div>
<div id="meldendiv">
<p id="meldenlink">Melden</p>
</div>
<div id="melden">
<?=$meldentext ?>
<form action="melden.php" method="post">
Die id des toten Links:
<input name="id" style="width: 40px;"/>
<input type="submit" value="Melden!" />
</form>
</div>
<div id="suchendiv">
<p id="suchenlink">Suchen</p>
</div>
<div id="suchen">
<?
$AJAX->displaySearchForm();
echo '<br />';
$AJAX->displayResultIframe();
?>
</div>
</body>
</html>
dann die auswertung.php die den link und die beschreibung in die db schreibt
PHP:
<?
include ("einstellungen.php");
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
</head>
<body>
<?
$link = trim($_POST['link']);
$linkaufteilung = parse_url($link);
$titel = $linkaufteilung['host'];
$beschreibung = substr(trim($_POST['beschreibung']), 1, 70);
if($link == ''||$beschreibung == '')
{
echo 'Sie müssen alle Felder ausfüllen!<br />';
echo '<a href="index.php">Zurück....</a></body></html>';
die();
}
$query = "SELECT * FROM linkliste WHERE link LIKE '$link'";
$sql = mysql_query($query);
if(mysql_fetch_array($sql))
{
echo 'Ihr Link ist schon vorhanden!<br />';
echo '<a href="index.php">Zurück....</a></body></html>';
die();
}
$query = "INSERT INTO linkliste (titel, link, beschreibung) VALUES ('$titel', '$link', '$beschreibung')";
mysql_query($query);
echo 'Ihr Link wurde erfolgreich eingertragen!<br />';
echo '<a href="index.php">Zurück....</a>';
?>
</body>
</html>
dann die einstellung.php wo ich wichtige daten ausgelagert habe um den umgang mit dem script zu vereinfachen
PHP:
<?
//Mysql-Angaben
//Host
$host = "";
//Benutzer
$user = "";
//Passwort
$pass = "";
//Datenbank
$database = "";
//Melden Angaben
//Dort wird die E-Mail hingeschickt:
$to = 'beispiel@gmx.at';
//Der Betreff der E-Mail:
$subject = "";
//Die Nachricht der E-Mail:
$message = "";
//Wie viele Links sollen auf einer Seite angezeigt werden?
$intervall = 10;
//Text der vor dem "Melden-Formular" steht
$meldentext = "<p>Sie haben einen toten Link gefunden, oder einen der rasistische Inhalte enthält?<br />Dann melden sie diesen bitte mit diesem Formular:</p>";
?>
die melden.php die zuständig ist dass man beim melden eine e-mail bekommt
PHP:
<?
include ("einstellungen.php");
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
$id = $_POST['id'];
if ($id == "") {
die('Sie müssen einen Link angeben!<br /><a href="index.php">Zurück....</a>');
}
if (!is_numeric($id)) {
die('Die Id muss eine Nummer sein!<br /><a href="index.php">Zurück....</a>');
}
$gesamt = mysql_num_rows(mysql_query("SELECT * FROM linkliste"));
if ($id <= $gesamt) {
die('Sie müssen einen korrekten Link angegeben!<br /><a href="index.php">Zurück....</a>');
}
mail ($to, $subject, $message);
?>
die class.AJAX.php für die suchmaschine (mit oop):
PHP:
<?
class AJAX
{
private $DB;
public function __construct()
{
//Globales Datenbankobjekt holen
$this->DB = $GLOBALS['DB'];
}
public function addJavaScript()
{
//Einbinden der externen JavaScript-Datei
echo "<script src='AJAXJavaScript.js' type='text/javascript'>";
echo "</script>";
//Sollte der Benutzer Javascript abgeschaltet haben, erscheint folgende Fehlermeldung
echo "<noscript>";
echo "<div style='border:1px solid red; background-color:white;color:red;font-weight:bold;'>";
echo "Ohne aktiviertes Javascript lässt sich die Suchfunktion nicht benutzen!";
echo "</div>";
echo "</noscript>";
}
public function displaySearchForm()
{
echo "<fieldset style='margin:2px;padding:5px;width:400px;background-color:white;border:1px solid gray;'>";
//Ergebnisauswahlliste
echo "Ergebnisse:<br />";
echo "<select onClick='loadEntry();' id='results' style='border:1px solid gray;width:250px;background-color:white;' size=6>";
echo "</select><br />";
//Textfeld für den Suchbegriff
echo "Suchbegriff:<br />";
echo "<input id='name' onKeyup='actualize();' type='text' value=''><br />";
echo "</fieldset>";
}
public function displayResultIframe()
{
//Hinzufügen des IFrames
echo "<iframe id='entryContent' src='entryContent.php' style='padding:5px;margin:2px;width:400px;border:1px solid gray;' frameborder=0></iframe>";
}
public function getSearchResult()
{
//Suchparameter aus der GET-Variablen holen
if ((isset ($_GET['name'])) && ($_GET['name'] != ""))
{
$searchString = $_GET['name'];
}
else
{
//Kein Suchbegriff gesetzt -> Skript beenden.
return false;
}
//Tabelle durchsuchen
$sql = "SELECT DISTINCT id, titel, link, beschreibung FROM iso_linkliste WHERE "."titel LIKE '%".$this->DB->escapeString($searchString)."%' OR "."link LIKE '%".$this->DB->escapeString($searchString)."%' OR "."beschreibung LIKE '%".$this->DB->escapeString($searchString)."%';";
//Suche ausführen
$data = $this->DB->query($sql);
//Wenn Datensätze gefunden wurden...
if (count($data) == 0)
{
return false;
}
//Als JSON-codiertes Array zurückgeben
echo json_encode($data);
}
public function displayEntry()
{
//Überprüfen, ob die Nummer des Eintrags angegeben wurde.
if (isset ($_GET['id']) && ($_GET['id'] != ""))
{
//Nummer und Suchbegriff holen
$id = $_GET['id'];
$search = $_GET['search'];
}
else
{
//Kein EIntrag gewählt
echo "Kein Eintrag ausgewählt.";
return false;
}
$sql = "SELECT * FROM iso_linkliste WHERE id = '".$this->DB->escapeString($id)."'";
$result = $this->DB->query($sql);
//Falls eine nicht vorhandene Nummer übergeben wurde.
if (count($result) != 1)
{
echo "Eintrag mit der Nummer ".$id." nicht vorhanden.";
return false;
}
//Überschrift ausgeben:
echo "<div style='border-bottom:1px solid gray;'>";
echo "<span style='color:steelblue;font-weight:bold;'>Link: ";
$this->colorizeString($result[0]['headline'], $search);
echo "</span>";
echo "<br />";
//Autorname ausgeben:
echo "<span style='color:steelblue;'>Vollständiger Link: ";
$this->colorizeString($result[0]['name'], $search);
echo "</span>";
echo "</div>";
//HTML-Zeilenumbrüche hinzufügen
$text = nl2br($result[0]['beschreibung']);
//Text ausgeben
$this->colorizeString($text, $search);
}
private function colorizeString($text, $searchterm)
{
//Stelle finden!
$pos = stripos($text, $searchterm);
//Wurde nichts gefunden
if ($pos === false)
{
//Suchbegriff nicht gefunden: Text ausgeben
echo $text;
}
else
{
//Text vor der gesuchten Stelle des Suchbegriffs
echo substr($text, 0, $pos);
echo "<span style='background-color:orange'>";
//Suchbegriff:
echo substr($text, $pos, strlen($searchterm));
echo "</span>";
//Position direkt hinter dem Suchbegriff
$behindSearchterm = $pos +strlen($searchterm);
//Erneut mit Reststring rekursiv aufrufen
$this->colorizeString(substr($text, $behindSearchterm, strlen($text) - $behindSearchterm), $searchterm);
}
}
}
?>
Die AJAX.JavaScript.js in der wichtige javascript funktionen drin sind
Code:
function actualize() {
try {
// Gecko-Engines unterstuetzen XMLHttpRequest.
// IE benutzt ActiveX.
xmlhttp = window.XMLHttpRequest?
new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// Fehler: der Browser kommt mit AJAX nicht klar
alert('AJAX wird von diesem Browser nicht unterstuetzt!');
return false;
}
//Das xmlhttp-Objekt soll bei jeder Statusaenderung eine Funktion auslesen
//dies ist hier die Funktion triggered()
xmlhttp.onreadystatechange = triggered;
//Parameter steht im Textfeld:
var name = document.getElementById('name').value;
//open() ruft das angegebene Skript auf und sendet per GET die Parameter
//Vorsicht mit 127.0.0.1 oder LAN-Adresse
//xmlhttp.open('GET','http://192.168.1.6/BUCH/scripts/AJAX/searchBlog.php?name=' + escape(name));
xmlhttp.open('GET','http://iso.bplaced.net/searchlinkliste?name=' + escape(name));
//Die Anfrage senden:
xmlhttp.send(null);
}
function triggered(){
if ((xmlhttp.readyState != 4) || (xmlhttp.status != 200)) {
return false;
}
//in xmlhttp.responseText steht die Antwort des aufgerufenen Skriptes
//als JSON Objekt
var results = eval(xmlhttp.responseText);
//Die Select Liste an eine Variabel binden
var resultField = document.getElementById('results');
//SelectListe leeren
var optionCount = resultField.options.length;
for (var i = 0; i < optionCount; i++){
resultField.options[0] = null;
}
if(results.length == 0){
return false;
}
//Alle gefundenen Einträge einfügen
for (var i = 0; i < results.length; i++){
//Neuen Eintrag erstellen
resultField.options[i] = new Option(unescape(results[i].headline),results[i].id);
}
}
function loadEntry(){
//Ausgew?hlter Eintrag....
var id = document.getElementById('results').value;
var search = document.getElementById('name').value;
//Seite in den iframe laden
document.getElementById('entryContent').src = 'entryContent.php?id=' + id + '&search=' + search;
}
die searchlinkliste.php für das durchsuchen
PHP:
<?php
require_once "class.AJAX.php";
$AJAX = new AJAX();
$AJAX->getSearchResult();
?>
und zum schluss noch die entryContent.php die die ergebnisse anzeigt
PHP:
<?php
require_once "class.AJAX.php";
$AJAX = new AJAX();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
<head>
<body>
<?
$AJAX->displayEntry();
?>
</body>
</html
und ncoh eine frage
wenn man einen link herauslöscht dann werden ja die id´s nciht neu vergeben
dh. es gibt dann zb. 1,2,4...
wie kann ich das ändern?
mfg