Здравствуйте, у меня возникла небольшая проблемка.... PHP: <?php if(isset($_POST['admin'])) {$admin = $_POST['admin'];} if(isset($_POST['name_mgb'])) {$name_mgb = $_POST['name_mgb'];} if(isset($_POST['email'])) {$email = $_POST['email'];} if(isset($_POST['addrec'])) {$addrec = $_POST['addrec'];} if(isset($_POST['shapka_mgb'])) {$shapka_mgb = $_POST['shapka_mgb'];} if(isset($_POST['fcolor'])) {$fcolor = $_POST['fcolor'];} if(isset($_POST['tcolor'])) {$tcolor = $_POST['tcolor'];} if(isset($_POST['bstyle'])) {$bstyle = $_POST['bstyle'];} //if(shapka_mgb== шапка - картинка, находящаяся в определённой папке и имеющая определённое имя... if($fcolor==1) {$fc="<img src='images/red.gif'>";} //выбор цвета фона if($fcolor==2) {$fc="<img src='images/blue.gif'>";} if($fcolor==3) {$fc="<img src='images/green.gif'>";} if($fcolor==4) {$fc="<img src='images/yellow.gif'>";} if($fcolor==5) {$fc="<img src='images/white.gif'>";} if($tcolor==1) {$tc=NULL;} //выбор цвета таблицы if($tcolor==2) {$tc="<img src='images/green.gif'>";} if($tcolor==3) {$tc="<img src='images/yellow.gif'>";} if($bslyle==1) {$bs="kvadrat";} //выбор стиля кнопки if($bstyle==2) {$bs="oval";} if($bstyle==3) {$bs="gold";} if($_POST['create']){ //создание:папки, файлов внутри неё, а это show.php, admin.php, add.php, delete.php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli(SERVER, USERNAME, PASSWORD, DBNAME); $q="create table if not exists $addrec( 'id' int(4) NOT NULL auto_increment, 'name' char(25) default NULL, 'city' char(30) default NULL, 'email' char(30) default NULL, 'date' datetime default NULL, 'message' text, PRIMARY KEY ('id') )"; $res=$link->query($q); mkdir($addrec); $show=fopen($addrec."/show.php", "a+"); fputs($show, " <html> <head> <title>myguestbook</title> <link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\"> </head> <body bgcolor=$fc> <div align=center><img src=$shapka></div><br> </body> </html> <?php define (\"SERVER\", \"localhost\"); define (\"USERNAME\", \"root\"); define (\"PASSWORD\", \"123\"); define (\"DBNAME\", \"gbook\"); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); $res = mysqli_query($link, \"select * from $addrec\"); $rows = mysqli_num_rows($res); echo \"<table width=700 height=250 border=0 align=center class=table>\"; echo \"<tr><td height=60 background=top.jpg></td></tr>\"; echo \"<tr><td height=130 valign=top class=center >\"; echo \"<table align=center width=600 border=0>\"; echo \"</table>\"; echo\"</td></tr><tr><td height=60 background=bottom.jpg></td></tr></table>\"; echo \"<br><div align=center><form action=add.php method=post> <input type=submit class=$bs value=Добавить name=addrec></form></div>\"; echo \"<br>\"; echo \"<br><div align=center>Всего сообщений: \".$rows; echo \"<br>Михайлов Кирилл ©</div>\"; mysqli_free_result($res); mysqli_close($link); ?>"); fclose($show); } ?> Дело в том, что этот скрипт должен создавать новый скрипт show.php в папке $addrec(что пользователи введут). И вроде всё получается, но тупик в ковычках. $show=fopen($addrec."/show.php", "a+"); fputs($show, "тут текст"); Получается, что двойные ковычки уже использовались в fputs, значит текст внутри них должен содержать \" ковычки... А что делать с одинарными ковычками?
Присвой весь свой текст в переменную, потом сохраняй её. PHP: <?php $txt="тут текст $peremennaya"; //или так $txt=<<<TXT тут текст $peremennaya TXT; //или так $txt=sprintf('тут "т"екст с "%s"', $peremennaya); fputs($show, $txt); без всяких обратных слешей PS. А сохранять в файл лучше функцией file_put_contents
по этому скрипту вышла ошибка Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\WWW\mgb\myguestbook\myguestbook\create_mgb.php on line 70 это там, где начинается echo "<tr bgcolor=$tc><td align=center>".$r['name']."</td><td align=center>".$r['city']."</td><td align=center>".$r['email']."</td>"; PHP: mkdir($addrec); $s=<<<TXT <html> <head> <title>myguestbook</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor=$fc> <div align=center><img src=$shapka></div><br> </body> </html> <?php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); $res = mysqli_query($link, "select * from $addrec"); $rows = mysqli_num_rows($res); echo "<table width=700 height=250 border=0 align=center class=table>"; echo "<tr><td height=60 background=top.jpg></td></tr>"; echo "<tr><td height=130 valign=top class=center >"; echo "<table align=center width=600 border=0>"; for ($i=0; $i < $rows; $i++){ $r = mysqli_fetch_assoc($res); echo "<tr bgcolor=$tc><td align=center>".$r['name']."</td><td align=center>".$r['city']."</td><td align=center>".$r['email']."</td>"; echo "<td align=center>".$r['date']."</td><td align=center><a href=delete.php?n=".$r['id'].''>Удалить</a></td></tr><tr bgcolor=$tc><td align=center colspan=5>".$r['message']."</td></tr>"; } echo "</table>"; echo"</td></tr><tr><td height=60 background=bottom.jpg></td></tr></table>"; echo "<br><div align=center><form action=add.php method=post> <input type=submit class=$bs value=Добавить name=addrec></form></div>"; echo "<br>"; echo "<br><div align=center>Всего сообщений: ".$rows; echo "<br>Михайлов Кирилл ©</div>"; mysqli_free_result($res); mysqli_close($link); ?> TXT; $show=fopen($addrec."/show.php", "a+"); fputs($show, $s); fclose($show); }
вот, упростил код... теперь жалуется на 43 строку PHP: <?php if(isset($_POST['admin'])) {$admin = $_POST['admin'];} if(isset($_POST['name_mgb'])) {$name_mgb = $_POST['name_mgb'];} if(isset($_POST['email'])) {$email = $_POST['email'];} if(isset($_POST['addrec'])) {$addrec = $_POST['addrec'];} if($_POST['create']){ //создание:папки, файлов внутри неё, а это show.php, admin.php, add.php, delete.php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli(SERVER, USERNAME, PASSWORD, DBNAME); $q="create table if not exists $addrec( 'id' int(4) NOT NULL auto_increment, 'name' char(25) default NULL, 'city' char(30) default NULL, 'email' char(30) default NULL, 'date' datetime default NULL, 'message' text, PRIMARY KEY ('id') )"; $res=$link->query($q); mkdir($addrec); $s=<<<TXT <html> <head> <title>myguestbook</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor=whitesmoke> <div align=center><img src=../shapka.gif></div><br> </body> </html> <?php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); $res = mysqli_query($link, "select * from $addrec"); $rows = mysqli_num_rows($res); echo "<table width=700 height=250 border=0 align=center class=table>"; echo "<tr><td height=60 background=top.jpg></td></tr>"; echo "<tr><td height=130 valign=top class=center >"; echo "<table align=center width=600 border=0>"; echo "</table>"; echo"</td></tr><tr><td height=60 background=bottom.jpg></td></tr></table>"; echo "<br><div align=center><form action=add.php method=post> <input type=submit class=button value=Добавить name=addrec></form></div>"; echo "<br>"; echo "<br><div align=center>Всего сообщений: ".$rows; echo "<br>Михайлов Кирилл ©</div>"; mysqli_free_result($res); mysqli_close($link); ?> TXT; $show=fopen($addrec."/show.php", "a+"); fputs($show, $s); fclose($show); } ?>
Ну и путаница. Если у тебя конструкции типа $link=new my... должны быть просто текстом, то нужно экранировать знак $, чтобы он не был воспринят, как переменная. \$link=new my... По-моему, меньше всего проблем с функцией sprintf. Строку-шаблон - в одинарные кавычки. PHP: <?php $s=sprintf('<html> <head> <title>myguestbook</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="%s"> <div align=center><img src="%s"></div><br> </body> </html> <?php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); $res = mysqli_query($link, "select * from $addrec"); $rows = mysqli_num_rows($res); echo "<table width=700 height=250 border=0 align=center class=table>"; echo "<tr><td height=60 background=top.jpg></td></tr>"; echo "<tr><td height=130 valign=top class=center >"; echo "<table align=center width=600 border=0>"; for ($i=0; $i < $rows; $i++){ $r = mysqli_fetch_assoc($res); echo "<tr bgcolor="%s"><td align=center>".$r[\'name\']."</td><td align=center>".$r[\'city\']."</td><td align=center>".$r[\'email\']."</td>"; echo "<td align=center>".$r[\'date\']."</td><td align=center><a href=delete.php?n=".$r[\'id\'].''>Удалить</a></td></tr><tr bgcolor=$tc><td align=center colspan=5>".$r[\'message\']."</td></tr>"; } echo "</table>"; echo"</td></tr><tr><td height=60 background=bottom.jpg></td></tr></table>"; echo "<br><div align=center><form action=add.php method=post> <input type=submit class="%s" value=Добавить name=addrec></form></div>"; echo "<br>"; echo "<br><div align=center>Всего сообщений: ".$rows; echo "<br>Михайлов Кирилл ©</div>"; mysqli_free_result($res); mysqli_close($link); ?>', $fc, $shapka, $tc, $bs);//эти переменные точно существуют? ?>
спасибо))) всё получается, кроме $addrec в создании базы данных и в её использовании, в код(созданный) добавляется переменная $addrec вместо текст, который укажут в форме о_О
а, ну так эту $addrec нужно также вынести, вместо неё поставить %s PHP: <?php $s=sprintf('<html> <head> <title>myguestbook</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="%s"> <div align=center><img src="%s"></div><br> </body> </html> <?php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); $res = mysqli_query($link, "select * from %s"); $rows = mysqli_num_rows($res); echo "<table width=700 height=250 border=0 align=center class=table>"; echo "<tr><td height=60 background=top.jpg></td></tr>"; echo "<tr><td height=130 valign=top class=center >"; echo "<table align=center width=600 border=0>"; for ($i=0; $i < $rows; $i++){ $r = mysqli_fetch_assoc($res); echo "<tr bgcolor="%s"><td align=center>".$r[\'name\']."</td><td align=center>".$r[\'city\']."</td><td align=center>".$r[\'email\']."</td>"; echo "<td align=center>".$r[\'date\']."</td><td align=center><a href=delete.php?n=".$r[\'id\'].''>Удалить</a></td></tr><tr bgcolor="%s"><td align=center colspan=5>".$r[\'message\']."</td></tr>"; } echo "</table>"; echo"</td></tr><tr><td height=60 background=bottom.jpg></td></tr></table>"; echo "<br><div align=center><form action=add.php method=post> <input type=submit class="%s" value=Добавить name=addrec></form></div>"; echo "<br>"; echo "<br><div align=center>Всего сообщений: ".$rows; echo "<br>Михайлов Кирилл ©</div>"; mysqli_free_result($res); mysqli_close($link); ?>', $fc, $shapka, $addrec, $tc, $tc, $bs);//тут важна очерёдность ?>
Если, вдруг, нужно будет менять параметры подключения к бд, а такое часто бывает, то вот это лучше вынести в отдельный файл. conf.php PHP: <?php define ("SERVER", "localhost"); define ("USERNAME", "root"); define ("PASSWORD", "123"); define ("DBNAME", "gbook"); ?> и его инклудить PHP: <?php //... require('conf.php'); defined('PASSWORD')or die('<html><head><title></title></head><body>кыш-кыш</body></html>'); $link=new mysqli (SERVER, USERNAME, PASSWORD, DBNAME); //... ?> Иначе потом в сотнях файлов придётся менять.