2012-06-04 2 views
-1

1 : 내 데이터베이스가 꽤 엉망이지만, 나는 ACCES가 없다는 것을 알고있다. 나는 그들이 진절머리 나는 것을 알고있다.아약스 용 mysql/php 더블 요청

2 : 내 데이터베이스 내 두 테이블이 있습니다 : http://www.freeimagehosting.net/iu741

3 : 나는 3 개 역학 목록, 처음 2가 확인되어있어,하지만 난에 문제가있어 내 셋째.

4 : 내 폭발은이 필드 (22312,123,2145,1233)에서 잘 수행되고 그 결과를 가져 와서 json_encode에서 JS로 보내고 JS는 내 선택/옵션으로 해당 resylts를 보냅니다. 내 결과는 다음과 같습니다. http://www.freeimagehosting.net/gltie

5 :이 목록을 공신인으로하여 번호를 가치로 보이기를 원합니다. 그러나 호스텔의 이름은 옵션으로 표시합니다 (보이는 것).


내 코드 JS :

$(function(){ 
     $('#destination').change(function(){ 
      $.getJSON('/dev/select2.php', {'destination': $(this).val()}, function(data) { 
       var items = ''; 
       $.each(data, function(key, val) { 
        items += '<option value="' + val + '">' + val + '</option>'; 
       }); 
       $('#hotel').html(items); 
      }); 
     }); 
    }); 

내 코드 PHP :

$requete = "SELECT DISTINCT deHotels FROM sirev_Dests WHERE deDestName = '". $_GET['destination'] ."' ORDER BY deDestName"; 
    $connect = mysql_connect("&&&&&&","&&&&&&","&&&&&&"); 

    mysql_select_db("&&&&&&", $connect); 

    $res = mysql_query($requete) or die(mysql_error()); 

    if ($res) { 
     $row = mysql_fetch_assoc($res); 
     $items = explode(',', $row['deHotels']);   
/* 
    $newrequete = "SELECT hoName FROM sirev_Hotels WHERE hoCode = $items "; 
    $donewrequete = mysql_query($newrequete) or die(mysql_error()); 
*/  
     die(json_encode($items)); 
    } 

그래서 사실, 난 내 JS에서 좋은 결과를 보낼 수있는 어려움을 얻었다. 내가 값과 옵션에서 숫자를 보낼 수 있지만 2 차원 테이블을 구성하는 방법을 알고 그것을 내 JSON 인코딩 보내십시오 ... 나는 순간에 내 두 번째 요청을 넣어.

나를 도와 줄 수 있습니까? 나는 희망을 충분히 분명히 .. 죄송합니다 내 영어에, 메신저 퀘벡 시티.

+0

문제는 데이터베이스를 수정할 수 없으며 수정할 수있는 권한이 없다는 것입니다. 그래서 그 테이블들과 함께 작동시킬 필요가 있습니다. : S – Peter

답변

1
  1. 귀하의 코드가 SQL 인젝션에 취약 할 수 있습니다.prepared statements을 사용해야하며 SQL에 대해 평가되지 않은 매개 변수로 변수를 전달해야합니다. 내가 무슨 말을하고 있는지, 또는 어떻게 고쳐야할지 모르시는 분은 Bobby Tables의 이야기를 읽으십시오.

  2. 더 이상 유지 보수되지 않으며 커뮤니티가 deprecation process으로 시작된 고대 MySQL 확장 코드로 새로운 코드 작성을 중지하십시오. 대신 확장 된 MySQLi 확장 또는 PDO 추상화 계층 중 하나를 사용해야합니다. SQL joins에 대해 알아보십시오.

  3. 당신 정말 스키마를 변경하기 위해 노력해야하는 것은이하는 중 :

    • (호텔은 더 이상보다 대상과 연결된 경우) 호텔 테이블에서 대상 외래 키; 또는

      ALTER TABLE sirev_Hotels 
      ADD COLUMN hoDestination INT, 
      ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode) 
      
    • (호텔은 여러 대상과 연관 될 수있는 경우) 대상 - 호텔 관계의 테이블. 가능하지 않은 경우

      CREATE TABLE sirev_DestinationHotels (
          dehoDestination INT, 
          dehoHotel INT, 
          FOREIGN KEY dehoDestination REFERENCES sirev_Dests (deDestCode), 
          FOREIGN KEY dehoHotel  REFERENCES sirev_Hotels (hoCode) 
      ) 
      
  4. , 당신은 가입 기준로 MySQL의 FIND_IN_SET() 기능을 사용할 수 있습니다

    SELECT hoCode, hoName 
    FROM sirev_Hotels 
        JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels) 
    WHERE sirev_Dests.deDestName = ? 
    
  5. 은 테이블에 합류 모든 호텔의 hoCodehoName을 얻은 데 원하는 대상에 <option value="$hoCode">$hoName</option> 출력 결과 집합을 루프 할 수 있으며 htmlentities()을 적절하게 적용하십시오.

+0

글쎄요, 그렇지만 큰 리퀘스트를 마친 후, 어떻게하면 내 필드 deHotels를 폭발시킬 수 있습니까? 내 결과를 내 js에 가입 시키시겠습니까? if ($ res) { \t \t $ row = mysql_fetch_assoc ($ res); \t \t $ items = explode (',', $ row [ 'deHotels']); \t \t die (json_encode ($ items)); \t} – Peter

+0

@ 피터 : # 5에서 제안한 기준으로 조인을 수행하는 경우,'deHotels'를 분해 할 필요가 없습니다. - MySQL이이를 처리합니다. – eggyal

+0

오우 이제 알았으니 내 정보를 내 js로 어떻게 보내야합니까? $ items = $ row [ 'deHotels']; ? 왜냐하면 내가 번호와 이름을 호출해야 할 것입니다. 어떻게 2 차원 테이블을 제 js로 보낼 수 있습니까? – Peter

0

$ values ​​= array(); While ($ row = mysqli_fetch_array ($ result)) { $ values ​​[] = array ($ row, $ secondValue); }

의사 코드. 당신은 격차를 작성해야하지만 잘하면 그

+0

Thx이 의사 코드로 시도해 보겠습니다. – Peter