Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

1 Zum Seitenanfang

Dienstag, 9. August 2011, 15:30

Autocomplete Frage

HTML

  Spoiler Spoiler


Quellcode

1
2
3
<input type="text" id="article" />
<select id="unit"></select>
<input type="text" id="unit_price" />



Jquery

  Spoiler Spoiler


Javascript-Quelltext

1
2
3
4
5
6
$("#article").autocomplete("inc/autocomplete.php", {
		width: 150,
		matchContains: true,
		selectFirst: false,
                autoFill: true
	});



autocomplete.php

  Spoiler Spoiler


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
<?php
include ('mysql.php');
$q strtolower($_GET["q"]);
if (!$q) return;

$sql "SELECT name FROM goods WHERE name LIKE '%$q%'";
$rsd mysql_query($sql);
while($rs mysql_fetch_array($rsd)) {
    $cname $rs['name'];
    echo "$cname\n";
}
?>



Zurzeit wird das autocomplete nur für das Feld Artikel (id=article) angezeigt. Nun möchte ich es so machen, dass wenn ich einen Artikel eingebe gleichzeitig auch die Anzahal (id=unit) und der Preis (id=unit_price) vorgeschlagen wird. Wie könnte ich das am besten machen?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

2 Zum Seitenanfang

Dienstag, 9. August 2011, 15:34

dann musst du deine autocomplete.php ändern dass du je nach action was anderes ausgibst, und bei der jquery autocomplete funktion müsstest du eine action an die autocomplete.php übergeben
Mein kleines Projekt
-Cruel Online-
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

3 Zum Seitenanfang

Mittwoch, 10. August 2011, 14:53

Mhhh das Script von Autocomplete ist doch etwas zu komplex für mich... finde die Stelle nicht wo ich die action einsetzen muss

http://bassistance.de/jquery-plugins/jqu…n-autocomplete/

von hier hab ich den Code

Gibt es nicht noch eine andere Möglichkeit ohne das Script zu manipulieren?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Josephine« (10. August 2011, 14:53)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

4 Zum Seitenanfang

Mittwoch, 10. August 2011, 15:12

das ausprobiert?

Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$("#article").autocomplete("inc/autocomplete.php?action=article", {
		width: 150,
		matchContains: true,
		selectFirst: false,
                autoFill: true
	});
$("#wasanderes").autocomplete("inc/autocomplete.php?action=wasanderes", {
		width: 150,
		matchContains: true,
		selectFirst: false,
                autoFill: true
	});
$("#foo").autocomplete("inc/autocomplete.php?action=foo", {
		width: 150,
		matchContains: true,
		selectFirst: false,
                autoFill: true
	});


und dann mal im autocomplete.php einen print_r($_GET) machen
Mein kleines Projekt
-Cruel Online-
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

5 Zum Seitenanfang

Mittwoch, 10. August 2011, 22:15



Wenn ich das so mit der Action mache, dann schlägt er mir das ja nur vor wenn ich in das Feld klicke bzw. anfange etwas darin zu schreiben, ich wollte aber das wenn ich zb. wie im Screnn Milch eingegebn habe er mir automatisch die beiden anderne Felder füllt. Zum Beispiel Milch ist in der Datenbank mit 1,2,4,5,7 drin mit den Preisen 0,55 1,22 3,22 usw. und mir dann jeweils das erste vorschlägt als dropdown.
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

6 Zum Seitenanfang

Mittwoch, 10. August 2011, 22:22

warum nimmst du denn nen altes plugin wenn auf der Seite sogar steht das es veraltet ist und nicht mehr weiterentwickelt wird ...

ich würde mit überlegen auf jqueryUI umzusatteln guck dir zb mal die demo hier an das in etwa sowas was du suchst http://jqueryui.com/demos/autocomplete/#custom-data

-LA
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

7 Zum Seitenanfang

Donnerstag, 25. August 2011, 19:43

Ich hab jetzt mal das autocomplete von jqery ui eingebaut, aber irgendwie hab ich noch was falsch gemacht, denn er zeigt mir generell immer alle Einträge aus der Datenbanspalte an. Normerweise sollte er doch nur die Anzeigen, die bis zur derzeitigen Eingabe in Frage kommen könnten.

