1

これは提案で更新されたコード全体です。新しい列名も追加されました。それが正しいかどうか教えてください。

<?php
    //Initialize your first couple variables
    $encodedString = ""; //This is the string that will hold all your location data
    $x = 0; //This is a trigger to keep the string tidy

    //Now we query to the database      
    $result = mysql_query("SELECT visitors_pb_list.first, visitors_pb_list.last, visitors_pb_list.ip, visitors_pb_list.landing_page as visitors_pb_list_landing_page, pb_list.address, pb_list.landing_page as pb_list_landing_page, ziplatlang.longitude, ziplatlang.latitude FROM visitors_pb_list LEFT JOIN pb_list ON visitors_pb_list.landing_page = pb_list.landing_page LEFT JOIN ziplatlang ON pb_list.zip = ziplatlang.zip_code WHERE landing_page='" . $pb_list_id . "' order by id desc");

    //Multiple rows are returned
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        //This is to keep an empty first or last line from forming, when the string is split
        if ( $x == 0 )
        {
             $separator = "";
        }
        else
        {
             //Each row in the database is separated in the string by four *'s
             $separator = "****";
        }
        //Saving to the String, each variable is separated by three &'s
        $encodedString = $encodedString.$separator.
        "<p class='content'><b>Lat:</b> ".$row['latitude'].
        "<br><b>Long:</b> ".$row['longitude'].
        "<br><b>Name: </b>".$row['first'].$row['last'].
        "<br><b>Address: </b>".$row['address'].
        "<br><b>IP: </b>".$row['ip'].
        "</p>&&&".$row['latitude']."&&&".$row['longitude'];
        $x = $x + 1;
    }        
?>
<input type="hidden" id="encodedString" name="encodedString" value="<?php echo $encodedString; ?>" />

私がベースコードを入手した場所を知りたい場合は、ここにあります:

http://www.macrostash.com/2011/09/17/demo-use-a-php-mysql-database-to-load-markers-on-a-google-map/#codesyntax_4

ただし、複数のテーブルに適応させようとしています。一人ではできない。visitors_pb_listループに使用する必要があります。ziplatlang緯度と経度に使用する必要があります。pb_list列を介して他の 2 つのテーブルをブリッジするために使用する必要がありzipます。これまでのところ成功を収めていません。

4

1 に答える 1

0

たとえば、3 つのテーブルすべてに名前列がある場合、同じ名前を持つすべての列の名前を変更する必要があります。

SELECT 
visitors_pb_list.name as visitors_pb_list_name, 
pb_list.name as pb_list_name, 
ziplatlang.name as ziplatlong_name
FROM visitors_pb_list 
LEFT JOIN pb_list ON visitors_pb_list.landing_page = pb_list.landing_page 
LEFT JOIN ziplatlang ON pb_list.zip = ziplatlang.zip_code 
WHERE landing_page='" . $pb_list_id . "' order by id desc

PHP では、結果の列に名前でアクセスすることをお勧めします。これは PDO のデフォルトです。

またはmysql関数を使用:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    //This is to keep an empty first or last line from forming, when the string is split
    if ( $x == 0 )
    {
         $separator = "";
    }
    else
    {
         //Each row in the database is separated in the string by four *'s
         $separator = "****";
    }
    //Saving to the String, each variable is separated by three &'s
    $encodedString = $encodedString.$separator.
    "<p class='content'><b>Lat:</b> ".$row['latitude'].
    "<br><b>Long:</b> ".$row['longitude'].
    "<br><b>Name: </b>".$row['name'];

    $x = $x + 1;
}
于 2013-11-13T22:52:56.517 に答える