Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: button onClick - Echo w echo
Forum PHP.pl > Forum > PHP
Bart123
Drodzy forumowicze.

Mam problem, który wygląda tak.


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$arr = $child->attributes();

echo '<div class="parental">';

foreach($xml->General_Properties as $parent) {

echo '<form action='' method='POST'>';

echo '<input class="parent" type="button" name="click1"
onClcick="foreach($parent->children() as $child) {
'.$arr["value"].'; } />';
echo "</form>";



}



echo '</div>';


?>

Najprawdopodobneiej problem jest z zapisem onclick ponieważ tam występuje echo w echo.

Czy mógłby mi ktoś wytłumaczyć, w jaki sposób to zapisać by działało?

Z góry dziękuję za każdą pomoc.
trueblue
Jaki efekt/kod chcesz uzyskać?
Bart123
Sytuacja jest taka: mam plik xml, którego konstrukcja wygląda tak

Rodzic
dziecko = wartość
dziecko = wartość
dziecko= wartość

Rodzić
dziecko = wartość
dziecko = wartość
dziecko= wartość

np.

General_properties
height=200
width=100


I udało mi się odczytać zawartość pliku i wyświetllić na stronie. Problem pojawił się wtedy, kiedy chciałem wyświetlić RODZICA (to się udało) jako przycisk formularza. I po kliknięciu przycisku rozwijają się jego "dzieci". Tak to umownie nazwijmy.

Taki właśnie efekt chcę uzyskać. Jeżeli to w ogóle możliwe.

Oczywiście bardzo łatwo jest to zrobić przy pomocy submita ale, wtedy po naciśnięciu przycisku cała strona się przeładowuje i tu jest niestety wał.
Nie chciałbym używać ajaxu czy javascripta bo się specjalnie na nich nie znam... stąd pomysł na onClick.

OTO JAK WYGLĄDAŁ DZIAŁAJĄCY KOD Z SUBMIT czyli z przeładowywaniem strony NIESTETY.


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click1' value='General'/>";
echo "</form>";

