我正在开发一个目前有基于表格的布局的网络应用程序.理想情况下,我想转向纯粹的CSS,或者失败,这是一种混合的表格和CSS布局*.
我试图了解css布局和定位,撞到了墙上.我遇到的主要问题是,根据应用程序的状态,我在布局的"部分"中出现了不同的东西 - 可能包含在div或表中的内容.例如,我可能有一些文本和链接,然后在用户交互后,可能有表单,表格,一些图像,不同的文本等.任何时候我找到一个CSS解决方案,它是一个固定元素布局,或者在特定情况下工作等等.换句话说,它们不是强有力的解决方案.
从这里寻找单一真实布局,作者关于"跨网格/列的元素的垂直放置":"设计师面临选择依赖于特定高度的元素,使用表格或根本不打扰." 这是真的?在我的应用程序中,我不能依赖于特定高度的元素.
当我有各种各样的hieghts(实际上是相当多的网站)时,我是否会回到桌子上.我注意到,备受尊敬的人和组织完成的相当多的网站在某些地方使用表格进行布局,而不仅仅是表格数据!这个网站包括.
我有几个类基本上是数据库行的接口.由于该类假定行已经存在(__construct期望字段值),因此有一个公共静态函数允许创建行并返回该类的实例.
这是一个伪代码(因此存在错误和缺少改进)示例:
class fruit {
public $id;
public function __construct( $id ) {
if ( ! is_numeric($id) ) {
throw new Exception("Id is not numeric.");
}
$this->id = $id;
$sql = "SELECT * FROM Fruits WHERE id = $id";
...
$this->arrFieldValues[$field] = $row[$value];
}
public function __get( $var ) {
return $this->arrFieldValues[$var];
}
public function __set( $var, $val ) {
$sql = "UPDATE fruits SET $var = " . mysql_real_escape_string($val) . " WHERE id = $this->id";
}
public …Run Code Online (Sandbox Code Playgroud) 我正在寻找像 sprintf() 这样的函数,除了使用 sprintf() 您按参数顺序绑定值之外,我想要一些可以按名称绑定变量的东西。所以,如果我有 string "Hello $name! We're please to have you visit, $name!",你可以传递一个数组或其他东西并从中获取结果字符串。
类似于 PDO 语句,但仅用于纯字符串,而不是数据库查询。我可以使用什么?
我有一个来自SQL Server的管道分隔转储文件,我想将它导入MySQL.这些行由分隔\r\n,并且该序列也出现在某些字段中!所以我想使用正则表达式来查找实际的行并从中做出INSERT声明.
但是,我在匹配字符串中包含分隔符时遇到问题.我以为使用PREG_SPLIT_DELIM_CAPTURE会做的伎俩,但显然我做错了.我的分隔符是三个空格,后跟三个数字,这实际上是行所需的id:
$ cat test.php
<?
$string = ' 897|a|Hello\r\n 583|b|Line\r\nBreak\r\n 332|c|Yet\r\nMore\r\nLine\r\nBreaks\r\n';
$lines = preg_split( '/ \d{3}\|/', $string, NULL, PREG_SPLIT_DELIM_CAPTURE);
print_r($lines);
$ php test.php
Array
(
[0] =>
[1] => a|Hello\r\n
[2] => b|Line\r\nBreak\r\n
[3] => c|Yet\r\nMore\r\nLine\r\nBreaks\r\n
)
Run Code Online (Sandbox Code Playgroud)
我的分隔符丢失了.
$ php -v
PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者我如何得到我想要的东西?
Can't use function return value in write context在尝试empty(strip_tags($string))使用三元语句中的条件作为赋值时,我得到了错误.所以为了测试,我摆脱了任务和三元语句.但是,当它显然不在写入上下文中时,我仍然会收到此错误.
想想看,我不确定是什么write context意思 - 我认为这与作业有关,但我不能说我肯定知道.
为什么这不能像我认为的那样工作?这对我来说似乎很直截了当.我错过了什么?
$ cat test.php
<?
$string = "<br/>";
if ( empty(strip_tags($string)) ) {
echo "It's empty.\n";
} else {
echo "It's not empty.\n";
}
$ php test.php
PHP Fatal error: Can't use function return value in write context in test.php on line 5
Run Code Online (Sandbox Code Playgroud) 我正在编写一组使用ftp和ftps(而不是sftp)协议处理简单文件上传的类.
由于在PHP中使用ftp和ftps之间的唯一区别是connect函数,我认为我可以在表单中使用变量函数$connection_function($host);,其中$connection_function包含任一值ftp_connect()或ftp_ssl_connect().
我做了一个抽象类来决定使用哪个.为了清晰起见,我写道:
abstract class uploader {
protected $connection_function;
public function __construct($protocol) {
if ( $protocol == "ftp" ) {
$this->connection_function = "ftp_connect";
} elseif ( $protocol == "sftp" ) {
$this->connection_function = "ftp_ssl_connect";
}
}
public function upload($host, $file, ... ) {
$conn = $this->connection_function($host);
}
}
class ftp_uploader extends uploader {
parent::__construct("ftp");
}
class ftps_uploader extends uploader {
parent::__construct("ftps");
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误
PHP Fatal error: Call to undefined method ftp_uploader::connection_function()
这显然来自公共函数上传($ …
我在网站上使用set_cookie().添加一些功能后,我收到Warning: Cannot modify header information - headers already sent by...错误.它引用的标题所引用的行号是set_cookie()所在的行!我检查过,它没有被调用两次.
如何追踪这些过早的标题?我查看了源代码,并且在错误消息开始之前没有看到任何流浪字符或任何东西(我正在使用xdebug,所以第一件事就是a
,我认为是我,但实际上是xdebug消息的开头).我已经为我的代码添加了额外的echo等等 - 什么都没有.
PHP可以告诉我标题何时何地开始?或者他们是否真的从set_cookie线开始,如果是这样,我是如何让自己陷入这种情况的,我该怎么走出去?
编辑:我不确定我可以粘贴代码 - 你只想要set_cookie()行吗?我认为标题是在那之前出来的.在此之前还有很多事情要进行实例化.而且我也不认为我可以发布所有课程和内容 - 你知道,专有信息;)
编辑:我已经摆脱了所有终止分隔符(所有?>s)并确保每个包含文件的第一个字符是<?.这令人沮丧!在我做这些最近的改变之前它正在工作:(((
另外,为什么不起作用headers_sent()?
if ( headers_sent($filename, $linenum) ) {
echo "headers sent: $filename:$linenum.";
}
set_cookie(...);
Run Code Online (Sandbox Code Playgroud)
给
headers sent: :0.
Run Code Online (Sandbox Code Playgroud) 我有一个数据库,其中有几个表有一列email用于存储电子邮件地址.因为这是用于调查,所以很多值都是相同的,更可能在名称,地址等方面相同.
我应该只有一个主Emails表,然后是一个email_id列吗?这样我只存储一次电子邮件字符串,而不是多次存储在表中.但是,如果我想确定我只存储唯一的电子邮件,那么索引检查字符串的唯一性的长度是不是有一些限制,因此我可以存储多个长电子邮件地址的副本?
在调查数据库中,我们存储他们提交的电子邮件地址.如果他们选择加入邮件列表,我们会将这些唯一的(每个成员身份一封电子邮件)存储在邮件列表成员资格表中,因此该表中可能有多个相同的地址,具体取决于他们加入的俱乐部数量.现在我正在添加一个表来跟踪退回电子邮件,因为这是电子邮件地址的属性,而不是调查或邮件列表成员资格.我在想,"这是很多字符串连接!"
这是"One True Lookup Table"的形式吗?
我正在使用Drupal在PHP中进行自动化测试.这是一个有两个我关心的方法的课:pass()和fail().每个在结果页面上产生一个单独的行,指示特定操作是通过还是失败,例如
if ( $value == "expected_value" ) {
$this->pass("Looking for expected value");
} else {
$this->fail("Looking for expected value");
}
Run Code Online (Sandbox Code Playgroud)
我注意到上面的内容是它有点冗长.我想做三元分配之类的事情,而只是决定调用哪个函数.就像是:
$function = ($value == "expected_value") ? "pass" : "fail" ;
$this->$function("Looking for expected value.");
Run Code Online (Sandbox Code Playgroud)
这是我能说出这种逻辑的最简洁,优雅的方式吗?我试过了
$this->(($value == "expected_value") ? "pass" : "fail")("Looking for expected value.");
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个解析错误.有没有办法将它归结为一行,如三元分配?
编辑我所知道的冗长不是if-else结构,而是我重复两次相同的信息.在我看来应该有一种表达方式,我只声明一次消息.当然我可以将它放在一个变量中,但这会占用额外的空间,我也会将它传递两次.
这是构建我的问题的另一种方式:有没有一种方法可以定义这个逻辑而只表达Looking for expected value一次?
php ×7
css ×1
data-binding ×1
database ×1
function ×1
header ×1
layout ×1
oop ×1
preg-split ×1
setcookie ×1
string ×1
strip-tags ×1