PHP ile kimliğini kullanarak bir HTML element özelliğini değiştirmek mümkün mü?

8 Cevap php

Ben böyle bir şey yapmak istiyorum:

page A has a link to page B
page B gets content from a database and processes it
the result from page B is displayed on a div in page A

Ben sayfa B veritabanının bilgilerini işlerken sayfa A ayrılmak istemiyorum Lütfen dikkat.

Ne gerçekten yapmak için çalışıyorum sitede kareleri kullanmaktan kaçınmak, ve ben sayfaları div görünmesini yapmak istiyorum. Bu mümkün mü?

Ben onun tür bir acemi soru tahmin ediyorum, ama bu beni gerçekten rahatsız ediyor ve ben hatta nerede aramaya başlamak için bilmiyorum.

8 Cevap

Sen AJAX istiyorum!

AJAX yapacak, ancak adımlar ne tarif biraz farklı olacak

  • A sayfası javascript işlevini çağıran bir bağlantı vardır
  • javascript fonksiyonu bir veritabanından içerik alır ve onu işler, sayfa B için bir AJAX çağrısı yapar
  • sayfa B sonuç JavaScript işlevi döndürülür
  • sayfa bir div görüntüler

Ne arıyorsun JavaScript ve AJAX.

Bunun yerine sunucu tarafında daha bu istemci tarafında yapmak istiyorum. Ben şahsen JQuery gibi

Bu çok yaygın Sayfa B'nin basit bir sürümüne sahip olabilir. Eğer bazı örnekler isterseniz bana bildirin.

Orada bu örnekte yanlış trilyonlarca şey muhtemelen, ama size doğru parça aşağı almak gerekir :)

dosya a.php

<html>
<body>
<script type="text/javascript" src="stuff.js"></script>
Data to process please: <input type="text" name="datatoprocess" id="datatoprocess" />
<br />
<input type="button" value="Do Something" onclick="dostuff();" />
<hr />
<div id="resultarea">
</div>
</body>
</html>

dosya b.php

<?php

$message = '';
if ( isset( $_REQUEST['datatoprocess'] ) ) {
    $datatoprocess = $_REQUEST[ 'datatoprocess' ];
    if ( strlen( $datatoprocess ) > 0 ) {
    	if ( $datatoprocess == 'foo' ) {
    		$message = '<span style="color:#ffff00;background:#ff0000;">bar</span>';
    	} else {
    		$message = 'You sent me: &quot;'.htmlentities($datatoprocess).'&quot;';
    	}
    } else {
    	$message = 'That is really short data.';
    }
} else {
    $message = 'No data to process in request?';
}

echo $message;

?>

dosya stuff.js

// poor man quick and dirty ajax :|

function dostuff() {
    var xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
    	alert ("Browser does not support HTTP Request.");
    	return;
    } 
    var datatoprocess = document.getElementById('datatoprocess').value;
    var url="b.php"
    			 +"?datatoprocess=" + escape(datatoprocess)
    ;
    xmlHttp.onreadystatechange = function() {
    	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
    		var AjaxAnswer = xmlHttp.responseText ;
    		document.getElementById('resultarea').innerHTML = AjaxAnswer;
    	}
    };
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}


function GetXmlHttpObject() { 
    var objXMLHttp=null;
    if (window.XMLHttpRequest) {
    	objXMLHttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    	objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objXMLHttp;
}

Kısa cevap: hayır.

Bunu yapmak için bazı istemci tarafı komut veya AJAX gerekir.

Çıkış XAJAX.

Its an AJAX library for PHP which will essentially do what you want.
It writes the Javascript required to handle the client side stuff.

You will do the following. 1. Include XAJAX libraries in your php pages. 2. Register your functions 3. Call them on client side from javascript by using xajax_phpfunctionName()

Her kimse dediği gibi, bu AJAX kurulum çeşit yoluyla yapılması gerekiyor. JavaScript daha PHP (istemci tarafı komut dosyası veya daha sunucu tarafı komut dosyası) daha aşina iseniz, ben de size ödeme XAJAX öneririz. [Ben de cevap gibi Hangi Adam tarafından yayınlanmıştır.]

Peki, ben aslında yapmak istedim (gerçekten garip geliyor, biliyorum) HTML (ve PHP) dökümü PHP almak için başka bir sayfadaki bir DIV için bir sayfanın içeriğini oldu. Bunu yolu, bu fonksiyon ile:

ob_start();  
include($filename);  
$return_str = ob_get_contents();  
ob_end_clean();

Bunu gibi yaparsanız, $ dosya dosya üzerinde PHP ayrıştırmak ve bir dize sonuç dönecektir. Bu içeriği dökümü VE göstermek yapmak için, sadece son satırını kaldırın.

Ben biraz newb yaşıyorum ve bu muhtemelen bunu yapmak için en iyi yol değildir, ama benim için çalıştı. Umarım yardımcı olur.