2015-04-13 3 views
0

Я пытаюсь связать php массивы вместе.Связывание php массивов вместе

Значения dbTable массива: - Запрос предложений и процитировать

Значения в dbColumns массива: - четыре раза в день, товар, цена, идентификационный номер и пункт

Значения в dbTData массива: - 1 мяч , 200, 2 и летучая мышь.

, выдаваемого как: -

qid 1 
    item ball 
    price 200 

    id 2 
    item bat 

    0 => quote 
    1 => rfq 

Как показано на dbColumns массива и dbTData связывает, но как я получаю dbTable связать с ними, пожалуйста?

Так результат будет: -

quote 
qid 1 
item ball 
price 200 

rfq 
id 2 
item bat 

код до сих пор: -

// form variables (arrays) passed over 
$dbTData = $_POST["tupleData"]; 
$dbColumns = $_POST["column"]; 
$dbTable = $_POST["tableNames"]; 
$dbName = $_POST["dbName"]; 

// combining two arrays 
$combineCT = array_combine($dbTData, $dbColumns); 

// debugging echo database name 
echo "The database in use = " . $dbName . "</br> "; 

// database connection 
$dbConnectionT = mysqli_connect($host, $user, $password, $dbName); 
if ($dbConnectionT ->connect_error){ 
    die ("database connection failed " . $dbConnection->connect_error); 
} 



//loop through associative array 
foreach($combineCT as $message => $answer) 
      { 
       echo $answer . " " . $message; 
       echo "</br>"; 
      } 

    echo "</br>"; 

foreach($dbTable as $key => $val) 
     { 
     echo "$key => $val\n"; 
      echo "</br>"; 
     } 

Заранее спасибо, я надеюсь, что я объяснил себе достаточно

Предыдущая страница: -

$result = $dbConnectionT->query("SHOW TABLES"); 
        echo "<form action='algone.php' method='POST'>";  
       while ($row = $result->fetch_row()) 
       {   


        // printing out the table name 
        echo '<h3>' . $row[0] . '</h3>'; 

        // echo "here table "; 
        echo '' . "<input type='hidden' value='$dbName' name ='dbName' > "; 
        echo '<th>' . "<input type='hidden' value='$row[0]' name ='tableNames[]' > "; 


        $table = $row[0]; 
        $result1 = $dbConnectionT->query("SELECT * FROM $table"); 
        if($result1) 
        { 

           echo '<table cellpadding="1" cellspacing="0" >'; 

           $column = $dbConnectionT->query("SHOW COLUMNS FROM $table"); 
           echo '<tr>'; 
           while($row3 = $column->fetch_row()) 
           { 

            echo '<th> ' . "<input type='hidden' value='$row3[0]' name ='column[]' > "; 
            echo ''.$row3[0]. " <input type ='text' name='tupleData[]'></th>" ; 

            echo "</br>"; 

           } 
            echo '</tr>'; 

            while($row2 = $result1->fetch_row()) 
           { 
            echo '<tr>'; 
            foreach($row2 as $key=>$value) { 
            echo '<td>',$value . " here " .'</td>'; 
            echo "here row2 "; 
            } 
            echo '</tr>'; 
           } 
           echo '</table><br />'; 

        } 




       } 

      echo "<input type='submit' name='submit' value='submit'> "; 
         echo "</form>";   

      $dbConnectionT->close(); 

Новый код ниже **********************

foreach ($AllData as $sigleData) 
    { 

     $table = $sigleData['name']; 
     $columns = $sigleData['columns']; 
     $columnData = $sigleData['data']; 
     $combineCT = array_combine($columns , $columnData); 

     foreach($combineCT as $colData => $tupleData) 
      { 
       $tableS = implode(" ", $table); 
       echo $tableS; 
       echo "</br>"; 
       echo $colData. " " . $tupleData; 
       echo "</br>"; 

       $sqlTuples = "INSERT INTO " . $tableS . " (id, " . $colData . ") VALUES ('1', '" . $tupleData . "')"; 
         if ($dbConnectionT->query($sqlTuples) == TRUE) 
         { 
          echo "database updated"; 
          echo "</br>"; 
         } 

      } 
    } 

Выход

quote 
qid 1 
quote 
item bin 
rfq 
id 3 
rfq 
item bat 
+2

Это все как загадка, я не совсем понимаю, что вы пытаетесь сделать. Попробуйте это: вместо того, чтобы объяснять используемый вами технический подход, измените свой вопрос так, чтобы вы сначала указали свою цель с точки зрения пользователя. Без слишком больших технических деталей, таких как база данных и таблицы и тому подобное. – arkascha

+0

, объединив $ combCT с $ dbTable хотя бы в соответствии с информацией, которую вы предоставили ... –

+0

ok спасибо, не могли бы вы дать мне пример, пожалуйста, @JonidBendo please – tony

ответ

0

При создании формы вы должны изменить tableNames[] (название задает вход) до table[$i][name], после чего меняются column[] на table[$i][columns][] и tupleData[] до table[$i][data][]. Вы должны добавить $i=0; перед выполнением запроса и $i++; перед закрытием цикла то время как while ($row = $result->fetch_row()){}

Когда вы читаете их потом:

$AllData = $_POST["table"]; 

foreach ($AllData as $sigleData){ 

$table = $sigleData['name']; 
$columns = $sigleData['columns']; 
$columnData = $sigleData['data']; 
$combineCT = array_combine($columns , $columnData); 

} 

И теперь вы можете использовать или эхо столбца и данные таблиц, а также как имя. Думаю, теперь общая идея должна быть ясной.

+0

Большое спасибо за помощь, теперь я получаю сообщение об ошибке «undefined index: name» && undefined index: columns «Хотя данные в порядке. Еще раз спасибо! @jonid Bendo – tony

+0

Вы изменили имена входных данных на предыдущей странице? –

+0

yes: - table [$ i] [name ] [] --- таблица [$ i] columns [] - таблица [$ i] [данные] [] – tony