Avatar billede michaeltryl Seniormester
12. februar 2013 - 15:41 Der er 12 kommentarer og
1 løsning

Ajax script problem

Jeg har dette script som slår op i databasen når en bruger skriver noget i et tekst felt og når der så klikkes på et af forslagene hopper det op i tekst feltet.
Det virker perfekt, men jeg ønsker så at tilføje følgende.

Når der er valgt en ting fra databasen skal der under tekstfeltet stå "system prisen for dette er (prisen hentes fra databasen)
har prøvet forskellige løsninger uden held - så håber der er en her som kan hjælpe.

        // Is there a posted query string?
        if(isset($_POST['queryString'])) {
            $queryString = mysql_real_escape_string($_POST['queryString']);
            $queryString = ucfirst($queryString);
            $queryString = ucfirst($queryString);
            // Is the string length greater than 0?
           
            if(strlen($queryString) >0) {
               
                $query = mysql_query("SELECT vare FROM vare WHERE vare LIKE '$queryString%' LIMIT 100");
                $vare_number = mysql_num_rows($query);

                if($vare_number > 0) {
                    // While there are results loop through them - fetching an Object (i like PHP5 btw!).
                    while($a = mysql_fetch_array($query))
                        {
                        // Format the results, im using <li> for the list, you can change it.
                        // The onClick function fills the textbox with the result.

                            $vare = $a[vare];
                           

                        // YOU MUST CHANGE: $result->value to $result->your_colum
                        echo '<li onClick="fill(\''.$vare.'\');">'.$vare.'</li>';
                    }
                } else {
                    echo "$queryString <br>kan ikke findes. Fortsæt for at tilføje den selv";

                }
            }
            else {
                // Dont do anything.
            } // There is a queryString.
        } else {
            echo 'There should be no direct access to this script!';
        }
12. februar 2013 - 16:12 #1
Du får udskrevet varen i en <li>.  Vil du så nedenunder have endnu en <li> hvor der står 'System prisen for dette er:' plus prisen?

I så fald må det handle om i din query sammen med varen at søge efter prisen (som jeg forestiller mig står i en kolonne 'price') og derefter udskrive denne.  I følgende ikke-testede kode forslag har jeg udeladt kommentarerne:

.....
$query = mysql_query("SELECT vare, price FROM vare WHERE vare LIKE '$queryString%' LIMIT 100");
$vare_number = mysql_num_rows($query);

if($vare_number > 0) {
while($a = mysql_fetch_array($query))
{
  $vare = $a[vare];
  $price = $a['price'];
                         
  echo '<li onClick="fill(\''.$vare.'\');">'.$vare.'</li>';
  echo '<br>';
  echo '<li>System prisen for dette er:  '.$price.'</li>';
}
Avatar billede michaeltryl Seniormester
12. februar 2013 - 17:38 #2
ikke helt.
f.eks. skriver brugeren i tekst feltet
"app"
så kommer forslagene
- appelsin
- appelsin saft

klikkes der så på f.eks appelsin saft skal system prisen for denne skrives under tekst feltet
12. februar 2013 - 18:10 #3
Den kender jeg ikke.  Jeg må stå af.  Jeg håber du får løsningsforslag fra anden side.
Avatar billede repox Seniormester
12. februar 2013 - 18:46 #4
Hvad hedder dit prisfelt i din vare tabel?
Avatar billede olebole Juniormester
12. februar 2013 - 19:03 #5
<ole>

"Når der er valgt en ting fra databasen skal der under tekstfeltet stå "system prisen for dette er (prisen hentes fra databasen)"

Hvilket felt? Hvad er det, du efterlyser?

/mvh
</bole>
Avatar billede olebole Juniormester
12. februar 2013 - 19:05 #6
PS: Din databasekode har kun yderst begrænset levetid. MySQL-API'et er deprecated i PHP og forsvinder i en af de næste versioner. I dag bruger man prepared statements - enten under PDO eller MySQLI
Avatar billede michaeltryl Seniormester
13. februar 2013 - 08:16 #7
jeg har dette tekst felt
echo "<input type=\"text\" autocomplete=\"off\" name=\"vare\" size=\"50\" value=\"$varen\" id=\"inputString\" onkeyup=\"lookup(this.value);\" onblur=\"fill();\" />";

Skriver brugeren noget i det, bliver det søgt i tabel feltet vare og der kommer en <li></li> liste under feltet f.eks
- appelsin
- appelsin saft

Klikkes der så på "appelsin saft" skal prisen fra tabel feltet "pris" hentes og skrives under tekstfeltet.

tak for infoen om MySQLI - det vil jeg straks kigge på :-)
Avatar billede olebole Juniormester
13. februar 2013 - 16:05 #8
Jeg er stadig ikke sikker på, hvad det er, du spørger om  =)
Avatar billede michaeltryl Seniormester
13. februar 2013 - 16:37 #9
altså når der er valgt en vare - f.eks. appelsin saft
Så skal prisen på appelsin saft hentes fra databasen og udskrives under tekst feltet.
Avatar billede olebole Juniormester
13. februar 2013 - 17:07 #10
- ja, men hvad er det, du ikke selv kan løse?
Avatar billede michaeltryl Seniormester
13. februar 2013 - 17:18 #11
Hvordan jeg får prisen udskrevet uden at siden skal refreshes.
Jeg har fået den til løbende at søge efter varens når der skrives i tekstfeltet, men hvordan jeg får prisen udskrevet kan jeg ikke regne ud
Avatar billede olebole Juniormester
13. februar 2013 - 17:25 #12
Du foretager et Ajax kald til serveren og skriver responsen ind i feltet
Avatar billede michaeltryl Seniormester
14. februar 2013 - 11:36 #13
det lykkes at finde et script der kunne klare opgaven
http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql/

så jeg lukke her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester