Avatar billede larsgrau Forsker
25. maj 2020 - 18:53 Der er 1 kommentar og
2 løsninger

data fra php til java

hej jeg har følgende sider. en side hvor bruger skal skrive noget og hvis det findes i databasen skal den skrive det i nogle text felter.

index.php:
<html>
<script src="http://localhost/test3/jquery.min.js"></script>
<script>
    $(document).ready(function(){
       
        $("input").keyup(function(){
            var name = $("input").val();
            $.post("suggestions.php",{
                suggestion: name
            }, function(data, status){
                $("#test").html(data);
            });
        });
    });
</script>
</head>
<body>

<input type="text" name="name">

<p id="test"></p>

suggestions.php:

<?php
   
    include '../conf/dbconfig.php';
   
    $name = $_POST['suggestion'];
   
    $sql = "SELECT * from shiplist WHERE shipname='$name'";
    $result = mysqli_query($db,$sql);
    $queryResults = mysqli_num_rows($result);
   
    if ($queryResults > 0){
        while ($row = mysqli_fetch_array($result)){
           
            $classname = $row['Classname'];
            $shiprole = $row['shiprole'];
            echo $classname;
            echo "<br>";
        }
    }
?>

Det virker ok, den skriver hvad den skal i <p id="test"></p>

men jeg vil gerne have den sætter det ind i en sådan en her:

<input name="testname" id="test"> men det kan jeg ikke få til at virke nogen som har en ide til hvordan man får den til det ?
Avatar billede Slater Ekspert
25. maj 2020 - 19:57 #1
Input understøtter ikke HTML-indhold, så du er også nødt til at ændre
$("#test").html(data);
til
$("#test").val(data);


- Og bare for at nævne det, så er der meget stor forskel på Java og Javascript. Dette er Javascript, ikke Java.
Avatar billede olsensweb.dk Ekspert
27. maj 2020 - 11:45 #2
@larsgrau: er du kommet vidre ??
jeg ville lade suggestions.php retunerer json, det gør det nemmere at arbejde med.
hvad hvis der er flere rækker der opfylder betingelsen ?

jeg ville lave mit html via JS

hvorfor bruger du .keyup og ikke .blur ??
ved .blur henter du først data når du er færdig med at skrive, dvs når du forlader input feltet

du får flerer muligheder ved at bruge "$.ajax" istedet for "$.post"

ref https://api.jquery.com/jquery.post/
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

er den udvidet udgave af:
$.post( "ajax/test.html", function( data ) {
  $( ".result" ).html( data );
});
Avatar billede larsgrau Forsker
27. maj 2020 - 20:05 #3
hej igen

jeg er kommet videre begge forslag virker. men jeg har valgt at bruger følgende metode:

Index.php

<input type="text" name="Name" list="shipname" onchange="boxname()" size="1" id="Combobox2" style="position:absolute;left:118px;top:640px;width:405px;height:20px;z-index:3;" tabindex="4">
<datalist id="shipname">
<?php
$res=mysqli_query($db,"select * from shiplist");
while($row=mysqli_fetch_array($res))
{
?>
<option><?php echo $row["shipname"]; ?></option>
<?php
}
?>
</datalist>


<script>
function boxname(){
    var ajax = new XMLHttpRequest();
    var method = "GET";
    var x = document.getElementById("Combobox2").value;
    var url = "data.php?shipname=" + x;
    var asynchronous = true;
   
    ajax.open(method, url, asynchronous);
   
    ajax.send();
   
    ajax.onreadystatechange = function()
    {
            if (this.readyState == 4 && this.status == 200)
            {
                var data = JSON.parse(this.responseText);
                console.log(data)
               
                var html = "";
               
                for (var a = 0; a < data.length; a++)
                {
                    var skibsnavn = data[a].shipname;
                    var Classnavn = data[a].Classname;
                    var shiprole = data[a].shiprole;
                    var shippnt = data[a].shippnt;
                    var shipcountries = data[a].shipcountries;
           
           
                }
                document.getElementById("classname").value = Classnavn;
                document.getElementById("shiprole").value = shiprole;
                document.getElementById("shippnt").value = shippnt;
                document.getElementById("Country").value = shipcountries;
            }
    }
}
</script>

<input id="classname">
<input id="shiprole">
<input id="shippnt">
<input id="Country">

data.php

$shipname = $_GET['shipname'];

$result = mysqli_query($db,"SELECT * from shiplist WHERE shipname='$shipname'");

$data = array();
while ($row= mysqli_fetch_assoc($result))
{
    $data[] = $row;   
}

echo json_encode($data);

og det virker bare som det skal og køre godt.
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

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