2008-12-17 5 views
2

Je veux faire quelque chose comme ceci:Est-il possible de changer une propriété d'élément HTML en utilisant son identifiant avec PHP?

page A a un lien vers la page B
page B reçoit le contenu d'une base de données et les traite
le résultat de la page B est affichée sur un div en page A

Veuillez noter que je ne veux pas quitter la page A pendant que la page B traite les informations de la base de données.

Ce que j'essaie vraiment de faire est d'éviter d'utiliser des cadres dans le site, et je veux que les pages apparaissent dans un div. Est-ce possible?

Je suppose que c'est un peu une question de débutant, mais c'est vraiment m'embêter et je ne sais même pas par où commencer à chercher.

+0

Je pense qu'il est bon de garder à l'esprit que tout le travail que fait PHP, il le fait avant même d'avoir envoyé quoi que ce soit au client. Il fait toute sa magie, emballe la page, puis l'envoie, réel et entier, au client. Pour changer les choses plus tard, il faut autre chose, comme AJAX. – Hober

Répondre

10

Vous voulez AJAX!

AJAX fera, mais les étapes sera un peu différent de ce que vous décrivez

  • page A a un lien qui appelle une fonction javascript
  • la fonction javascript fait un appel AJAX à la page B qui obtient le contenu à partir d'une base de données et les traite
  • le résultat de la page B est retourné à la fonction javascript
  • la page a l'affiche dans un div
2

Ce que vous cherchez est JavaScript et AJAX.

+0

Je ne peux pas vraiment utiliser non plus ... c'est pour une classe à l'école et j'ai vraiment besoin d'utiliser PHP: S – Joum

+0

Je ne sais pas si vous pouvez empêcher le chargement de la page avec le côté serveur seulement. – MrChrister

1

Vous voulez faire ce côté client plutôt que côté serveur. J'aime personnellement JQuery

Vous devrez peut-être avoir une version simple de la page B. Ceci est très commun. Faites-moi savoir si vous souhaitez des exemples.

0

Réponse courte: non.

Pour cela, vous aurez besoin de scripts côté client ou d'AJAX.

0

Découvrez XAJAX.

C'est une bibliothèque AJAX pour PHP qui fera essentiellement ce que vous voulez.
Il écrit le Javascript requis pour gérer les choses du côté client.

Vous procéderez comme suit. 1. Incluez les bibliothèques XAJAX dans vos pages php. 2. Enregistrez vos fonctions 3. les appeler sur le côté client de javascript en utilisant xajax_phpfunctionName()

0

Comme tout le monde l'a dit, cela doit être fait par une sorte de configuration AJAX. Si vous êtes plus familier avec PHP que JavaScript (ou les scripts côté serveur que les scripts côté client), je vous recommande également de passer à la caisse XAJAX. [Ce qui a été écrit par Adam que je répondais.]

1

Il y a probablement une des choses zillion mal avec cet exemple, mais il devrait vous descendre la bonne voie :)

fichier

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> 
fichier

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; 

?> 
fichier

de

// 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; 
} 
0

Eh bien, ce que je voulais d'abord faire était d'obtenir PHP pour vider le HTML (et PHP) le contenu d'une page sur un DIV sur une autre page (ça sonne vraiment bizarre, je sais). La façon dont vous le faire est avec cette fonction:

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

Si vous le faites comme cela, il va analyser le PHP sur le fichier $ filename et renvoie le résultat dans une chaîne. Pour le faire vider et afficher le contenu, supprimez simplement la dernière ligne.

Je suis un peu nouveau et ce n'est probablement pas la meilleure façon de le faire, mais cela a fonctionné pour moi. J'espère que cela aide.

Questions connexes