2016-05-30 3 views
-1

здесь у меня есть простая функция, но это покажет мне данные fom sql только в 1 div, я хочу показать [на div 1 показать 1 данные, в другом div show 2 data и т. Д. И т. Д.] ...html php echo on div

function load_post($added_by) 
{ 
    global $Connection; 

    $SQL_3 = mysqli_query($Connection, "SELECT * FROM posts WHERE added_by='$added_by'"); 

    $NumPosts = mysqli_num_rows($SQL_3); 
    $out['num_posts'] = $NumPosts; 

    while($Fetch_3 = mysqli_fetch_array($SQL_3)) 
    {   
     $out['id'] = $Fetch_3['id']; 
     $out['text'] = $Fetch_3['text']; 
     $out['added_by'] = $Fetch_3['added_by']; 
     $out['mp4'] = $Fetch_3['mp4']; 
     $out['likes'] = $Fetch_3['likes']; 
     $out['youtube'] = $Fetch_3['youtube']; 
     $out['image'] = $Fetch_3['image']; 
     $out['date_added'] = $Fetch_3['date_added']; 

     return $out; 
    } 
} 

index.php.

$posts = load_post('gentritabazi'); 
<div class="settings_forms_content"> 
<?php echo $posts['text']; ?> 
</div> 
+1

Каков ваш вопрос? –

ответ

0

return завершение сразу ваша функция, поэтому только одна итерация выполнена. Вам нужно, чтобы сохранить результаты в массиве, а затем после цикла возвращает этот массив, STH, как это:

$out = array(); 
while($Fetch_3 = mysqli_fetch_array($SQL_3)) 
     {   
      $out[] = $Fetch_3; 


     } 
return $out; 

и дисплей:

$posts = load_post('gentritabazi'); 
foreach ($posts as $post) { 
echo '<div class="settings_forms_content">'; 
      echo $post['text']; 
      echo '</div>'; 
} 
0
$posts = load_post('gentritabazi'); 
foreach ($posts ['text'] as $postText){ 
    echo "<div class='settings_forms_content'>$postText</div>";    
} 

первая строка вызывает вашу функцию, которая возвращает массив $ вывешивают этот массив выглядит следующим образом:

$posts = array(
    "id" => array of ids 
    "text" => array of texts 
    ... 
); 

, если вы хотите получить доступ к третьему тексту, он будет быть так:

$posts ['text'][3] 

в Foreach итерацию к вашему $ сообщению массива с индексом «текст» -> который также является массивом каждое значение в этом массиве, $ пост [ «текст»] будет ссылаться с $ postText -> это означает: $ post ['text'] [1] = $ postText (первый цикл за цикл foreach-loop) $ post ['text'] [2] = $ postText (второе время цикла через foreach-loop) .. если вы знакомы с петлями, Еогеасп только короткая версия для

for(var $i=0;$i<length($posts['text'];$i++){ 
    echo "<div class='settings_forms_content'>$posts['text'][i]</div>"; 
    } 
+2

Добавьте более подробную информацию, объясняющую ваш ответ. Недостаточно кода. – Bassem

+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –

+0

добавлено разъяснение к моему комментарию – njank

0

Lots т о внесении поправок, поэтому я комментировал код вместо того, чтобы писать эссе

function load_post($con, $added_by) 
{ 
    // dont use globals, use parameters 
    //global $Connection; 

    // select only what you want to see not `*` 
    $SQL_3 = mysqli_query($con, "SELECT id, text, added_by, mp4, 
             likes, youtube, image, data_added 
           FROM posts 
           WHERE added_by='$added_by'"); 

    // not needed 
    //$NumPosts = mysqli_num_rows($SQL_3); 
    //$out['num_posts'] = $NumPosts; 

    while($Fetch_3 = mysqli_fetch_array($SQL_3)) 
    {  
    /* 
    * THsi code would overwrite the last iteration of the while loop 
     $out['id'] = $Fetch_3['id']; 
     $out['text'] = $Fetch_3['text']; 
     $out['added_by'] = $Fetch_3['added_by']; 
     $out['mp4'] = $Fetch_3['mp4']; 
     $out['likes'] = $Fetch_3['likes']; 
     $out['youtube'] = $Fetch_3['youtube']; 
     $out['image'] = $Fetch_3['image']; 
     $out['date_added'] = $Fetch_3['date_added']; 
    */ 
     // now as you SELECT only what you want yo can simply do 

     $out[] = $Fetch_3; 

     //return $out; instantly terminates the function 
    } 

    return $out; // return the array 
} 

Позовите вашу функцию

// pass the connection as a parameter 
$posts = load_post($Connection, 'gentritabazi'); 

// if you want to know how many results were returned 
$result_count = count($posts); 

// process the returned array 
foreach ($posts as $post) { 

    echo '<div class="settings_forms_content">'; 
    echo $post['text']; 
    echo '</div>'; 
} 

Ваш сценарий находится под угрозой SQL Injection Attack Посмотрите, что случилось с Little Bobby Tables Даже if you are escaping inputs, its not safe! Использование prepared statement and parameterized statements