Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> button onClick - Echo w echo, Jak to zapisać by działało?
Bart123
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jaki efekt/kod chcesz uzyskać?
Go to the top of the page
+Quote Post
Bart123
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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>';




?>




Ten post edytował Bart123 12.05.2014, 21:07:32
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Bart123
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Bart123 13.05.2014, 11:54:28
Go to the top of the page
+Quote Post
timon27
post
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował timon27 13.05.2014, 17:09:04
Go to the top of the page
+Quote Post
Bart123
post
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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

Ten post edytował Bart123 13.05.2014, 17:50:40
Go to the top of the page
+Quote Post
timon27
post
Post #8





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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

Ten post edytował timon27 13.05.2014, 19:21:15
Go to the top of the page
+Quote Post
Bart123
post
Post #9





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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?

Ten post edytował Bart123 15.05.2014, 19:27:25
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  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.


Go to the top of the page
+Quote Post
Bart123
post
Post #11





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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ę...

Ten post edytował Bart123 15.05.2014, 19:47:40
Go to the top of the page
+Quote Post
trueblue
post
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Popraw trzy powyższe błędy, do rady nie trzeba się stosować, aby skrypt działał.
Go to the top of the page
+Quote Post
Bart123
post
Post #13





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
trueblue
post
Post #14





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie wygląda tak.
Zmień linijki w kodzie, na te które Ci podałem.
Go to the top of the page
+Quote Post
Bart123
post
Post #15





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


<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...
Go to the top of the page
+Quote Post
trueblue
post
Post #16





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. function ajax(file,wynik){

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

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


Go to the top of the page
+Quote Post
Bart123
post
Post #17





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


<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>';







?>


Go to the top of the page
+Quote Post
trueblue
post
Post #18





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A co z trzecią poprawką?

I kolejna:
  1. onclick='ajax(\"".$xml."\",\"".$wynik."\")'


Ten post edytował trueblue 15.05.2014, 20:01:40
Go to the top of the page
+Quote Post
Bart123
post
Post #19





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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

Ten post edytował Bart123 15.05.2014, 20:05:01
Go to the top of the page
+Quote Post
trueblue
post
Post #20





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Funkcję ajax trzeba objąć w tagi <script>.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 18:03