Это мой первый вопрос, задающий вопрос здесь, и я также новичок в PHP и простой XML, но я решил узнать это.PHP, simplexml и foreach
проблема: мой первый Еогеасп работы ФАБ ....
2-й один обманывает на publiccss.tpl в обоих директорий и игнорировать другие 2 .....
$xml = simplexml_load_file($target_path);
if($xml['product'] == 'style'){
$sname = str_replace(' ','_',$xml['sname']);
$vers = $xml['version'];
$sp = 'library/templates/'.$sname;
if($i = mysql_query("INSERT INTO skins VALUES ('". mysql_insert_id() ."','". str_replace('_',' ',$sname) ."','". $vers ."','".$sp."')")){
if(!is_dir($sp)) mkdir($sp,0777);
foreach($xml->templategroup as $dir){
$dir = str_replace(' ','_',$dir['name']);
$p = 'library/templates/'.$sname.'/'.$dir;
if(!is_dir($p)) mkdir($p,0777);
foreach($xml->templategroup->template as $tpl){
$p = 'library/templates/'.$sname.'/'.$dir.'/'.str_replace(' ','_',$tpl['name']);
$fp = fopen($p,"wb");
fwrite($fp,$tpl);
fclose($fp);
}
}
}else{
echo mysql_error();
}
}else{
echo 'Not a style';
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<style sname="DSkin" version="1.0.0" product="style">
<templategroup name="CSS Templates">
<template name="PublicCSS.tpl" date="" username="Andy?">
#body{}
</template>
</templategroup>
<templategroup name="Forum Home">
<template name="Forumhome.tpl" date="" username="Andy?">
Main index page.
</template>
<template name="Forumhome_L.tpl" date="" username="Andy?">
Level one forums.
</template>
</templategroup>
</style> $xml = simplexml_load_file($target_path);
if($xml['product'] == 'style'){
$sname = str_replace(' ','_',$xml['sname']);
$vers = $xml['version'];
$sp = 'library/templates/'.$sname;
if($i = mysql_query("INSERT INTO skins VALUES ('". mysql_insert_id() ."','". str_replace('_',' ',$sname) ."','". $vers ."','".$sp."')")){
if(!is_dir($sp)) mkdir($sp,0777);
foreach($xml->templategroup as $dir){
$dir = str_replace(' ','_',$dir['name']);
$p = 'library/templates/'.$sname.'/'.$dir;
if(!is_dir($p)) mkdir($p,0777);
foreach($xml->templategroup->template as $tpl){
$p = 'library/templates/'.$sname.'/'.$dir.'/'.str_replace(' ','_',$tpl['name']);
$fp = fopen($p,"wb");
fwrite($fp,$tpl);
fclose($fp);
}
}
}else{
echo mysql_error();
}
}else{
echo 'Not a style';
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<style sname="DSkin" version="1.0.0" product="style">
<templategroup name="CSS Templates">
<template name="PublicCSS.tpl" date="" username="Andy?">
#body{}
</template>
</templategroup>
<templategroup name="Forum Home">
<template name="Forumhome.tpl" date="" username="Andy?">
Main index page.
</template>
<template name="Forumhome_L.tpl" date="" username="Andy?">
Level one forums.
</template>
</templategroup>
</style>
Теперь я, м-ки см: Примечание: Попытка получить свойство не-объекта в C: \ XAMPP \ HTDOCS \ chris \ admin.php в строке 66 Предупреждение: недопустимый аргумент, предоставленный foreach() в C: \ xampp \ htdocs \ chris \ admin.php в строке 66 –
@ChrisJamesReynolds Ах, вы перезаписываете переменную '$ dir '; см. отредактированный ответ. Вы должны быть в состоянии работать оттуда - ключ к отладке - это понимание логики. – IMSoP
@MMSoP, и есть гениальный, но это работает. но он все еще обманывает publiccss, почему? –