2014-11-28 5 views
0

나는 PHP 프로젝트를 진행 중이다. 사전을 만드는 데 사용하는 연관 배열이 있습니다. 배열의 일부 키가 들어있는 텍스트가있는 문자열도 있습니다. 내가하고 싶은 일은 첫 번째 텍스트와 동일한 텍스트로 다른 문자열을 생성하는 것이지만 핵심 단어는 배열의 값으로 대체됩니다.AJAX에서 PHP로 변수 전달하기

내가 사용자가 문자열을 비교하는 배열의 각 비어있는 값에 내용을 기록하기를 원합니다. 나는 그것을해야 팝업을 던져. 변수의 Javascript 변수 내용을 가져 와서 PHP 배열에 넣어야합니다. 나는 AJAX를 사용하려고 노력했지만 큰일입니다. 잘 지내고 있는지 모르겠습니다. 여기

내 코드 (작동하지 않는) :

<?php 
    $array["[[red]]"] = "Once upon a time"; 
    $array["[[blue]]"] = "fox"; 
    $array["[[black]]"] = "cat"; 
    $array["[[orange]]"] = ""; 

    $string = "<br /> It has been a long time since [[red]] " 
    . "[[blue]]. My name is [[blue]] " 
    . "and my surname is [[black]]. <br />" 
    . "My age is[[orange]]. <br /> <br />."; 

    echo "First string': ". $string; 
?> 
<br /> <br /> 

<?php 
    foreach ($array as $key => $value) 
    { 
    if ((strstr($string, $key) == true) && ($value == "")) 
    { 
?> 
     <script> 
     name = prompt("Insert a correct value: "); 
     while ((name== "") || !(isNaN(name)) || name== null) 
     { 
      window.alert("Wrong insert!"); 
      name= prompt("Insert a correct value: "); 
     } 

     var xmlhttp=new XMLHttpRequest(); 

     xmlhttp.open("GET","index.php?name="+name,true); 
     xmlhttp.send(); 
     </script> 

<?php 
     $q = $_REQUEST["name"]; 
     $value = $q; 
     echo "the value is ".$q; 
    } 
    //echo $key." => ".$value; 
    echo "<br/> <br/>"; 
    } 
?> 
+0

문제가 무엇인지 자세한 내용에 적어주세요. 또한 PHP 오류 및 JavaScript 오류를 지정하십시오. 즉, PHP에서 오류보고를 활성화하고 브라우저의 개발자 도구 콘솔 탭을 검사합니다. – GolezTrol

답변

1

키 단어와 함께 문자열을 생성하려면이 배열의 값으로 대체되고,이 같은 sprintf 기능을 사용할 수 있습니다 :

$array["red"] = "Once upon a time"; 
$array["blue"] = "fox"; 
$array["black"] = "cat"; 
$array["orange"] = ""; 

$sentence = "<br />It has been a long time since %s %s. My name is %s and my surname is %s.<br /> My age is %s. <br /><br />."; 
echo "First string" . sprintf($sentence, $array["red"], $array["blue"], $array["blue"], $array["black"], $array["orange"]); 

배열의 빈 항목을 채우기 위해 사용자의 입력을 캡처하려는 질문의 두 번째 부분은 ... 글쎄 nome 변수를 먼저 name으로 수정해야합니다.

그런 다음 키와 AJAX 호출에서 사용자 제공 값을 모두 제출해야 연관 배열에서 업데이트 할 항목을 알 수 있습니다. $array이 인스턴스화되기 전에 쿼리 매개 변수를 쉽게 캡처 할 수 있습니다. 또한

, strstr needlehaystack가 존재하지 않더라도true을한다. doc을 살펴보십시오.

그래서 아마 뭔가 같은 :

<?php 
    // you may want to modify the handling of the query parameters to suit your needs 
    if(isset($_REQUEST['key']) && isset($_REQUEST['name']) 
    $array[$_REQUEST['key']] = $_REQUEST['name']; 

    $array["red"] = "Once upon a time"; 
    $array["blue"] = "fox"; 
    $array["black"] = "cat"; 
    $array["orange"] = ""; 

    foreach ($array as $key => $value) { 
    if (strstr($string, $key) && $value.empty()) { 
?> 
    <script> 
     name = prompt("Insert a correct value: "); 
     while ((name== "") || !(isNaN(name)) || name== null) { 
     window.alert("Wrong insert!"); 
     name= prompt("Insert a correct value: "); 
     } 

     var xmlhttp=new XMLHttpRequest(); 
     xmlhttp.open("GET","index.php?name=" + name + "&key=" + <?php echo $key?>,true); 
     xmlhttp.send(); 
    </script> 

<?php 
    } 
    } 

    /* echo etc.. */ 
?> 
+0

죄송합니다. 실수했습니다. 변수는 "nome"이 아닌 "name"입니다. 괜찮 았기 때문에이 부분을 변경하지 않을 것이라고 생각합니다. 프로젝트가 훨씬 복잡하기 때문에이 방법으로해야합니다. 예제를 게시했습니다. 문제는 두 번째 부분입니다. "name"변수를 가져 와서 PHP에 전달해야합니다 (페이지를 새로 고치지 않고). 그런 다음 이전에 비어 있던 배열의 값에 넣습니다. – user3563844

+0

해결 방법에 대한 답을 얻기 위해 답을 업데이트했습니다. 귀하의 필요에 따라 작동한다는 것을 보장 할 수는 없습니다. 문제에 맞게 (특히 쿼리 매개 변수)를 수정해야 할 수도 있습니다. –

+0

당신은 정말로 $ string = "
[[red]] 이후 오랜 시간이 걸렸습니다."'[[red]]'를'$ array [ "[[red]]" ]'? –