Mein JS Code:

Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//attach autocomplete  
        $("#article").autocomplete({  
            
            minLength: 3,
  
            //define callback to format results  
            source: function(req, add){  
  
                //pass request to server  
                $.getJSON("inc/ajaxload/article.php?callback=?", req, function(data) {  
  
                    //create array for response objects  
                    var suggestions = [];  
  
                    //process response  
                    $.each(data, function(i, val){  
                    suggestions.push(val.name);  
                });  
  
                //pass array to callback  
                add(suggestions);  
            });
            }
        });
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

8 Zum Seitenanfang

Donnerstag, 25. August 2011, 20:33

dafür ist deine php dabei zuständig das sie nur das zurück gibt was auch gefragt ist.
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

9 Zum Seitenanfang

Freitag, 26. August 2011, 14:07

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
// Ich habs jetzt so 
$query mysql_query("SELECT * FROM goods WHERE name REGEXP '^$param'"); 

// und so 
$query mysql_query("SELECT name FROM goods WHERE name LIKE '^$param'");  

// und so 
$query mysql_query("SELECT name FROM goods WHERE name REGEXP '^$param'"); 

// probiert. Es gibt nach Eingabe die komplette Spalte namen aus.


Vollständigkeithalber die ganz php Datei:

  Spoiler Spoiler


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include ('../mysql.php');

    //query the database  
    $query mysql_query("SELECT * FROM goods WHERE name REGEXP '^$param'");  
  
    //build array of results  
    for ($x 0$numrows mysql_num_rows($query); $x $numrows$x++) {  
        $row mysql_fetch_assoc($query);  
  
        $friends[$x] = array("name" => $row["name"]);  
    }  
  
    //echo JSON to page  
    $response $_GET["callback"] . "(" json_encode($friends) . ")";  
    echo $response;  

?>

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

10 Zum Seitenanfang

Freitag, 26. August 2011, 16:36

wo kommt $param denn her das wird doch nen $_GET["param"] sein oder hast du eingestellt das alle post/get vars in normale variablen namen umgewandelt werden?

wobei ich dachte der nimmt als default wert `term`hast denn mal ausgegeben was da überhaupt als query gebaut wird?

-LA

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »lorenz« (26. August 2011, 16:36)

 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

11 Zum Seitenanfang

Dienstag, 30. August 2011, 16:14

Ja du hattest Recht es hat das

PHP-Quelltext

1
param $_GET['term'];

gefehlt. Jetzt gehts. Nun möchte ich aber das wenn ich den Artikel eingebe er auch gleichzeitig nach der Stückzahl und dem Preis sucht und wenn er was gefunden hat dies auch in den input Felder anzeigt. Wie könnte man das machen?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

12 Zum Seitenanfang

Dienstag, 30. August 2011, 17:04

ich kenne ja deine Db-Struktur ja nicht. Aber ich denke mal du wirst halt Tabellen joinen, dann kannst das Ergebnis doch einfach in deinem JSONP (warum auch immer du kein JSON nutzt wenn es nur auf deinem server läuft ;)?) Array zurück geben. Dann musst halt nur bei einem select die zusätzlichen Array-Felder nehmen und den Reset des Forms ausfüllen.


hier wird doch im Prinzip sowas gezeigt
http://jqueryui.com/demos/autocomplete/#custom-data

-LA
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

13 Zum Seitenanfang

Dienstag, 30. August 2011, 20:19

Ich bin jetzt soweit gekommen das ich die Daten in das Array geschrieben hab und das ausgeben klappt auch, nur wie ich die Menge und den Preis jetzt noch in die davür vorgesehenden input Felder bekomme, so das jeweils das erste auch drin steht und der Rest so aufgeklappt ist wie bei Artikel weiss ich noch nicht. Der Link von dir hat mir net arg weitergeholfen, ich habs schon verstanden, aber nicht wie ich das jetzt mit meinem code kombinieren kann.

Das zum Beispiel jetzt hier steht wenn ich Butter eingeben soll da stehen Butter dann im nächsten Feld die 1 und im nächsten die 1.39.



Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//attach autocomplete  
        $("#article").autocomplete({  
            
            minLength: 0,
  
            //define callback to format results  
            source: function(req, add){  
  
                //pass request to server  
                $.getJSON("inc/ajaxload/article.php?callback=?", req, function(data) {  
  
                    //create array for response objects  
                    var suggestions = [];  
  
                    //process response  
                    $.each(data, function(i, val){  
                    suggestions.push(val.article);
                    suggestions.push(val.unit);
                    suggestions.push(val.price);
                });  
  
                //pass array to callback  
                add(suggestions);  
            });
            }
        });


PS: Ist das JSONP dachte das wär nur JSON
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Josephine« (30. August 2011, 20:19)

 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

