2015-09-01 4 views
-3

Я изучаю HTML JS CSS и PHP, и у меня есть большая проблема.Преобразование переменной JavaScript в переменную PHP

Переменная $input в getPosForLieferschein() должна быть пользователем, но я не нашел способа конвертировать переменные JS в PHP. Пользователь должен написать номер контракта в поле ввода, а позиции контракта - getPosForLieferschein() - отображаются в таблице ниже. Страница должна не быть перезагружена на всякий случай, если не работает другой способ. Я знаю, что код ужасен!

Руководитель:

<?php include 'connection_manager.php'; $tags = getLieferscheine();?> 
<script type="text/javascript"> 

var availableTags = "<?php echo $tags;?>" 

$(function() { 
    var values = availableTags.split(","); 
    $('.select').autocomplete({ 
     source: values 
    }); 
}); 

function generate() { 
    var eingabe = document.getElementById('input').value; 
    var position = "<?php $positionen = getPosForLieferschein($input); echo $positionen; ?>"; 
    var arr = position.split(','), contract = arr[0], pos = arr[1], article = arr[2], name = arr[3], amount = arr[4], unit = arr[5]; 
    var table = document.getElementById("table1body"); 
    var row = table.insertRow(0); 
    var cell1 = row.insertCell(0); 
    var cell2 = row.insertCell(1); 
    var cell3 = row.insertCell(2); 
    var cell4 = row.insertCell(2); 
    var cell5 = row.insertCell(2); 
    var cell6 = row.insertCell(2); 
    var i = 60; 
    var a = document.getElementById("input"); 
    if ((a.value == eingabe)) { 
     while (i > 0) { 
      cell1.innerHTML = contract; 
      cell2.innerHTML = pos; 
      cell3.innerHTML = unit; 
      cell4.innerHTML = amount; 
      cell5.innerHTML = name; 
      cell6.innerHTML = article; 
      i = i - 60; 
     } 
    } 
    else { 
     swal({ 
      title: "Fehler!", 
      text: "Bitte geben Sie eine gültige Auftragsnummer ein!", 
      type: "error", 
      confirmButtonText: "Ok", 
      confirmButtonColor: "#FF0000" 
     }); 
    } 
}; 

$(document).ready(function() { 
    $("#details").click(function() { 
     $("#uebertragen").removeAttr("disabled"); 
     $("#details").attr("disabled", "disabled"); 
    }) 
    $("#uebertragen").click(function() { 
     $("#details").removeAttr("disabled"); 
     $("#uebertragen").attr("disabled", "disabled"); 
    }) 
}) 

$(document).ready(function() { 
    $("#uebertragen").click(function() { 
     $("td").remove() 
    }) 
}) 
</script> 

тела:

<body> 
<center> 
<img style="position:relative;left:25px;" src="quehenberger.jpg" height="50px" width="240px" alt="quehenberger logo" align="left"/> 
<img style="position:relative;right:25px;" src="bilton.png" height="50px" width="300px" alt="bilton logo" align="right"/> 
<h1><b>QLog Eingabe</b></h1> 
<hr/> 

<div class="container"> 
    <div class="row"> 
      <form action="" method="get"> 
      <input id="input" type="text" style="width:50%;position:relative;left:14em;" value="" class="select form-control col-xs-1" Placeholder="Auftragsnummer"/> 
      <button style="position:relative;left:18em;" id="details" class="col-xs-1 btn btn-success" onclick="generate();">Pr&uuml;fen</button> 
      </form> 
    </div> 
    </p> 
    <button style="width:100px;position:relative;left:58.65em;" id="uebertragen" disabled="disabled" class="col-xs-1 btn btn-danger">&Uuml;bertragen</button> 
</div> 
<table class="table"> 
     <thead> 
      <tr> 
      <th>Auftragsnummer</th> 
      <th>Positions Nummer</th> 
      <th>Artikel Nummer</th> 
      <th>Artikel Bezeichnung</th> 
      <th>Artikel Menge</th> 
      <th>Einheit</th> 
      </tr> 
     </thead> 
     <tbody id="table1body"> 
     </tbody> 
</table> 
</center> 
</body> 
</html> 
+0

Вы (или кто-либо еще в этом отношении) никогда не получит PHP для запуска внутри JavaScript. PHP выполняется на SERVER, а затем выводит HTML в BROWSER, где Javascript берет верх. – MaggsWeb

+0

Да, я знаю, что работать с php и js сложно, но у меня нет другой возможности сделать это. – StaXter

+1

