2016-03-22 21 views
0

Bu kod, olayları FullCalendar içine besleyen ve this'dan biraz değiştirilen bir işlevin parçasıdır. Kodlama bilgim en iyisi en az ve birkaç gündür bu konuya girdim.PHP, MYSQL dizilerini birleştirerek mysqli_fetch_array

  • My MYSQL veriler iki bölümden oluşuyor
  • Ayrı TARİH ve SAAT
  • Güncel işlevi yalnızca TARİH veya zaman damgası biçimine kabul

Çözüm:

  • tarih ve saati birleştirin DATETIME
'u oluşturmak için diziler

en MYSQL tablo varsayalım:

CREATE TABLE `test` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `title` varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    `sdate` date NOT NULL, 
    `stime` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    `edate` date NOT NULL, 
    `etime` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

en işlevini varsayalım:

{ 
    $events = array(); 
    $query = mysqli_query($con, "SELECT * FROM test"); 
    while($fetch = mysqli_fetch_array($query,MYSQLI_ASSOC)) 
    { 
    $e = array(); 
    $e['id'] = $fetch['id']; 
    $e['title'] = $fetch['title']; 
    $e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']); 
    $e['end'] = array_push($e,$fetch['edate'],$fetch['etime']); 

    array_push($events, $e); 
    } 
    echo json_encode($events); 
} 

Sorun: '4' de

$e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']); 
$e['end'] = array_push($e,$fetch['edate'],$fetch['etime']); 

Sonuçları olursa olsun giriş Ne veridir. Daha fazla dizi eklendiğinde, $ e değeri, veri bir dize olsa bile yalnızca 1 artar. Ben $ a + $ b veya array_combine gibi diğerlerini denedim çünkü Bana göre böyle instancess birden dizisini ayarlayarak, ilerleme geçerli:

$e['start'] = $fetch['sdate']; 
$e['start'] = $fetch['stime']; 
$e['end'] = $fetch['edate']; 
$e['end'] = $fetch['etime']; 

Ve hiçbiri çalıştık. İçinde bulunan dizilerin sayısından başka bir şeye neden olacak şekilde dizileri birleştirmek mümkün mü? Zaman ve okuma için hepinize çok teşekkür ederim. O

+0

iki (tarih ve saati) bitiştirmek ve bunu geçerli bir tarih biçimini yapmak için PHP) '(function' tarihi kullanabilir: '$ e ['start'] = tarih ("Ymd H: i: s", strtotime ($ getirme ['sdate']. ''. $ getirme ['stime'])); –

+0

Çözümünüz tam olarak doğru çalıştı! – ultracasual

cevap

0

gerçek: Eğer array_push tanımını düşünülürse

$e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']); 
$e['end'] = array_push($e,$fetch['edate'],$fetch['etime']); 

İade 4 derece normaldir Döndürdüğü belirtiyor, ben alıntı: Dizideki öğe

yeni numara .

söz konusu dizi e olduğu için, orada indeksi start, end ile eleman zaten ve array_push Yani önemli şey hakkında bilmek 4.

yol açar diğer iki unsurunu içermesidir biliyorum array_push, bir dizi döndürmemesi, ancak parametre olarak verilen ilk diziyi değiştirmesidir. senin örneğin çalışması için Yani, sadece yapmalıyım:

array_push($e['start'], $fetch['sdate'], $fetch['stime']); 
array_push($e['end'], $fetch['edate'], $fetch['etime']); 
+0

Değişkeni önceden bildirmek için denendi. Normal bir durumda çalışacağımı düşünüyorum ama kodlama yoluyla çalıştırıldığından çalışmaz mı? – ultracasual