Scriptname wirft dir deine aktuelle Seite zurück.
Deine Ausgabe ist soweit fertig.
Scriptname wirft dir deine aktuelle Seite zurück.
Deine Ausgabe ist soweit fertig.
Ich meine es wäre gut zu wissen welche URL das nun genau ist.
Wenn du eine URL erwartetst wie http://www.deinedomain.de/guestbook.php und du im http://www.deinedomain.de/klettern bist dann sollte das ../ funktionieren.
Aber wie gesagt wenn deine questbook.php eh im Rootdirectory ist kannst du auch per /./ zurück ins Root gehen.
Sollte das nicht funzen mal die URL aus der Linkadresse hier posten
Du brauchst:
<form method="post" action="action.php">
<input type="text" name="searchcontent" /> Suchinhalt
</form>
Auswertung:
<?php
$teilnehmer = $_POST['searchcontent'];
// Datenbankverbindung
$mysqli = new mysqli("localhost", "root", "", "teilnehmer");
if(!($mysqli->connect_errno)) {
// ACHTUNG! Weiß leider nicht ob man das mysql_real_escape_string auch in mysqli benutzen kann
// Dieser Query sagt nun deiner Datenbank etwas wie:
// Gebe mir die id und den Namen aus der Teilnehmerliste, wo der Teilnehmer ähnlich ist wie der Suchbegriff und sortiere das Ergebnis absteigend nach der ID und maximal 50 Einträge von 0 beginnend
$sqlquery = "SELECT `id`,`name` FROM `teilnehmerliste` WHERE `teilnehmer` like '%".mysql_real_escape_string($teilnehmer)."%' ORDER BY id asc LIMIT 0,50";
$result = $mysqli->query($sqlquery); // führt den query aus und speichert ergebnis
echo "<table><tr><td>ids</td><td>namen</td></tr>";
while($row = $result->fetch_assoc()) {
// ausgabe von id in spalte 1 und ausgabe von namen in 2. spalte
echo '<tr><td>'.$row['id'].'</td>'; // oder $row[0];
echo '<td>'.$row['name'].'</td></tr>'; // oder $row[1]
}
echo "</table>";
// verbindung schließen
$mysqli->close();
}
?>
Alles anzeigen
Benutze zum Verbinden von Strings und Variablen den Verkettungsoperator .
echo "Das ist meine Variable:".$var;
Im Allgemeinen baust du dort eine Tabelle auf und sagst, dass jeder Eintrag eine Zeile in der Tabelle sein soll.
Bau deinen Head der Table doch mal auf wie deine Datenbank.
Wenn du also die Spalten id und name in deiner Liste hast erstelle dir diese 2 Spalten in deiner HTML-Tablle in der Reihenfolge wie in der Datenbank.
Lasse dir dann deine $row von 0 bis letzter index ausgeben und befülle die Spalten.
Solltest du alles richtig machen solltest du ein logisches und verständliches Ergebnis bekommen
Schau dir den Quellcode von Bandit an, der sollte funzen.
Wie gesagt etwas Datenbank-KnowHow wäre nicht schlecht.
Du hast sicherlich eine Datenbank wenn du das jetzt versuchst, oder?
Dann klick doch mal auf deine Tabelle und dann auf SQL. Anschließend auf den Button SELECT (ohne *)
Dann hast du da einen wunderbaren SQL String, der dir alle deine Spalten selektiert.
Diese sind geordnet in deiner Tabelle.
Erst kommt deine id, dann dein Name. Also wäre deine ID == $row[0] oder $row['id']
Der Integer gilt hierbei dann für den Spaltenindex und der String ist dann einfach nur die Möglichkeit deine Spalte per Namen zu "suchen".
Zum Fehler: Entfern mal die eine Zeile echo "Abfrage ".$sql; unter der IF-Abfrage.
../ geht ein Directory noch oben.
Heißt wenn du nur ein Verzeichnis hast, also Projektordner dann müsstest du bei einmal "raus gehen" im Rootdirectory sein.
Andernfalls kannst dus immer zurück ins Rootverzeichnis mit /./
Welche URL erwartest du denn und welche wird nach dem Linkklick angezeigt?
Alles anzeigen
<input type="text" name="ein1" />
<?php
echo "DB-Zugriff beginnt";Hier baust du eine Verbindung zur Datenbank auf.
Eine Datenbank besitzt einen Hoster, Benutzernamen und ein Kennwort, sowie Tabellen.
$mysqli = new mysqli ("hierhost", "hierbenutzer", "hierkennwort", "TestDB");Hier wird abgefragt, ob die Verbidung zur Datenbank fehlgeschlagen ist
if (mysqli_error() ) {
echo "<p>Keine Verbindung ", mysqli_error (), "</p>\n";
exit ();
}Leider kann ich keine Deklarierung der Variablen sql entdecken!?
echo "Abfrage ".$sql;
Ausgabe des GET Parameter ein1 aus deinem Formular
Hier liegt wahrscheinlich dein Fehler. Es muss $_GET['name'] sein
echo $GET ['ein1'];
$such = $GET['ein1'];Hier wird nun deine Variable sql definiert. Was dort zu sehen ist ist der Query.
Mit Hilfe dieses Querys steuerst du deine Abfragen.
In diesem Fall werden alle Spalten aus der Tabelle teilnehmer deiner Datenbank ausgelsen,
jedoch nur dort, wo (where) deine Spalte teilnehmer ähnlich wie dem GET Parameter ein1 aus deinem Formular ist und maximal werden 50 teilnehmer ausgegeben
bzw nur deine ersten 50 Ergebnisse werden ausgegeben, veränderst du die 0 zu einer 1 beispielsweise werden alle Ergebnisse ausgeben, außer das erste und alle nach dem 50. Ergebnis
Statt dem * sollten hier alle Spalten einzelnd ausgegeben werden. (select id,name,..)
$sql = "Select * from teilnehmer limit 0,50 where teilnehmer like '%$such%'";
echo "<br>SQL: ".$sql;Da ich mich noch nicht viel mit MySQLi verschäftigt habe kann ich hier grade nur raten,
dass hier der auszuführende Query mit deiner sql-Abfrage auf deine Variable result geschrieben wird (deine Ergebnisse)
Ich denke, wenn die Ergebnisse erfolgreich auf deine Variable result geschrieben wurden, ergibt dies true
if ($result = $mysqli->query($sql) ) {
echo "<p>Daten kommen</p><table> ";Diese while Schleife geht jedes deiner Egebnisse durch
while ($row = $result->fetch_array() ) {
Hier ist wahrscheinlich deine Aufgabe entsprechende Ausgaben zu tätigen.
Also gibst du hier über dein Array row deine Daten aus, in etwa so: $row['columnname']
echo "<tr>";
echo "<td>","</td>";
echo "</tr>";
}
echo "</table>";
$result->close();
} else {
echo "Problem SQL-Abfrage";
}
schließt die Verbindung
$mysqli->close ();
?>
Für mehrere Informationen und detaillierteres wende dich an die Dokumentation über MySQLi von php.net
Diese findest du hier
Viel Erfolg
Ps: Vielleicht erstmal ein paar SQL Statements angucken, und allgemeines über php lernen bevor man gleich mit Datenbanken hantiert
Was sollte man denn anstelle von Frames benutzen. Tabellen?
Wie bereits erwähnt, Boxmodell mit Hilfe von divs.Mir stellt sich nun die Frage, ob ich immer diesen Weg gehen muß
oder ob ich nicht direkt das Video irgendwie verlinken kann, sodass es im
rechten Frame abgespielt wird.
Eine Möglichkeit dafür wäre PHP einzusetzen.-
Du könntest beim Klick auf deinen Link deine Seite neu laden und deine URL mit Hilfe von GET Parametern erweitern.
Im rechten Frame oder Div, je nach dem was du benutzt könntest du dann entsprechend über include deine Datei einholen.
Beispiel:
<!DOCTYPE html>
<html>
<head>
<link href="verlinkung zur externen css datei" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="leftcontainer">
<a href="deineseite.php?show=video">Video zeigen</a>
</div>
<div id="rightcontainer">
<?php
// pürft ob get parameter vorhanden
if(isset($_GET['show'])) {7
// lädt video.html in den container
include("video.html");
}
?>
</div>
</body>
</html>
Alles anzeigen
Natürlich könntest du auch mit JavaScript deine Datei in deinen rightcontainer laden.
Jedoch etwas aufwendiger als das bisschen php.
Wenn du php verwendest, muss deine Datei eine .php Endung haben!
Deine CSS dazu könnte so aussehen:
div#leftcontainer {
float: left;
width: 100px;
height: 100px;
margin: 0;
}
div#rightcontainer {
float:left;
margin: 0;
width: 100px;
height: 100px;
}
Alles anzeigen
Per # definierst du ein HTML Objekt mit einer ID (left und rightcontainer)
Über float kannst du beide links nebeneinander positionieren.
Die von synaptic erwähnte Seite css4you.de kann ich ebenfalls nur empfehlen.
Hoffe das hat dir etwas geholfen
Ansonsten mal die onclick Funktion von JavaScript anschauen.
Dort könntest du deinen embed Code einfach in deinen rightcontainer schreiben.
Good luck.
Leider auch kein iPad oder sonstiges hier
Mit meinem Handy (dolphin) funktioniert es soweit.
Aber noch eine kleine Anmerkung: In Chrome scheint dein Menü etwas verrutscht zu sein
Ebenfalls solltest du die Menüpunkte genauer fixieren, damit sie nicht "rum wackeln" wenn sich die Font ändert
*disabled, sorry
Danke Bandit.
ZitatIst dies irgendwie ohne Datenbank möglich?
Wenn die Idee an einer Datenbank besteht bzw an ein CMS denke ich, ists kein Problem PHP zu verwenden um Kunden oder Teilnehmer aus einer txt Datei auszulesen...
@Bandit die Textarea bei der Eingabe steht auf disenabled, sprich der Quelltext wird trotzdem eingefügt und bei der Ausgabe natürlich ausgeführt
Zu dem SELECT *, danke nochmal für den Hinweis vergess ich an manchen Stellen leider immer wieder .. Danke!
explanator, danke für deinen Hinweis, ich werds mit bei Gelegenheit sicherlich anschauen.
Die Links bei php.net zu MySQLi sehen ja nicht schlecht aus, doch für ein kleinen Part wie ein Gästebuch werd ich mir das jetzt nicht anschauen und ich muss dafür auch eine andere Lösung finden.
Was meinst du mit Kontextwechsel beachten?
BB-Codes verhindern nicht, dass ein Benutzer <h1> eingeben kann und somit das Gästebuch ordentlich zermüllt
Wie kann ich also nun verhindern, dass HTML Tags wie Überschriften nicht aufgeführt werden bzw. warum wird der Hauptcontainer ab der Überschrift nicht weiter angezeigt?
Hallo,
ich habe ein Gästebuch was so an sich auch funktioniert ..
Das doofe ist nur, dass wenn ein Benutzer HTML einfügt, das auf einmal der Beitrag des Benutzers von den Stylesheets her nicht korrekt angezeigt wird.
Dies ist auch nur der Fall wenn HTML Tags verwendet wurden, wie zum Beispiel h1/2..
Wie das dann aussieht könnt ihr im Anhang falsch.png sehen
Ab der Überschrift wird das Hauptelement, wo der Inhalt drin steht nicht "weitergeführt".
Überschrift wurde jedoch richtig beendet.
Der Footer ist wieder ganz normal.
Im Anhang richtig.png ist zu sehen wie es richtig aussieht, unter der Verwendung vom HTML Tag <b>
PHP-Teil:
$get_entries = mysql_query("SELECT * FROM `gb_entries` ORDER BY ID desc LIMIT 15")
or die ("Gästebucheinträge konnten nicht geladen werden.");
while($gb = mysql_fetch_assoc($get_entries)) {
// Hauptbereich des Gästebucheintrags
echo '<tr><p class="entrie-item">'.nl2br($gb['message']).'</p>';
// Fußzeile mit entsprechenden Informationen
echo '<table class="entrie-footer"><tr>
<td class="entrie-item-footer">'.$gb['contact'].'</td>
<td class="entrie-item-footer">'.date("d.m.Y - H:i", $gb['since']).'Uhr</td></tr></table></tr>';
}?>
Hab mir deinen Quelltext nicht angeschaut, aber
wie wärs mit ner Veränderung der URL
Bsp: ?execute=true
Wenn GET[execute] = true dann..
-- execute jsCode --
window.location.href = ?execute=false ?
Hallo
ich sitze seid gestern Nachmittag vor dem Problem, dass ich bei einem INSERT Statement die Meldung bekomme "Spreadsheet is full."
Das lustige dabei ist nur, dass die Tabelle, auf die ich zugreifen möchte 14 beschriebene Zeilen mit je 9 Spalten hat.
Ich nutze noch die 97-Version von Excel. Die Tabelle ist abgespeichert als Excel Arbeitsmappe 4.0
Dementsprechend dürften dort über 65.000 Zeilen zur Verfügung stellen. Da komme ich ja nun mit den 14 beschriebenen noch längst nicht ans Limit.
Also wieso erhalte ich diese Fehlermeldung?
Bin seid gestern nur noch am Suchen aber finde eben nur die Ursache, dass eben das Blatt voll ist.
Habe meinen Insert-Command schon in verschiedenen Varianten ausprobiert, keine möchte funktionieren.
Auch den ConnectionString habe ich in mehreren Varianten ausprobiert..
Beispiel am derzeitigen Quelltext:
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Databse.xls';Extended Properties='Excel 4.0;ReadOnly=False';"Dim conn As New OleDbConnection(conn)conn.Open()Dim mQuery As New OleDbCommandmQuery.Connection = conBumQuery.CommandText = "Insert into [Databse$] ([pID],[price],[current_date],[category],[shop],[comment],[inMonth],[inYear]) values(" & rowsCount & ", " & new_Price.Text & ", '" & new_Date.Text.ToString & "', '" & new_Category.Text.ToString & "', '" & new_Where.SelectedItem.ToString & "', '" & new_Comment.Text.ToString & "', " & nwDate(1) & ", " & nwDate(2) & ")"mQuery.ExecuteNonQuery()conn.Close()
Der Fehler tritt bei mQuery.ExecuteNonQuery() auf.
Es wurden keine Spalten vergessen, keine der Textboxen oder Variablen enthalten leere Strings.
Numerische Daten habe ich mit " & var & " geschrieben und Strings mit '" & var & "'
Welche Möglichkeiten gibt es noch zur Behebung des Problems?
Gestern habe ich noch einen Dozenten gefragt, der konnte mir aber auch nicht weiter helfen ..
Ich hoffe, ihr könnt mir helfen, denn ich bin am verzweifeln.
Liebe Grüße nd ein schönes Wochenende @All
Lösung: Tabellenblatt löschen und neu erstellen -.-
Ich find jQuery echt spannend und sieht sehr viel versprechend aus.
Habe mich dort mal etwas eingefunden aber funktionieren tut noch nicht viel Wird schon!
Also zu meiner Denkweise:
5 Elemente (MI1 bis MI5) im MainContainer "menue" welche per JavaScript (createMenue()) erstellt werden.
Diese 5 Elemente besitzen ein mouseover- und mouseoutEvent.
Beim mouseOverEvent soll sich das Element nach oben ziehen und nach unten ausklappen (funktioniert soweit!)
Wenn ich nun aber andere Objekte in den Elementen MI1 bis MI5 habe, erhalten diese die gleiche Eventfunktion vom Parent.
Sprich wenn man den Button für ein Menüpunkt hovert, wird dropup() ausgeführt, da das ParentElement ein mouseout-Event unterfällt.
Anschließend wird lustiger Weise dropdown() erneut ausgeführt und das ganze klappt sich wieder aus. Selbst wenn ich meinen Buttons beim mouseoverEvent null zuweise oder eine leere function.
Zum "event" - Parameter, das kann ich doch nicht einfach in der function als ersten Parameter benutzen, weil ich doch gar keinen 2. übergebe also sprich ich müsste dann immer die function dropdown() beim hovenr der 5 Elemente mit 2 Parametern aufrufen, also dropdown(e.currentTarget, this.id); return false; ?
Danke für deine Hilfe ich hoffe ich reiz deine Nerven nicht zu sehr
ist ja eigentlich irrelevant ob da die id oder this.id steht. Kommt doch aufs gleiche hinaus und das funktioniert ja auch.
Ok hier mal der vollständige Sourcecode:
tools.js (hier wird Menü erstellt und im späteren Verlauf werden dort alle Menüunterpunkte als Buttons hinzugefügt)
function createMenue() {// get Size
var screenWidth = window.innerWidth-440;
var screenHeight = window.innerHeight;
var docHeight = (screenHeight/2)-30;
// menue - element
var myMenue = document.createElement("div");
myMenue.style.width = screenWidth + "px";
myMenue.style.height = "30px";
myMenue.style.marginLeft = "220px";
myMenue.style.marginTop = docHeight + "px";
myMenue.id = "dropdown";
// menüpunkte MI1-5
myMenue.innerHTML = "<div id='MI1' class='menue_item'>Home<br></div>" +
"<div id='MI2' class='menue_item' onmouseover='dropdown(this.id); return false;' onmouseout='dropup(this.id); return false;'>Übersicht<br><br></div>" +
"<div id='MI3' class='menue_item' onmouseover='dropdown(this.id); return false;' onmouseout='dropup(this.id); return false;'>Spiele<br><br></div>" +
"<div id='MI4' class='menue_item' onmouseover='dropdown(this.id); return false;' onmouseout='dropup(this.id); return false;'>Informationen<br><br></div>" +
"<div id='MI5' class='menue_item' onmouseover='dropdown(this.id); return false;' onmouseout='dropup(this.id); return false;'>Login<br><br></div>";
// add element to body
document.body.appendChild(myMenue);
// create buttons
var myBtn = document.createElement("input");
myBtn.type = "button";
myBtn.id = "example.php";
//myBtn.onmouseover = function() { block(this.id); }
//myBtn.onclick = "getPage(this.id); return false;";
myBtn.value = "Example 1.1";
// add buttons (example for Btn1^)
document.getElementById("MI2").appendChild(myBtn);
}
Alles anzeigen
createMenue() wird beim onload Event vom body ausgeführt.
So dann gibt es noch die dropdown.js, dort sind die functions verfügbar, welche mouseover- und mouseoutEvent der Divs MI1 bis MI5 behandeln
// GLOBALSvar tmpObjHeight;
var tmpObjTop;
var counter;
var menueSlide;
var state = 0;
function dropdown(tmpObj) {
if(state==1) {
return;
}
//else {
//var childCount = document.getElementById(tmpObj).childNodes.length;
//var i=0;
//while(i != childCount) {
//if(event.target == $('#MI2').children().first().attr('id')) {
//return; - kein return
//}
//else {
//i++;
//}
//}
//}
// standardgrößen
document.getElementById("MI1").style.height = "30px";
document.getElementById("MI1").style.marginTop = "0px";
document.getElementById("MI2").style.height = "30px";
document.getElementById("MI2").style.marginTop = "0px";
document.getElementById("MI3").style.height = "30px";
document.getElementById("MI3").style.marginTop = "0px";
document.getElementById("MI4").style.height = "30px";
document.getElementById("MI4").style.marginTop = "0px";
document.getElementById("MI5").style.height = "30px";
document.getElementById("MI5").style.marginTop = "0px";
tmpObjHeight = 31;
tmpObjTop = 0;
counter = 1;
state = 1;
clearInterval(menueSlide);
// slide effect
menueSlide = setInterval(function() { slideMenue(tmpObj); }, 4);
}
// slide effect - mouseover
function slideMenue(tmp) {
document.getElementById(tmp).style.height = tmpObjHeight + "px";
document.getElementById(tmp).style.marginTop = tmpObjTop + "px";
tmpObjHeight = tmpObjHeight+2;
tmpObjTop = tmpObjTop-1;
counter++;
if(counter == 129) {
clearInterval(menueSlide);
}
}
// mouseout-Event
function dropup(closeItem) {
var i = 0;
var chCount = document.getElementById(closeItem).childNodes.length;
while(i != chCount) {
if(event.target == $('#' + closeItem).children().eq(i).attr('id')) {
alert("true"); // tritt niemals ein
return;
}
i++;
}
// standart wiederherstellen
state = 0;
document.getElementById(closeItem).style.height = "30px";
document.getElementById(closeItem).style.marginTop = "0px";
}
Alles anzeigen
Das ist eigentlich alles.
Klassenbibliothek von jQuery ist ebenfalls eingebunden (Version 1.7)..
Meine Güte das ist das Grundgerüst und ich stürz schon total ab xD
Also das ganze sieht bei mir jetzt so aus:
function dropup(closeItem) {var i = 0;
var chCount = document.getElementById(closeItem).childNodes.length;
while(i != chCount) {
if(event.target == $('#' + closeItem).children().eq(i).attr('id')) {
alert("true"); // trifft nie ein!
return;
}
i++;
}
state = 0;
document.getElementById(closeItem).style.height = "30px";
document.getElementById(closeItem).style.marginTop = "0px";
}
Alles anzeigen
Habe es auch schon versucht mit $("input").onmouseover(function(event) { return; }); aber das funzt auch nicht.
Das Problem ist bei mir nun, dass sobald ich einmal etwas gehovert habe nichts mehr geht.
Neuladen geht nicht mehr über F5 oder STRG+F5, irgendetwas anderes hovern auch nicht, die Seite ist einfach tod und die Konsole bleibt leer