Hi,
laut Manual (unten unter 'Anmerkungen') muss man sich erst mit der DaBa verbinden, dann kann man die Funktion benutzen.
Du musst also die beiden Zeilen hinter die DaBa-Verbindung verschieben, dann sollte es klappen.
Gruß Talwin
Hi,
laut Manual (unten unter 'Anmerkungen') muss man sich erst mit der DaBa verbinden, dann kann man die Funktion benutzen.
Du musst also die beiden Zeilen hinter die DaBa-Verbindung verschieben, dann sollte es klappen.
Gruß Talwin
Hi,
der Code ist ja grausig an einigen Stellen... :shock: .
Sowohl der HTML-Teil als auch das CSS. Ich habe Dir unten mal den verbesserten Code gepostet mit Kommentaren zu meinen Änderungen. Integriert ist das schreiben in eine Datenbank.
Grundsätzlich ist es falsch, HTML Code in die Datenbank zu schreiben. Speichere die beiden Urls in eine Tabelle und setze den HTML Code zum Ausgeben erst in der Ausgabedatei nach dem Holen der Daten aus der DaBa zusammen. Der Sinn ist, dass dann bei Änderung der Ausgabe nur einmal Code geändert werden muss, ansonsten musst Du alle DaBa Einträge editieren.
Vorausgesetzt habe ich jetzt einfach mal folgende Struktur der DaBa Tabelle, in die die Texte gespeichert werden sollen:
Name der Tabelle: banner
id -> int, Primary key, Auto increment
hurl -> varchar(100)
burl -> varchar(100)
Habe den CSS Teil mal in eine externe Datei ausgelagert. Nebenbei bemerkt gehört in einer HTML Datei der <style type="text/css"></style> Teil zwischen <head> und </head> und nicht nach <body>.
CSS Datei 'style.css'
body {
background-color: #000000;
/* das hier ist kein CSS, sondern eine IE-Erfindung, eh nur Spielerei... */
/*scrollbar-arrow-color: #222222;
scrollbar-base-color: #000000;*/
}
a:link {
color: #b4b4b4;
font-weight: bold;
/* Du gibst bei size keine Einheiten an. Soll der Browser raten? px, pt oder gar em oder %? */
font-size: 11;
text-decoration: none;
/* Hier fehlt noch als Alternative die allgemein Schriftfamilie, falls Verdana nicht installiert ist, z.B. sans-serif */
font-family: verdana;
}
a:visited {
text-decoration: #b4b4b4;
}
a:active {
text-decoration: #b4b4b4;
}
a:hover {
color: #b4b4b4;
font-weight: bold;
/* wieder fehlt die Einheit */
font-size: 14;
text-decoration: none;
}
.link {
color: #b4b4b4;
font-weight: bold;
font-size: 11;
text-decoration: none;
font-family: verdana;
}
.bgform {
background-color: #000000;
color: #b4b4b4;
font-weight: bold;
font-size: 11;
}
.ueber1 {
color: #b4b4b4;
font-weight: bold;
font-size: 16;
font-family:verdana;
}
.ueber {
color: #b4b4b4;
font-weight: bold;
font-size: 11;
}
.text {
color: #b4b4b4;
font-size: 11;
font-family: verdana;
}
.bgtab {
background-color:#000000;
}
Alles anzeigen
Warum gibst Du unnötigerweise statischen HTML Code mit echo aus? PHP musst Du nur da deklarieren, wo Du auch wirklich PHP benutzt. Das entlastet den Server.
PHP-Datei mit Formular:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
...
<link rel="StyleSheet" href="style.css" type="text/css" />
</head>
<body>
<?php
// ueberpruefen, ob Formular abgeschickt wurde
if(!empty($_POST) && isset($_POST['send'])) {
// Pflichtfelder ueberpruefen
if(($_POST['hurl'] != '') && ($_POST[''] != 'burl')) {
// bevor Variablen in einer Query benutzt werden, wird der String auf SQL Injections ueberprueft
$hurl = mysql_real_escape_string($_POST['hurl']);
$burl = mysql_real_escape_string($_POST['burl']);
// DaBa Anbindung
// Werte anpassen!!!
$db = @mysql_connect('db_server', 'db_user', 'db_password');
if(!$db) {
exit('Error beim Connecten mit Datenbank!');
}
// Tabelle auswaehlen
if(!@mysql_select_db('banner')) {
exit('Error beim Auswaehlen der Tabelle!');
}
// Formular in Tabelle eintragen
$sql = "INSERT INTO banner SET hurl='".$hurl."', burl='".$burl."'";
if(!@mysql_query($sql)) {
exit('Error beim Einfuegen in Tabelle!');
}
// Erfolgsmeldung anzeigen plus event. weiteres HTML (Zurueck Link...)
echo('<p>Eintragen erfolgreich!</p>');
}
else {
echo('Plichtfelder bitte ausfuellen!');
}
}
else {
// Formular anzeigen
?>
<!-- Hier fehlte das action-Attribut!! -->
<form name="form1" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<!-- das font-tag ist veraltet! Attribute schreibt man in ""! -->
<!-- label ist das semantisch korrekte tag, Aussehen kann mit CSS geaendert werden! -->
<label for="hurl" class="text">Homepage-URL:</label>
<br />
<input type="text" name="hurl" size="20" class="bgform" />
<br />
<label for="burl" class=text>Banner-URL:</label>
<br />
<input type="text" name="burl" size="20" class="bgform" />
<br />
<input type="submit" value="Erstellen" name="send" class="bgform" />
</form>
<?php
}
?>
</body>
</html>
Alles anzeigen
Nun die Datei zum Anzeigen der Banner:
...
<?php
// DaBa Anbindung
// Werte anpassen!!!
$db = @mysql_connect('db_server', 'db_user', 'db_password');
if(!$db) {
exit('Error beim Connecten mit Datenbank!');
}
// Tabelle auswaehlen
if(!@mysql_select_db('banner')) {
exit('Error beim Auswaehlen der Tabelle!');
}
// Zufaellige Zeile holen
$sql = "SELECT * FROM banner ORDER BY random() LIMIT 1";
$result = @mysql_query($sql);
if(!$result) {
exit('Select fehlgeschlagen');
}
$row = mysql_fetch_object($result);
// nun ausgeben, vorher event. im Formular eingegebenen HTML Code aus Sicherheitgruenden ersetzen
// Hier sollte man die Eingaben aus Sicherheitgründen noch weiter überprüfen, z.B. auf richtiges Format einer URL usw.
$hurl = htmlspecialchars($row->hurl);
$burl = htmlspecialchars($row->burl);
echo('<a href="'.$hurl.'" target="_blank" ><img src="'.$burl.'" border="0" height="60" width="468" alt="'.$hurl.'" /></a>');
?>
Alles anzeigen
Aber vorsicht, es können noch kleine Fehler drin sein, Code ist ungetestet!
Gruß Talwin
Du meinst wohl eher, wie Du eine Seite nur ausgewählten Benutzern zeigen kannst, nur einen Link zu schützen bringt nix.
Mit einem Login Bereich, wo sich diese User mit einem Passwort anmelden müssen, ist das zu lösen. So stellst Du sicher, dass nur diese User den Inhalt der geheimen Seite zu sehen bekommen.
[url=http://www.developers-guide.net/forums/54,php-ein-sessionbasiertes-loginsystem]Hier[/url] findest Du eine Anleitung zum selbst erstellen eines solchen Login Systems. Als Alternative gibt es solche Systeme massenweise kostenlos zum Download.
Gruß Talwin
Nein, natürlich nicht. Den Anfang der Tabelle gibst Du vor der while Schleife aus <table...> dann in der Schleife die Tabellenzellen, dann nach der Schleife das Tabellenende </table>. Musst es halt für Dich anpassen.
Gruß Talwin
Du kannst keine While Schleife in einem echo ausführen. Beende davor das echo, führe meinen Code aus, dann gebe den Rest der Tabelle in einem zweiten echo aus.
Gruß Talwin
Was willst Du denn mit der ganzen Spalte machen? Ausgeben? wenn ja, dann z.B. so:
$sql = "SELECT Player FROM Training";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
while($row = mysql_fetch_object($result)) {
echo('<p>'.$row->Player.'</p>');
}
Gibt einfach für jeden Player einen Absatz mit dem Wert, der in der Spalte steht.
Gruß Talwin
Also, am einfachsten ist es da, 2 unabhängige Abfragen zu machen. Eine mit der Where Einschränkung nur für den User und eine Zweite ohne Where Klausel, wo Du dann die ganze Spalte hast. die beiden Abfragen musst Du dann natürlich in verschiedenen Variablen abspeichern (z.B. $result1 und $result2 usw.)
Gruß Talwin
Der relevante Teil ist dann wohl diese Abfrage, oder? Willst Du hier alle Player aus der Tabelle Training ausgeben?:
$sql = "SELECT
Player
FROM
Training
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
Dann musst Du den mysql_fetch Teil natürlich in einer while-Schleife ausführen, da in $result eine Ergebnismenge zurück gegeben wird:
while($row = mysql_fetch_assoc($result)) {
// hier der Code zum Ausgeben/Verarbeiten des einzelnen Player
}
Gruß Talwin
Hi,
so können wir Dir nicht helfen. Vermutlich musst Du einfach die WHERE Klausel in dem MySQL Statement weglassen. Hier mal ein Beispiel:
Hier fragst Du nur den Namen des Users ab, der den login 'myname' hat. Als Tabellennamen nehme ich mal 'users'
Um nun alle Namen aus der Tabelle users zu bekommen, musst Du einfach die WHERE Klausel weglassen:
Falls das nicht hilft, dann poste bitte mal die gesammte SQL Abfrage.
Gruß Talwin
Zitat von "maulepan"scheiss auf htacces...
ich hab nen verdammten vertrag für 9,90 euro im monat und habe nichtmal eine htacces...
Die sagen, das wäre aus sicherheitsgründen entfernt worden...
Dann bist Du eindeutig bei dem falschen Hoster. Wofür in Gottes Namen gibst Du 9,90 € aus? Hast Du eine gewerbliche Seite mit Shopsystem und viel Traffic? Wenn nicht reicht bei einem guten Hoster, wie z.B. all-inkl.com ein Paket für um die 4 €.
Gruß Talwin
Einen sehr guten Einstieg bietet [url=http://www.developers-guide.net/forums/54,php-ein-sessionbasiertes-loginsystem]dieses Tutorial[/url].
Gruß Talwin
Richtig :wink:
Da gibt es eine einfache Methode. Erstelle mit einem Editor eine Datei namens test.php
In diese Datei schreibst Du nur das hier, nichts anderes:
Dann via FTP auf den Webspace hochladen. Dann im Browser aufrufen: <!-- m --><a class="postlink" href="http://www.DeineDomain.at/test.php">http://www.DeineDomain.at/test.php</a><!-- m -->
Dann poste mal, ob Du mehr als nur diese eine Zeile siehst.
Gruß Talwin
Hast Du meinen Code ganz gelesen?
Du meinst einen switch/case Block? Das ist im Grunde genommen fast dasselbe wie if/elseif/elseif/.../else nur ne andere Syntax. Ist bei vielen Alternativen weniger zu schreiben.
Gruß Talwin
Du darft die Datei nicht mit einem Textverarbeitungsprogramm erstellen, sondern musst einen Editor benutzen, wie z.B. Notepad. Dort benennst Du die Datei .htaccess, Notepad setzt glaube ich standardmäßig .txt dahinter. Diese Datei dann hochladen, und dann auf dem Webspace die Endung .txt wegeditieren.
Gruß Talwin
Hi,
ich würde es so ähnlich machen wie oben.
<?php
if(isset($_POST['button'])){
$game = '';
if($_POST['game'] == 'game1') {
$game = 'game1.swf';
}
elseif($_POST['button'] == 'game2') {
$game = 'game2.swf';
}
.
.
?>
<!-- hier der object tag zum Einbinden der SWF Datei -->
<object>
<param name="game" value="<?php echo($game); ?>">...</param>
...
</object>
<?php
}
else {
?>
<form name="myform" method="post">
<select name="game">
<option>Spiel wählen</option>
<optgroup label="main">
<option name="game1" value="game1">Game 1</option>
<option name="game2" value="game2">Game 2</option>
</optgroup>
</select>
<input type="submit" value="start Game" name="button" />
</form>
<?php
}
?>
Alles anzeigen
D.h. Du includierst nicht die SWF Dateien, sondern Du gibst stattdessen den HTML Code zum Einbetten von swf-Dateien aus, die Datei die eingebettet wird, wird per Formular übergeben.
Aber Achtung, ist ungetestet, sollte aber so ähnlich funktionieren.
Gruß Talwin
Hier kann man nachlesen, wie es geht.
Zitat von dort:
Als statische Angabe hat das Ausgrauen von Elementen dagegen wohl selten Sinn, denn Formularelemente, die man definiert, definiert man schließlich aus gutem Grund.
Gruß Talwin
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.