Не сложно работать с ними обоими вместе, но вам нужно понять, что так, как вы их закодировали, никогда не будет когда-либо работаю. – MaggsWeb

ответ

0

Это окончательный код! Спасибо за помощь, ребята! : D`

<script type="text/javascript"> 

    var availableTags = "<?php echo $tags;?>" 
    var currentTag = false; 

    $(function(){ 
     var values = availableTags.split(","); 
     $('.select').autocomplete({ 
      source: values, 
      select: function(event, ui) { 
       //$('#input').val() 
       //console.log(ui.item.value); 
       getAuftrag(ui.item.value); 
      } 
     }); 
    }); 

    function sendAuftrag() { 
     if (currentTag !== false) { 
      $.ajax({ 
      method: "GET", 
      url: "save.php", 
      data: { 
       q : currentTag 
       }, 
      dataType: "html", 
      success: function(data) { 
       $("#tableBody").html(""); 
       $("#uebertragen").attr("disabled", "disabled"); 

       swal({title: "Erfolg!", 
        text: "Auftragsnummer " + currentTag + " erfolgreich übermittelt!", 
        type: "success", 
        confirmButtonText: "Ok", 
        confirmButtonColor: "#FF0000" 
        }); 

       currentTag = false; 
       } 
      }); 
     } 
    } 

    function getAuftrag(str) { 
     if (str == "") { 
      document.getElementById("tableBody").innerHTML = ""; 
      currentTag = false; 
      return; 
     } 

     var values = availableTags.split(","); 

     if (values.indexOf(str) === -1) { 
      currentTag = false; 
      swal({title: "Fehler!", 
       text: "Bitte geben Sie eine gültige Auftragsnummer ein!", 
       type: "error", 
       confirmButtonText: "Ok", 
       confirmButtonColor: "#FF0000" 
      }); 
     } else { 
      $.ajax({ 
       method: "GET", 
       url: "ajax.php", 
       data: { 
        q : str 
        }, 
       dataType: "html", 
       beforeSend: function(jqxhr) { 
        currentTag = str; 
        }, 
       success: function(data) { 
        $("#tableBody").html(data); 

        $("#uebertragen").removeAttr("disabled"); 
        // console.log(data); 
        } 
      }); 
     } 
    } 



    $(document).ready(function(){ 
     $("#uebertragen").click(function(){ 
      $("#uebertragen").attr("disabled", "disabled"); 
     }) 
}) 
</script>` 

HTML:

`<body> 
<center> 
<img style="position:relative;left:25px;" src="quehenberger.jpg" height="50px" width="240px" alt="quehenberger logo" align="left"/> 
<img style="position:relative;right:25px;" src="bilton.png" height="50px" width="300px" alt="bilton logo" align="right"/> 
<h1><b>QLog Eingabe</b></h1> 
<hr/> 

<div class="container"> 
    <div class="row"> 
      <input id="input" style="width:50%;position:relative;left:14em;" class="select form-control col-xs-1" Placeholder="Auftragsnummer"/> 

      <!-- <button style="position:relative;left:18em;" id="details" class="col-xs-1 btn btn-success" >Pr&uuml;fen</button> --> 
      <button style="width:100px;position:relative;left:18em;" id="uebertragen" disabled="disabled" class="col-xs-1 btn btn-danger">&Uuml;bertragen</button> 
    </div> 
</div> 

<div id="tableBody"><b></b></div> 

<div style="background-color: #E6E6E6;height:40px;width:100%;" data-role="footer" data-tap-toggle="false" class="ics-footer"> 
    <p>Copyright IcoSense GmbH. All rights reserved.</p> 
</div> 
</center> 
</body> 
</html>` 
0

Вы не можете просто преобразовать переменную. Это невозможно. Существуют и другие варианты внесения изменений на страницу без перезагрузки:

  1. Вы можете сделать запрос ajax каждый раз, когда поле ввода пользователя изменилось. Сделайте все вычисления, которые вам нужно выполнить в контроллере (на стороне сервера), и просто верните результат и покажите его на той же странице.
  2. Если вы использовали бы схему Yii2, был бы другой вариант. Но это потребовало бы внесения некоторых изменений в структуру ваших функций. В Yii2 вы можете написать JS в файле вида и использовать значения переменных var. Существует некоторая информация об этой функции here.

Как я понимаю, вы не используете какой-либо фреймворк, поэтому я бы предложил использовать ajax-запросы и передать вычисленные значения на страницу (вариант 1).

+0

Спасибо за помощь! Я попробую! Я постоянно говорю вам, если это сработает – StaXter

Смежные вопросы