if (isset($_POST['click1']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';




echo '<div class="parental">';
foreach($xml->Colorbox_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click2' value='Colorbox'/>";
echo "</form>";

if (isset($_POST['click2']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';



echo '<div class="parental">';
foreach($xml->Thumbs_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click3' value='Thumbs'/>";
echo "</form>";

if (isset($_POST['click3']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';




echo '<div class="parental">';
foreach($xml->Reflection_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click4' value='Reflection'/>";
echo "</form>";

if (isset($_POST['click4']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';






echo '<div class="parental">';
foreach($xml->Roll_Over_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click5' value='Roll_Over'/>";
echo "</form>";

if (isset($_POST['click5']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';


echo '<div class="parental">';
foreach($xml->Tooltip_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click6' value='Tooltip'/>";
echo "</form>";

if (isset($_POST['click6']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';


echo '<div class="parental">';
foreach($xml->Background_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click7' value='Background'/>";
echo "</form>";

if (isset($_POST['click7']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';


echo '<div class="parental">';
foreach($xml->Shade_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click8' value='Shade'/>";
echo "</form>";

if (isset($_POST['click8']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';


echo '<div class="parental">';
foreach($xml->Rotation_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click9' value='Rotation'/>";
echo "</form>";

if (isset($_POST['click9']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";}

}}

echo '</div>';




?>


IProSoft
Używaj BBCODE bo nie da się tego czytać.

Załaduj

  1. foreach($parent->children() as $child) {
  2. $arr = $child->attributes();
  3. echo $child->getName();
  4. echo ("<br>".$arr["value"]). "<br><br>";}


do ukrytego div'a i dodaj sobie w input akcję onclick i funkcję w JS, która pokaże/ukryje ten div.
Bart123
Sorki:) To było wklejane z notatniika. Ja po prostu już znam te swoje kody na pamięć.

Następnym razem użyję jedit.

A mógłbym prosić o zapis tej funkcji w javie?

Z javy jestem cienasem. Przyznaję się bez bicia.
timon27
A po co ci w javie?
Chciałeś online. Nie chcesz przypadkiem w javascript?

Zamiast przepisywać to na inny język skorzystaj po prostu z ajax.
Bart123
Dobrze by było wiedzieć jak to zapisać w ajax - może jakiś przykład?

Pewnie dla Was to łatwiejsze niż dla mnie. Dopiero się wdrażam w ajax...
timon27
funkcja ajax:
  1. function ajax(url,destination){
  2. document.getElementById(destination).innerHTML='<img src="wait.gif">';
  3. var xmlhttp;
  4. if (window.XMLHttpRequest){
  5. xmlhttp=new XMLHttpRequest();
  6. }else{
  7. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. xmlhttp.onreadystatechange=function(){
  10. if (xmlhttp.readyState==4 && xmlhttp.status==200){
  11. document.getElementById(destination).innerHTML=xmlhttp.responseText;
  12. }
  13. }
  14. xmlhttp.open("GET",url,true);
  15. xmlhttp.send();
  16. }


Co robi:
"wchodzi" na adres url a następnie całość co zobaczy wczytuje do diva/spana o id destination

czyli w twoim wypadku zamiast:
  1. <input type=submit>

piszesz:
  1. <button onclick='ajax("pokaz_dziecko.php","wynik")>

a guzik ten wykona skrypt pokaz_dziecko.php i wyświetli zawartość w divie o id wynik

Reszta (podzielenie twojego skryptu na części) to już php
Bart123
Chyba sobie nie radzę.

Zrobiłem tak. To jest cała zawartość pliku xml.php

<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>


function ajax(xml.php,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",xml.php,true);
xmlhttp.send();

</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax("xml.php.","wynik")' value='General'/>";
echo "</form>";

echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';}

echo '</div>';







?>


</html>


Co tu jest nie tak?
trueblue
  1. function ajax(file,wynik){
  2.  
  3. xmlhttp.open("GET",file,true);



  1. onClick='ajax("xml.php","wynik")'


W jQuery masz gotową funkcję do obsługi żądań ajax. Jeśli natomiast chcesz pozostawić swoją funkcję, a nie korzystasz gdzie indziej z jQuery, to niepotrzebnie ją załączasz.


Bart123
Słuchaj. Jeżeli mógłbym Cię prosić.

Mógłbyś zmienić tą funkcję którą wkleiłem - ten zaips na taki jak powinien być ?

Bo chyba nie bardzo zrozumiałem twoją radę...
trueblue
Popraw trzy powyższe błędy, do rady nie trzeba się stosować, aby skrypt działał.
Bart123
Ale przecież mój zapis tak właśnie wygląda?

Rozumiem że za file mam wstawić xml.php a za wynik id diva, który na potrzeby tej jawy nazwałem wynik.

Czy nie tak?
trueblue
Nie wygląda tak.
Zmień linijki w kodzie, na te które Ci podałem.
Bart123
<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>


function ajax(xml.php,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",child.php,true);
xmlhttp.send();

</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$xml = xml.php;
$wynik = wynik;

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(".$xml.",".$wynik.")' value='General'/>";
echo "</form>";

echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';}

echo '</div>';







?>


</html>

Tak wygląda to co mam w tej chwili i nie wiem czy błąd nie tkwi w tym, że button wyswietlany jest w echu razem z funkcją ajax .

Jak wchodzę na stronę, zamiast przycisku widzę zapis funkcji ajax...
trueblue
  1. function ajax(file,wynik){

  1. xmlhttp.open("GET",file,true);

  1. $xml = "xml.php";
  2. $wynik = "wynik";


Bart123
<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>


function ajax(file,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();

</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$xml = xml.php;
$wynik = wynik;

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(".$xml.",".$wynik.")' value='General'/>";
echo "</form>";

echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';}

echo '</div>';







?>


trueblue
A co z trzecią poprawką?

I kolejna:
  1. onclick='ajax(\"".$xml."\",\"".$wynik."\")'
Bart123
Trzecia czyli to?

$xml = "xml.php";
$wynik = "wynik";

Mam tak zapisane. Zapis w onclick juz zmieniłem.

Cudzysłowia! Ok mam. Zobaczymy czy zadziała.

Żeby było jaśniej to wklejam to co wyświetla mi się na stronie


function ajax(file,wynik){ document.getElementById(wynik)'; var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); }else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById(wynik); } } xmlhttp.open("GET",file,true); xmlhttp.send();

To zamiast przycisku - czyli prawdopodobnie zapis w echo przeszkadza, a już zmieniłem na taki jaki podałeś, czyli błąd nr. 4
trueblue
Funkcję ajax trzeba objąć w tagi <script>.
Bart123
Teraz nie ma nic. Ani przysku ani nic. Pusto, Mam tak:


<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>

<script>
function ajax(file,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>


</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');

$xml = "xml.php";
$wynik = "wynik";

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(\"".$xml."\",\"".$wynik."\")' value='General'/>";
echo "</form>";

echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';}

echo '</div>';







?>


</html>
trueblue
  1. document.getElementById(wynik).innerHTML=xmlhttp.responseText;



Bart123
<script>
function ajax(file,wynik){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>

Nadal pusto?

Mam nadzieję, że nie tylko mnie szlag trafia jak coś nie wychodzi?smile.gif
trueblue
Pewnie, że pusto, bo należało zmienić linijkę w funkcji onreadystatechange.

Jeszcze musisz wziąć pod uwagę, że wywołując kod php ajaxem zwracasz go w takiej postaci jak przy inicjacji całości (czyli z formularzem).
Bart123
Jeżeli chodzi onreadystatechange to zdaje się zmienłem na prawidłowe. I dalej bez efektu sad.gif

<script>
function ajax(file,wynik){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>


Zdaje się, że się nie zrozumieliśmy. Bardzo dobrze, że z formularzem czyli w tym przypadku z przyciskiem, który ma wywoływać ajaxa. Tylko, że tego przycisku od momentu wprowadzenia ajaxa właśnie NIE MA.
trueblue
Skoro tam zmieniłeś, to wyrzuć tą linijkę na początku funkcji.

Uruchom narzędzie developerskie, w Chrome F12. Potem zakładka Console i zobacz czy są błędy przy uruchamianiu przyciskiem. Jeśli nie, to zakładka Network i zobacz czy żądanie idzie, i jaki jest jego wynik.
Bart123
Znalazłem błąd! Przycisk jest, ale nie wysyła żadnego żądania.

OTO ZWROT Z CONSOLI CHROMA:

Uncaught ReferenceError: ajax is not defined picturesadd.php:256
onclick


A OTO PLIK:

<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>

<script>
function ajax(file,wynik){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>

</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";


echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';}

echo "</form>";

echo '</div>';







?>


</html>

Pliik jest plikiem o nazwie xml.php includowanym w php do pliku picturesadd.php. Może tu jest błąd?

HELP!

Firefox również zwraca: AJAX IS NOT DEFINED!

Jak not defined skoro w obu plikach już umieściłem zapis z headera. Co za absurd.

Ja już się poddałem. Jeżeli nikt nie pomoże mi tego rozwiązać to efektu, jaki chciałem uzyskać - nie będzie. Trudno sad.gif
trueblue
Nie zamknąłeś deklaracji funkcji ajax, brakuje }.
Bart123
Jasna cholera.

Już wiem o czym pisałeś wcześniej. Pokazuje się, tylko że pokazuje się jeszcze raz ten sam przycisk i dopero rezultat. A jak to zrobić, by po wciśnięciu przycisku GENERAL - POJAWIŁA SIĘ WYŁĄCZNIE ZAWARTOŚĆ diva o nazwe wskazanej w ajax. Już bez tego przycisku.

Co więcej - to działa tylko wtedy, kiedy wskazany w ajaksie div nie ma ustawionego display:none w zewnętrznym css.

A chodzi o to, żeby po wejściu na strone nie było go widać. Żeby on pokazywał się tylko wtedy, kiedy kliknę w przycisk formularza.

Pytanie zasadnicze : JAK PRZY POMOCY AJAXU BĄDŹ samego JAVASCRIPT ZMIENIĆ WARTOŚĆ DISPLAY dla Diva o nazwie wynik - W ZEWNĘTRZNYM PLIKU CSS.

Po wejściu na stronę div o nazwie WYNIK jest niewidoczny. Kiedy klikam na przycisk GENERAL - div o nazwie WYNIK się pokazuje. Ot cała filozofia. Tylko jak to zrobić?


Jeszcze raz cały kod tak dla przypomnienia jakby co::


<html>
<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>

<script>
function ajax(file,wynik){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
}
</script>


</head>


<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";

echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";
}

echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';

echo "</form>";

echo '</div>';







?>


</html>

zamknięcie formularza dałem wyżej. Pisałeś, że tak to będzie wyglądało...
trueblue
Jeśli wywołujesz kod bez ajaxa (czyli z palca), ma się wyświetlać tylko formularz + pusty div "wynik".
Jeśli wywołujesz kod ajaxem, ma się wyświetlić tylko to, co generuje drugi foreach.
Trzeba wykorzystać if-else.
Bart123
if (!isset($_POST['button']))
{
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='button' value='General'/>";
echo "</form></div>";


}}


else {
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}
echo '</div></div>';}


Taki zapis nie daje kompletnie nic. button nie działa.


echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='button' value='General'/>";
echo "</form></div>";}


if (isset($_POST['button']))
{
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}
echo '</div>';}


Taki również nic.

Jakbym nie kombinował , kliknięcie wyświetla albo drugiego buttona albo nic. Zero diva "wynik". Ten pojawia się tylko wtedy, kiedy nie ma ifów i bez kliknięcia. Po prostu po wejściu na stronę.

Przyznam, że pierwszy raz mam takie problemy, ale też pierwszy raz robię zdalną obsługę slidera. Dodawanie zdjęć już jest, teraz chodz o to, co jest w wyniku czyli ustawienia tego slidera. Tak, żeby można je było zmieniać z poziomu strony - oczywiście każdy z atrybutów wsadzę wtedy w odpowiedni input.
trueblue
To, że formularz ma metodę POST nie znaczy, że ajax również z niej korzysta.
Jak pewnie zauważyłeś ajax korzysta w tym przypadku z metody GET, więc o taki warunek powinieneś oprzeć kod.
Warunki nadal są w złych miejscach.

P.S. Formularz obecnie nie jest do niczego potrzebny, przycisk można zastąpić tagiem <a> z odpowiednim atrybutem href.
Bart123
Ty masz anielską cierpliwość chłopie wink.gif

Ja bym przy sobe wymiękł heheh wink.gif Dzięki wink.gif

Jakbyś tak mógł jeszcze podpowedzieć gdzie postawić

if (isset ($_GET['button'])) to bym w końcu miał z tym spokój sad.gif

Please...


Zrobłem tak, ale oczywiście nadal jest źle bo nie działa. Czuję się jak dziecko w podstawówce. Jezu...

<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";


echo '<div class="parental">';
if (!isset($_GET['button']))
{
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='GET'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";
echo "</form>";
}}


else {
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";

}echo '</div>';
}
echo '</div>';

?>

Pewnie chodzi o wstawienie warunków do samej funkcji ajax ? Tylko jak to zapisać?
trueblue
Ile $parent jest w General_Properties?
Bart123
General_Properties występuje jako parent -
Pytasz ile jest childs w tym rodzicu?

Chodzi ci pewnie o to, że tam niepotrzebnie jest foreach?

Rodziców będzie 8.

Każdy ma inną nazwę. Ale jak zrobię general_properties, żeby wyświetlały się jego podpunkty, to w ten sam sposób zrobię resztę.

Każdy rodzic będzie miał inną liczbę podpunktów. Bez ifa pobiera je wszystkie - tyle że ja je chcę uzyskać dopero po kliknięciu w parent.

Pewnie to ciężko zrozumieć nie widząc efektu.... Nie potrafię jakoś jaśniej wyklarować.
trueblue
Nie znam struktury tego XML, więc trochę się gubię.
Tak, chodziło mi o to, że niepotrzebny jest pierwszy foreach.

  1. <?php
  2. $xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
  3. $ml = "xml.php";
  4. $wynik = "wynik";
  5.  
  6.  
  7.  
  8. if (!isset($_GET['ajax'])) echo '<div class="parental">';
  9. foreach($xml->General_Properties as $parent) {
  10. if (!isset($_GET['ajax'])) echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>";
  11. }
  12. if (!isset($_GET['ajax'])) echo '<div id="wynik">';
  13. else{
  14. foreach($parent->children() as $child) {
  15. $arr = $child->attributes();
  16. echo $child->getName();
  17. echo ("<br>".$arr["value"]). "<br><br>";
  18. }
  19. exit();
  20. }
  21. if (!isset($_GET['ajax'])){
  22. echo '</div>';
  23. echo '</div>';
  24. }
  25.  
  26. ?>


I bez pierwszego foreach:
  1. <?php
  2. $xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
  3. $ml = "xml.php";
  4. $wynik = "wynik";
  5.  
  6.  
  7.  
  8. if (!isset($_GET['ajax'])){
  9. echo '<div class="parental">';
  10. echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>";
  11. echo '<div id="wynik">';
  12. echo '</div>';
  13. echo '</div>';
  14. }
  15. else{
  16. foreach($xml->General_Properties ->children() as $child) { //druk dzieci tylko przy ajaxie
  17. $arr = $child->attributes();
  18. echo $child->getName();
  19. echo ("<br>".$arr["value"]). "<br><br>";
  20. }
  21. exit();
  22. }
  23.  
  24. ?>
Bart123
Działa:) Dzięki wielkie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.