PHP: Servisten önce tüm sayfayı yeniden ayrıştırmak?

6 Cevap php

Bir şey olursa bir sayfanın sonunda, daha sonra tüm sayfa istemciye hizmet öncesi yeniden ayrıştırılması gerekiyor temizlenmiş olması gerekir. Sadece başında ve yeniden dönmek için php motoru söylemek için bir yol olsaydı ben sayfayı yenilemek için bir javascript echo gidiyordu, ama bu onları sayfasını yüklemek ve daha sonra bunu yeniden yapacak ... Ben merak ediyordum Tüm sayfayı-ayrıştırmak?

Teşekkürler!

Ben daha net sorunu açıklamak için çalışacağız ama bu karmaşık ve korkunç bir iletişimci duyuyorum. Ben sonuçlarını daraltmak için alanları seçmek için kullanıcılara seçenek veriyorum ürünleri listeler sayfada ben. Onları seçili tutmak zorunda kalmamak sistemi bu hatırlar. Onlar metal renk gibi bir kategoriyi dar ve daha sonra metal renkli kristal figürler gibi alakasız olduğu bir kategoriye giderseniz hiçbiri seçilen metal renk maç olacak çünkü hiçbir sonuç vermez. Farklı kategoriler doğru ürünleri bulmak için farklı gereksinimleri vardır çünkü veri tabanından ürünleri çekmek için sorguyu oluşturmak için çok karmaşık. böylece sorgu oluşturulur keresinde (mysql_num_rows karşı test etmek istiyorum) ve varsa hiçbir sonuç kullanıcıların seçimler temizlemek ve yeniden başlamak.

6 Cevap

Farklı kategoriler doğru ürünleri bulmak için farklı gereksinimleri vardır çünkü veri tabanından ürünleri çekmek için sorguyu oluşturmak için çok karmaşık. böylece sorgu hiçbir sonuç kullanıcıların seçimler temizlemek ve yeniden başlamak varsa ben mysql_num_rows() karşı test etmek istiyorum ve oluşturulur kez.

Bu durumda, sadece, sonuç döndüren bir işlevin içinde sorgu koymak satır sayısını kontrol, ve ikinci bir defa işlev filtreler ve çağrı sıfır açıksa.

Biraz muğlak davranıyorsun, ama sen sadece çıktıyı yeniden çözümlenerek bahsediyoruz eğer, yapabileceği kullanarak output buffering.

Ben ne sorunu olduğunu tamamen net değilim, ama HTML oluşturmadan önce gösterilecek ne karar ve ardından doğru şeyi ilk defa göndermek değil mi?

Ayrı bir dosya ve eval hile yapmak gerekir () 'ing içine eldeki işlevselliği ayıran ile birlikte çıktı tamponlama ob_start (ve ob_clean).

Ben her zaman bu konuda bir şey söz inkar edeceğiz rağmen Oh, ve son PHP versiyonları aslında ... Bir goto deyimi var. :-)

Ben bu konuda biraz kapalı gidiyoruz.

Ne sayfayı yeniden ayrıştırma yapmalıyım kullanarak, tekrar sayfaya kullanıcıyı yönlendirmek için

header('Location: thepagefile.php');

Aslında yeni bir sayfa yaratmadan dosyayı yeniden ayrıştırma istiyorsanız, ancak, aynı zamanda sadece tekrar dosyayı içerebilir:

thepagefile.php dahil

Ama muhtemelen aynı sonucu alırdım. Aslında parse sayfanın çıkış gibi bir şey yapmak istiyorum istiyorsanız:

ob_start(); // this is at the very top of the code/page
// all the code goes here
$output = ob_get_clean();
eval($output); // WTF?

ama aslında hiçbir mantıklı, ama yardımcı olur umarım.

Ben aslında çözmeye çalışıyoruz asıl sorunun gerçekten ne olduğunu bilmek istiyorum.

Ben senin böyle bir şey arıyor düşünüyorum:

<?php
ob_start(); //we start output buffering, this means nothing is send to the browser
//We do some code stuff
$time = microtime();
echo "Hai \n"; //Note taht mixing logic and output in real life
echo $time;  // is terribly practice
echo "\n bai"; //I do it here purely for the example
if(/*some condition */){
 $anErrorHappened = true;
}
if($anEroorHappened === true){
  //Load the output in a var if you need it
  //Otherwise don't
  $output = ob_get_clean();
  //Do other code stuff
  //I.E. send an error page
  include('errorPage.html');
}
else{
 ob_end_flush(); //Send everything the script has echo()'d, print()'ed and send to the browser in any other way (I.E. readfile(), header() etc.)
}
?>