JonasLoerken
New member
Hey,
ich stehe derzeit vor einem, für mich, riesigen Problem, was ich einfach nicht gelöst bekomme.
Ich habe auf meiner Seite eine Suchfuntkion intergiert, welche eine Datenbank-Tabelle durchsucht. Dafür habe ich eine simple HTML-Form in verbindung mit einem PHP Script erstellt, welches auf der gleichen Seiten liegt wie das Formular. Soweit kein Problem. Das PHP Script sorgt dafür, dass die Suchergebnisse in einem unsichtbaren div dargestellt werden. Nun zum Problem: Dieses div soll nach dem erfolgreichen absenden des Formulares angezeigt werde, wie eine art Pop-Up nur eben als div.
Wenn ich das Formular nun standardmäßig absenden, lädt die Seite natürlich neu und das div öffnet sich nicht, da durch das refreshen mein jQuery-Code neu geladen wird bzw. der Abschnitt der für das öffnen des divs zuständig ist nicht geladen wird. Noch einmal zur erklärung: nach dem absenden des Formulares öffnet sich das div für ungefähr 0,5s - 1s bis die Seite neu lädt und das div natürlich wieder "hidden" ist.
Nun habe ich mich ein wenig schlau gemacht und die Lösung erschien Anfangs relativ simpel: Ajax. Nun aber das eigentliche Problem. Die Formular-Absendung mit Ajax an die aktuelle Seite funktioniert. Auch die unetrdrückung des refreshs und das öffnen des divs ist kein Problem. Das eigentliche Problem liegt bei der Darstellung der Suchergebnisse. Dadurch, dass kein refresh vorhanden ist, können die Suchergenisse nicht aus der MySQL-Datenbank an die PHP-echos weitergegeben werden. Bedeutet: Das div öffnet sich zwar, zeigt aber nichts an.
Was löse ich das am besten? Zur veranschaulichung findet ihr unten meinen Quellcode:
ich stehe derzeit vor einem, für mich, riesigen Problem, was ich einfach nicht gelöst bekomme.
Ich habe auf meiner Seite eine Suchfuntkion intergiert, welche eine Datenbank-Tabelle durchsucht. Dafür habe ich eine simple HTML-Form in verbindung mit einem PHP Script erstellt, welches auf der gleichen Seiten liegt wie das Formular. Soweit kein Problem. Das PHP Script sorgt dafür, dass die Suchergebnisse in einem unsichtbaren div dargestellt werden. Nun zum Problem: Dieses div soll nach dem erfolgreichen absenden des Formulares angezeigt werde, wie eine art Pop-Up nur eben als div.
Wenn ich das Formular nun standardmäßig absenden, lädt die Seite natürlich neu und das div öffnet sich nicht, da durch das refreshen mein jQuery-Code neu geladen wird bzw. der Abschnitt der für das öffnen des divs zuständig ist nicht geladen wird. Noch einmal zur erklärung: nach dem absenden des Formulares öffnet sich das div für ungefähr 0,5s - 1s bis die Seite neu lädt und das div natürlich wieder "hidden" ist.
Nun habe ich mich ein wenig schlau gemacht und die Lösung erschien Anfangs relativ simpel: Ajax. Nun aber das eigentliche Problem. Die Formular-Absendung mit Ajax an die aktuelle Seite funktioniert. Auch die unetrdrückung des refreshs und das öffnen des divs ist kein Problem. Das eigentliche Problem liegt bei der Darstellung der Suchergebnisse. Dadurch, dass kein refresh vorhanden ist, können die Suchergenisse nicht aus der MySQL-Datenbank an die PHP-echos weitergegeben werden. Bedeutet: Das div öffnet sich zwar, zeigt aber nichts an.
Was löse ich das am besten? Zur veranschaulichung findet ihr unten meinen Quellcode:
Code:
<form id="suchForm" method="post" action="http://headonline.de/teamsite/index.php?article_id=1">
<input type="text" id="suche" name="suche" placeholder="Suchen"/>
<input type="submit" style="display:none"/>
</form>
Code:
<?php
if ( $_SERVER["REQUEST_METHOD"] == 'POST' ) {
$suche = $_POST['suche'];
if (!empty($suche)) {
$sql = new rex_sql;
$sql->debugsql = 0;
$sql->setQuery("SELECT * FROM rex_projekte WHERE projektname LIKE '%$suche%' OR projektnummer_hw LIKE '%$suche%' OR projektnummer_k LIKE '%$suche%'");
if ($sql->getRows() >= 1) {
for($i = 1; $i <= $sql->getRows(); $i++, $sql->next())
{
$projektname_suche = $sql->getValue("projektname");
$suche_projekt_ausgabe .= '<span>'.$projektname_suche.'</span>'; // Dieses Span wird später noch per echo in dem hidden div ausgegeben
}
}
}
}
?>
Code:
var frm = $('#suchForm');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert('ok');
}
});
});