ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
698
698
EMPFEHLEN
-
07.02.09 12:44 #1
- Registriert seit
- Mar 2005
- Beiträge
- 213
Hallo zusammen
Auf der Suche nach einem Lösungsansatz wäre ich froh um eure Hilfe.
Ich habe 3 Elemente: search, box1, box2 (siehe Grafik anbei). Das erste Element (id=“search“) ist ein Input-Feld welche über einen onkeyup=““ den Suchbegriff an eine Datenbank-Abfrage leitet. Das Ergebnis dieser Abfrage wird im Div-Container (id=“box1“) dargestellt dies funktioniert soweit ohne Probleme.
Nun liefert mir diese Abfrage auch gleich die Anzahl der gefundenen Datensätze. Diesen Wert möchte ich in id=“box2“ anzeigen.
Wie ist es möglich aus über AJAX zwei Div-Container anzusprechen bzw. gibt es die Möglichkeit einen erhaltenen Wert aus box1 an die box2 zu übergeben?
-
07.02.09 13:01 #2
Schreibst Du die Ajax-Rückgabe gleich in die Divbox 1 oder hast Du einen Zwischenschritt ? Wenn Du Dir ein Array zurückgeben lässt ( Anzahl, Inhalt ), dann sollte es kein Problem sein, Inhalt in divbox1 und Anzahl in divbox2 auszugeben.
Sorry, ist ein bissel Pseudocode, aber zeigt den Weg auf. Ich mache mir selten die Mühe, schnell gesetzten Code auf Richtigkeit zu überprüfen..Code :1 2
document.getElementById('divbox1').innerHTML=Ajax[0]; document.getElementById('divbox2').innerHTML=Ajax[1];
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Moin,
du könntest aus der Antwort(wie immer auch diese aussehen mag) die Anzahl "extrahieren".
Wie das genau ginge, und ob es überhaupt geht, hängt halt davon ab, wie die Antwort aussieht.
Elegant wäre dies allerdings nicht unbedingt
Besser wäre es, wenn die Serverantwort in einem sinnvollen Format erfolgt.
Da gäbe es zum Einen einen JSON-codierten String, über diesen könntest du ein Objekt/Array übermitteln, und dieses Bequem verarbeiten.
Auch eine XML-Struktur, welche die benötigten Daten beinhaltet wäre möglich,
JSON halte ich auf deine Beschreibung hin aber für empfehlenswerter.
-
07.02.09 13:33 #4
- Registriert seit
- Mar 2005
- Beiträge
- 213
Ich rufe zuerst die Datei adresse.php auf welche die Datensätze sowie die Anzahl Datensätze auflistet.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
function Search() { searchvalue = document.getElementById('search').value; resObjekt.open('get', 'adresse.php?search=' + searchvalue); resObjekt.onreadystatechange = ShowOutput; resObjekt.send(null); } function ShowOutput() { if(resObjekt.readyState == 4) { document.getElementById(box1).innerHTML = resObjekt.responseText; } }
-
Interessanter wäre es, wenn du postest, womit adresse.php antwortet
-
07.02.09 13:49 #6
Bau Dir einen eindeutigen Unterbrecher in die php, lass Dir dann die Antwortdaten in zwei Teile unterteilen also zB
Ausgabetext der php ( response ):
Somit lässt Du Dir responseText an der Stelle [*] teilen und dann in die Divboxen schreiben.. Du kannst in JS die Position des Trenners per indexof() auslesen und per substring() die Teile extrahieren. Somit musst Du nicht gleich auf JSON oder XML zurückgreifen, was bei der geringen Arraygröße -meiner Ansicht- Overdosed wäre.Code :1
44[*]bla bla das ist der Text und so weiter
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
07.02.09 13:56 #7
- Registriert seit
- Mar 2005
- Beiträge
- 213
Hier das vereinfachte Script...
PHP-Code:<?php
function searchqry($qry,$type,$cols)
{
$searchres = explode(' ', trim($qry));
if(trim($qry) != '')
{
$where = '(';
$p = 1;
foreach($searchres as $value)
{
if($p != 1 && $value != '')
{
$where .= ') AND (';
$p = 1;
}
foreach($col = explode(',',$cols) as $field)
{
if($value != '')
{
if($p == 1)
{
$where .= $field.' LIKE \'%'.$value.'%\'';
$p++;
}
else
{
$where .= ' OR '.$field.' LIKE \'%'.$value.'%\'';
}
}
}
}
$where .= ')';
return ' '.$type.' '.$where;
}
else
{
return '';
}
}
$where = searchqry($_GET['search'],'WHERE','`name`,`vorname`,`adresse`,`plz`,`ort`');
echo '<table>
<tr>
<th>Name</th>
<th>Vorname</th>
<th>Adresse</th>
<th>PLZ</th>
<th>Ort</th>
</tr>';
$res = mysqli_query($coredb,'SELECT SQL_CALC_FOUND_ROWS(`ID`),`name`,`vorname`,`adresse`,`plz`,`ort` FROM `tbl_adresse` '.$where.' ORDER BY `name` ASC');
$count = mysqli_fetch_array(mysqli_query($coredb,'SELECT FOUND_ROWS()'));
while($row = mysqli_fetch_array($res))
{
$name = $row['name'];
$vorname = $row['vorname'];
$adresse = $row['adresse'];
$plz = $row['plz'];
$ort = $row['ort'];
echo '<tr>
<td>'.$name.'</td>
<td>'.$vorname.'</td>
<td>'.$adresse.'</td>
<td>'.$plz.'</td>
<td>'.$ort.'</td>
</tr>';
}
echo '</table>';
$AnzahlDatensaetze = $count[0];
?>
-
07.02.09 14:02 #8
Uninteressant. Nicht der php.code war gefragt, sondern die Antwort, also die Ausgabe des php-Codes. Unterm Strich muss Dein php-code zwei Daten erzeugen und diese per Trenner ausgeben.
unrealzero : Ich meine das durchaus nicht böse, aber Deine Fragestellung bezieht sich nicht auf die 1.Ebene ( Code ), sondern eher auf die Darüberliegende - wie kommuniziert Funktion 1 (JS-Ajax) mit Funktion 2 (php-query). Deswegen also die grobe Richtung : php-code wirft beide Daten unterteilt aus und im JS-Teil müssen aus dem Antworttext beide Daten extrahiert werden. Es gilt eigentlich nur, im php-Teil beide Daten abzufragen, jene mit diesem Trenner zu unterscheiden, damit man im JS-Teil eindeutig auf 2 Werte zugreifen kann.PHP-Code:<?php
/* ----- Anzahlquery */
echo ($anzahl);
/* ------ Trenner */
echo ('[*]');
/* ------- Inhaltquery, also Dein obiger Code */
echo ($inhalt);
?>
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
Ähnliche Themen
-
Aufklapplink für Div's | Mehrere Divs gleichzeitig aufgeklappt ?
Von pseudobrain im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 11.07.08, 11:39 -
Mehrere Tabellenreihen gleichzeitig ansprechen
Von mammuteffect im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 25.08.07, 00:06 -
zu Anker springen gleichzeitig divs einblenden
Von megatom im Forum Javascript & AjaxAntworten: 13Letzter Beitrag: 29.06.07, 21:27 -
Zwei Pics per Link gleichzeitig ansprechen?
Von SixxKiller im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 19.01.07, 22:13 -
MYSQL: Mehrere Datensätze gleichzeitig ansprechen
Von Sandro18 im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 13.09.06, 11:14





Zitieren


Login





