Tutorial Variable Variables
<?php
$var1 = 'nameOfVariable';
$nameOfVariable = 'This is the value I want!';
echo $$var1;
?>
<?php
$var1 = 'nameOfVariable';
$nameOfVariable = 'This is the value I want!';
echo $$var1;
?>
$url = 'http://example.com';
$validation = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED);
if ( $validation ) $output = 'proper URL';
else $output = 'wrong URL';
echo $output;
This code assumes you are connected to a MySQL database which has a table with Names and Emails. The idea is that it will output a table of every single value from that table, as text inputs. You can then alter the values of these inputs and re-submit, updating all the values in the database.
//get data from db
$sql = mysql_query("SELECT * FROM table");
$count=mysql_num_rows($sql);
//start a table
echo '<form name="form1" method="post" action="">
<table width="292" border="0" cellspacing="1" cellpadding="0">';
//start header of table
echo '<tr>
<th> </th>
<th>Name</th>
<th>Email</th>
</tr>';
//loop through all results
while($r=mysql_fetch_object($sql)){
//print out table contents and add id into an array and email into an array
echo '<tr>
<td><input type="hidden" name="id[]" value='.$r->id.' readonly></td>
<td>'.$r->name.'</td>
<td><input name="email[]" type="text" id="price" value="'.$r->email.'"></td>
</tr>';
}
//submit button
echo'<tr>
<td colspan="3" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>';
// if form has been submitted, process it
if($_POST["Submit"])
{
// get data from form
$name = $_POST['name'];
// loop through all array items
foreach($_POST['id'] as $value)
{
// minus value by 1 since arrays start at 0
$item = $value-1;
//update table
$sql1 = mysql_query("UPDATE table SET email='$email[$item]' WHERE id='$value'") or die(mysql_error());
}
// redirect user
$_SESSION['success'] = 'Updated';
header("location:index.php");
}
Submitted values are not cleaned in this example, as it is assumed only an admin would have access to this type of powerful entry system.
<?php
$zip = zip_open("zip.zip");
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
$fp = fopen("zip/".zip_entry_name($zip_entry), "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
}
}
zip_close($zip);
}
?>
<?php
function trunc($phrase, $max_words) {
$phrase_array = explode(' ',$phrase);
if(count($phrase_array) > $max_words && $max_words > 0)
$phrase = implode(' ',array_slice($phrase_array, 0, $max_words)).'...';
return $phrase;
}
?>
function limit_words($words, $limit, $append = ' …') {
// Add 1 to the specified limit becuase arrays start at 0
$limit = $limit+1;
// Store each individual word as an array element
// Up to the limit
$words = explode(' ', $words, $limit);
// Shorten the array by 1 because that final element will be the sum of all the words after the limit
array_pop($words);
// Implode the array for output, and append an ellipse
$words = implode(' ', $words) . $append;
// Return the result
return $words;
}
This will truncate a longer string to a smaller string of specified length (e.g. the "25" value in the code below) while replacing the middle portion with a separator exactly in the middle. Useful when you need to truncate a string but still show the beginning (e.g. for sorting and because it is most recognizable) and also show the end (perhaps to show a file name).
<?php
$longString = 'abcdefghijklmnopqrstuvwxyz0123456789z.jpg';
$separator = '/.../';
$separatorlength = strlen($separator) ;
$maxlength = 25 - $separatorlength;
$start = $maxlength / 2 ;
$trunc = strlen($longString) - $maxlength;
echo substr_replace($longString, $separator, $start, $trunc);
//prints "abcdefghij/.../56789z.jpg"
?>
This can be used for comments and other from of communication to tell the time ago instead of the exact time which might not be correct to some one in another time zone.
The function only uses unix time stamp like the result of time();
<?php
function ago($time)
{
$periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
$now = time();
$difference = $now - $time;
$tense = "ago";
for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
$difference /= $lengths[$j];
}
$difference = round($difference);
if($difference != 1) {
$periods[$j].= "s";
}
return "$difference $periods[$j] 'ago' ";
}
?>
Technique #2
function _ago($tm,$rcs = 0) {
$cur_tm = time(); $dif = $cur_tm-$tm;
$pds = array('second','minute','hour','day','week','month','year','decade');
$lngh = array(1,60,3600,86400,604800,2630880,31570560,315705600);
for($v = sizeof($lngh)-1; ($v >= 0)&&(($no = $dif/$lngh[$v])<=1); $v--); if($v < 0) $v = 0; $_tm = $cur_tm-($dif%$lngh[$v]);
$no = floor($no); if($no <> 1) $pds[$v] .='s'; $x=sprintf("%d %s ",$no,$pds[$v]);
if(($rcs == 1)&&($v >= 1)&&(($cur_tm-$_tm) > 0)) $x .= time_ago($_tm);
return $x;
}
Needs a time() value, and it will tell you how many seconds/minutes/hours/days/years/decades ago.