2017-06-22 1 views
0

Ich ziehe Daten aus einer Datenbank und möchte sie in ein Array einfügen. Ich würde das Array mag aussehenSchlüsselwertpaare aus einer SQL-Abfrage in ein Array schieben

$myArray = array(
      $id => array(
         "title" => $title, 
         "description" => $description, 
         "tag" => $tag, 
         "link" => $link 
         ) 
       ) 

Wo $ id die ID aus der Datenbank, $ title gezogen wird aus der Spalte „Titel“ der Datenbank, und so weiter gezogen ist.

Ich brauche alle diese Daten verbunden werden, so dass ich eine Vorlage verwenden kann, um die Informationen leicht anzuzeigen.

Derzeit ist mein Code:

<?php 
$query = mysqli_query($db_conn, $advice); 
//Arrays for the key value pairs 
$pregnancyArray = array(); 
$postpartumArray = array(); 
$babyArray = array(); 
$toddlerArray = array(); 
$parentingArray = array(); 

//Arrays for now 
$pregnancyTitleArray = array(); 
$pregnancyLinkArray = array(); 
$pregnancyDescriptionArray=array(); 
$pregnancyTagArray=array(); 

$postpartumTitleArray = array(); 
$postpartumLinkArray = array(); 
$babyTitleArray = array(); 
$babyLinkArray = array(); 
$toddlerTitleArray = array(); 
$toddlerLinkArray = array(); 
$parentingTitleArray = array(); 
$parentingLinkArray = array(); 

function createSlug($slug) 
{ 
    $LNSH = '/[^\-\s\pN\pL]+/u'; 
    $SDH = '/[\-\s]+/'; 
    $slug = preg_replace($LNSH, '', mb_strtolower($slug, 'UTF-8')); 
    $slug = preg_replace($SDH, '-', $slug); 
    $slug = trim($slug, '-'); 
    return $slug; 
} 

while ($row = mysqli_fetch_array($query)) { 
    $id = $row['adviceID']; 
    $title = $row['title']; 
    $cat = $row['cat']; 
    $link = createSlug($title); 
    $description = $row['description']; 
    $tag = $row['tag']; 


    if ($cat === 'pregnancy') { 

     array_push($pregnancyTitleArray, $title); 
     array_push($pregnancyLinkArray,$link); 
     array_push($pregnancyDescriptionArray, $description); 
     if($tag){ 
      array_push($pregnancyTagArray, $tag); 
     } 
     else { 
      array_push($pregnancyTagArray, "nt"); 
     } 

    } elseif ($cat === 'postpartum') { 
     array_push($postpartumTitleArray, $title); 
     array_push($postpartumLinkArray,$link); 
    } elseif ($cat === 'baby') { 
     array_push($babyTitleArray, $title); 
     array_push($babyLinkArray,$link); 
    } elseif ($cat === 'toddler') { 
     array_push($toddlerTitleArray, $title); 
     array_push($toddlerLinkArray,$link); 
    } elseif ($cat === 'parenting') { 
     array_push($parentingTitleArray, $title); 
     array_push($parentingLinkArray,$link); 
    } else { 
     continue; 
    } 
} 
    ?> 
<section class="content" id="pregnancy-advice"> 
    <h2 class="heading">Pregnancy Advice</h2> 
    <ul class="justified-content" style="list-style-type: none;"> 
    <?php 
     for($i = 0; $i < sizeof($pregnancyTitleArray) && $i <= 15; $i++){ 
      echo "<li class=\"extra-spacing\"><a href=\"atemplate.php?\"" . $pregnancyLinkArray[$i] . ">" . $pregnancyTitleArray[$i] . "</a></li>"; 
     } 
    ?> 
     <a class="more-links" href="adviceCat.php?cat=pregnancy">More -></a> 
    </ul> 
</section> 

Antwort

0

Können Sie sich ein Array mit Ihrem Ergebnis bauen gesetzt wie so:

$results = []; 
while ($row = mysqli_fetch_array($query)) { 
    $results[$row['adviceID']] = $row; 
    $results[$row['adviceID']]['link'] = createSlug($title); 
} 

Wenn Sie nur bestimmte Daten in Ihrem Array haben möchten Sie können es anders bauen:

$results = []; 
while ($row = mysqli_fetch_array($query)) { 
    $results[$row['adviceID']] = array(
    'title' => $row['title'], 
    'description' => $row['description'], 
    'tag' => $row['tag'], 
    'link' => createSlug($title), 
); 
} 
Verwandte Themen