14 Zum Seitenanfang

Dienstag, 30. August 2011, 21:33

du willst das die anderen Felder auch aufklappen oder nur das wenn du ein item auswählst dann der passende Wert drin steht?
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

15 Zum Seitenanfang

Dienstag, 30. August 2011, 21:54

Das die anderen Felder auch aufklappen. Beispiel:


In der Datenbank gibt es die Milch mit verschieden Stückzahlen und Preisen.
Wenn ich jetzt zum Beispiel Mil anfange zu schreiben soll es mir den rest aufüllen:

Artikel Menge Preis
[ Mil.. ] [ 1 ] [ 1.99 ] <-- Das sind die Inputfelder
------------------------------------------------------
[ Milch ] [ 1 ] [ 1.99 ]
[ Milch ] [ 5 ] [ 1.43 ]
[ Milch ] [ 7 ] [ 1.34 ]
[ Milch ] [ 3 ] [ 1.56 ] <-- Das soll alles ausgeklappt werden
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

16 Zum Seitenanfang

Dienstag, 30. August 2011, 22:32

da gibt es mehrer Sachen die du dich vorher fragen solltest wenn du das so Aufziehen willst.

- macht es wirklich sinn alle 3 einzeln aufpoppen zu lassen? bzw soll man die anderen auch auswählen können und bei ihnen rauf klicken können?
- kann man auch andere werte Eintragen als vorgegeben werden?
- erlauben die anderen auch die gleiche Funktion also wenn man zb bei Menge 1 tippt kommt dann bei Artikel auch verschiedenes ?

die Fragen solltest dir erst mal beantworten das kann doch recht komplex und Fehler anfällig werden ;)

ansonsten ist son system theoretisch nicht so schwer du musst halt durch das Feld, in dem Fall jetzt Artikel, die Daten vom Server abfragen und dann das Array in source auf die anderen Felder aufteilen und sie dann Aufklappen zb mit

Javascript-Quelltext

1
$menge.autocomplete( "search", "" );


-LA
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

17 Zum Seitenanfang

Dienstag, 30. August 2011, 22:45

Vielleicht gebe ich dir einfach mal so ein Beispiel. Also ich will damit meine Kassenzettel verwalten und da ich fast immer oder oft das selbe Zeugs kaufe will ich das nicht immer und immer wieder eintippen müssen. Also hab ich mir gedacht, wenn ich das Wort Milch eintippe soll er mir vorschlagen zu welchem Preis und welcher Menge ich es schonmal eingetragen habe. Das ich dann wählen kann was zutrifft. Wenn es nicht zutrifft dann soll man einfach in die Felder den neuen Wert reinschreiben. Das ganz soll also nur auf Artikel anspringen. Wenn ich jetzt in Menge oder Preis was reinschreibe soll er mir nichts anzeigen oder ändern. Ich hoffe du hast jetzt den Durchblick ;)
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

18 Zum Seitenanfang

Dienstag, 30. August 2011, 22:51

Dann würde ich das denke ich ein wenig anders lösen. Ich vermute mal du kannst bei Artikel auch Sachen reinschreiben die noch nicht in deiner DB drin stecken.

Was spricht dann dagegen das du erst den Artikel ausfüllst und dann wenn du etwas aus der Liste ausgewählt hast oder ein Artikel rein geschrieben hast und dann "blurst" also das Feld verlässt zb in dem du tabs oder in das Feld Menge klickst dann per JS nachfragst ob der Artikel schon drin ist in der DB und dem entsprechend das autocomplete populierst und das gleiche dann bei Preis?

-LA
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

19 Zum Seitenanfang

Dienstag, 30. August 2011, 23:04

Jaa das ist noch Besser :) Stimmt genauso mach ich das :) Du bist mein Held hab ja ganz vergessen das das JS auch kann. Mach was wenn man das feld verlässt. Mal sehn ob ich das hinbekomme ich versuch mal. ...mhhh nur wie bekomme ich die Daten von hier:

Javascript-Quelltext

1
2
3
4
5
6
//process response  
                    $.each(data, function(i, val){  
                    suggestions.push(val.article);
                    suggestions.push(val.unit);
                    suggestions.push(val.price);
                });


in die einzelnen Felder?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

20 Zum Seitenanfang

Dienstag, 30. August 2011, 23:13

ich würde denke ich das json array als per jquery.data in dem ersten Feld speichern und dann von den anderen Feldern in dem autocomplete source darauf zugreifen