2015-12-30 4 views
0

Мне нужно получить значения из db postgre и использовать fopen, чтобы открыть ссылку внутри своих записей, чтобы открыть реальный xml-файл.php form name variable

<?php 
echo "<form id=read2 method=post action=read2.php>"; 
//other html and table codes 
while ($row = pg_fetch_row($result)) { 
    echo "<tr><td>$row[1]</td><td><input type=hidden name=data value=$row[3] /><a href=javascript:; onclick=document.getElementById('read2').submit();>$row[2]</a></td><td>$row[4]</td><td>$row[5]</td></tr>"; 
} 

read2.php:

<?php 
$data=$_POST['data']; 
$explode = explode("/inbox/", $data); 
$final = ""; 
$final.="data/"; 
$final.=$explode[1]; 

echo "Result of data before explode is: $data <br />"; 
echo "Result of data after explode is: $explode[1] <br /><br />"; 

$myfile = fopen("$final", "r") or die("<h1>Unable to open file!</h1>"); 
$xml = htmlspecialchars(fread($myfile,filesize("$final"))); 
?> 
<pre> 
<?php echo $xml; ?> 
</pre> 
<?php fclose($myfile); ?> 

Моя проблема здесь: <input type=hidden name=data value=$row[3] /> я могу перейти к read2.php правильное значение и использовать взрываются, чтобы настроить то, что мне действительно нужно, но Я не могу выбрать, какое значение получить из-за name=data, которое будет одинаковым для всех, и read2.php получит только последний список.

Я попытался с помощью счетчика внутри время: name=data[count]; count++ Но в данном случае я не знаю, как получить «имя» от $ _POST

Также возможно, что Javascript код я использую, чтобы отправить форму не является лучшим для этой ситуации. Не могли бы вы помочь мне исправить?

+1

Сначала в HTML вам нужно указать значения типа '

bansi

+0

Я знаю это правило, но жизнь слишком коротка, чтобы процитировать все! просто шучу;) Дело в том, что было бы лучше поместить html-код за пределы php, но на данный момент это имя = данные вещь немного важнее, чем писать хороший код. Это в тестовой среде, позже на производстве я исправлю html, не волнуйтесь! – Nihvel

+0

Я не могу помочь с вашей конкретной проблемой, но я обещаю, что привыкание писать хороший код с самого начала, а не плохой код с намерением исправить его позже, бесконечно улучшит вашу жизнь, сэкономит ваше время, уменьшит ваш стресс и сделать все намного лучше. Я могу почти гарантировать, что вы никогда не вернетесь и не добавите эти символы '' ', по крайней мере, до тех пор, пока они не приведут к какой-либо ужасной ошибке или сбою в конкретном браузере, как только ваш код будет жить. – DaveyDaveDave

ответ

1

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

Имейте одну форму отдельно от таблицы, которая содержит данные набора записей и ссылки - для формы нужен только один скрытый элемент, на который вы нацеливаете, используя javscript и динамически устанавливаете значение.

следующее не проверено, поэтому оно может не работать «из коробки», но я думаю, что идея звуковая.

<!doctype html> 
<html> 
    <head> 
     <title>Table data - form submission</title> 
     <script type='text/javascript'> 
      function submitdata(event){ 
       var el=typeof(event.target)!='undefined' ? event.target : event.srcElement; 
       var data=document.getElementById('data'); 
       data.value=el.dataset.value; 
       data.parentNode.submit(); 
      } 
     </script> 
    </head> 
    <body> 
    <?php 

     echo " 
     <!-- 
      this is the form that actually sends data. 
      Programatically set the value of the hidden element 
      and submit the form 
     --> 
     <form name='senddata' method='post' action='read2.php'> 
      <input type='hidden' id='data' name='data'/> 
     </form> 



     <table>"; 
      while($row = pg_fetch_row($result)) { 
       echo " 
       <tr> 
        <td>{$row[1]}</td> 
        <td> 
         <a href='#' data-value='{$row[3]}' onclick='submitdata(event)'>{$row[2]}</a> 
        </td> 
        <td>{$row[4]}</td> 
        <td>{$row[5]}</td> 
       </tr>"; 
      } 

     echo " 
      </table>"; 
    ?> 
    </body> 
</html> 
+0

Замечательно! Я пробовал ваш код и, кажется, работает! Мне нужно все проверить, конечно, но это то, что я искал! Много и много спасибо! – Nihvel

+0

Нет проблем - рад, что это помогло. Также подумайте о принятии ответа, чтобы другой знал, что вопрос разрешен и решение работает. – RamRaider

0

Вы должны переместить скрытый параметр с кратными одного и установить скрытое значение параметра с помощью JQuery или яваскрипт и отправить форму. Попробуйте, как показано ниже:

<?php 
echo "<form id='read2' method='post' action='read2.php'>"; 
echo "<input type='hidden' name='data' id='data'/>"; 
echo '<table>'; 
while ($row = pg_fetch_row($result)) { 
    echo "<tr><td>$row[1]</td><td><a dataval=$row[2] href='#' onclick='callfunc(this)'>$row[2]</a></td><td>$row[4]</td><td>$row[5]</td></tr>"; 
} 
echo '</table>'; 
echo '</form>'; 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 
function callfunc(obj) 
{ 
    var dataval = $(obj).attr('dataval'); 
    $('#data').val(dataval); 
    $('#read2').submit(); 
} 
</script> 

Над кодом проверена и работает.

+0

Я не видел ваш код вовремя, потому что я не обновлял страницу со времени последнего ответа, но ваш код тоже БОЛЬШОЙ !!! Я собираюсь проверить оба и посмотреть, что лучше использовать в моем php. Спасибо mate: D Именно так должно быть решена проблема: «переместить скрытый параметр из нескольких в одиночный и установить значение скрытого параметра» так же, как решение, предлагаемое RamRaider. Спасибо, ребята! – Nihvel

+0

@Nihvel .. Отлично, поскольку ваша проблема решена. – AnkiiG