勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

短縮URL作成(管理画面)2

      2014/07/03

<?

/*

編集機能追加。もっと短く記述できるようにする。

*/
error_reporting(E_ALL & ~E_NOTICE);
require_once("../../library/database.php");

/*ランダムな英数字を作成するファンクション
http://ameblo.jp/linking/entry-10289895826.html
を使用させて頂きました*/
function makeRandStr($length) {
$str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"'));
for ($i = 0; $i < $length; $i++) {
$r_str .= $str[rand(0, count($str)-1)];
}
return $r_str;
}

//変数の取得
extract($_REQUEST);
if ($mode != "change" && $mode != "change2") {
$form_mode = "registration";
}

//登録があった際の処理
if ($mode == "registration") {
//先にcodeが登録されていないかどうかのチェック
$i = 0;
while ($i <= 0) {
$code = makeRandStr(6);
$sql = '
SELECT code
FROM short_url
WHERE code = "' . $code . '";
';
$row = mysql_query($sql);
$check = mysql_num_rows($row);
$i = ($check == 0) ? 1 : 0;
}
$sql = '
INSERT INTO short_url
(code, url)
VALUES
("' . $code . '", "' . $url . '");
';
mysql_query($sql);
header("Location: ./admin.php?mode=registration2");
//削除処理
} elseif ($mode == "delete") {
$sql = '
DELETE FROM short_url
WHERE seq = ' . $seq . ';
';
mysql_query($sql);
header("Location : ./admin.php?mode=delete2");
//編集ボタンを押した際の処理
} elseif ($mode == "change") {
$sql = '
SELECT *
FROM short_url
WHERE seq = ' . $seq . ';
';
$row = mysql_query($sql);
while($result = mysql_fetch_array($row)){
$change_sql = $result["url"];
$change_seq = $result["seq"];
}
$form_mode = "change2";
//編集を行う際の処理
} elseif ($mode == "change2") {
$sql = '
UPDATE short_url
SET url = "' . $url . '"
WHERE seq = ' . $seq . ';
';
mysql_query($sql);
header("Location: ./admin.php?mode=change3");
}

//submitボタン表示用
if ($mode == "change" || $mode == "change2") {
$submit_name = "変更";
} else {
$submit_name = "作成";
}

//表示用
$sql = '
SELECT *
FROM short_url;
';
$row = mysql_query($sql);
$check = mysql_num_rows($row);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transtional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<meta http-equiv="content-type" content="text/html"/>
<meta cherset = "UTF-8">
<html lang="ja">
<head>
<title>短縮URL</title>
<style>
body,table {
font-size : 11px;
}
table,th,td,tr {
text-align : center;
border-style : solid;
border-width : 1px;
border-collapse: collapse;
}
th {
background-color : #DCDCDC;
}
tr:hover {
background-color: #F5F5F5;
}
.code {
width : 100px;
}
.url {
width : 400px;
}
.short_url {
width : 300px;
}
.mode {
width : 50px;
}
</style>
<script>
function delete_check(del_seq){
if (confirm("削除しますか?")) {
location.href = "./admin.php?mode=delete&seq="+del_seq;
} else {
return false;
}
}
</script>
</head>
<body>
<h1>短縮URL</h1>
<?
//登録・削除・編集完了表示用
if ($mode == "registration2") {
echo '<font color="red">登録が完了しました</font>';
} elseif ($mode == "delete2") {
echo '<font color="red">削除が完了しました</font>';
} elseif ($mode == "change3") {
echo '<font color="red">編集が完了しました</font>';
}
?>
<form method="post" action="admin.php">
<input type="hidden" name="mode" value="<?=$form_mode;?>">
<input type="hidden" name="seq" value="<?=$change_seq;?>">
URL : <input type="text" name="url" size="70" value="<?=$change_sql;?>">
<input type="submit" value="<?=$submit_name;?>">
</form><br>
<?
if ($check <= 0) {
echo "登録がありません。";
} else {<br
/>            echo '
<table>
<tr>
<th class="code">短縮コード</th>
<th class="url">登録URL</th>
<th class="short_url">短縮URL</th>
<th class="mode">削除</th>
<th class="mode">編集</th>
</tr>
';
while ($result = mysql_fetch_array($row)) {
echo '
<form method="post" action="./admin.php">
<input type="hidden" name="seq" value="'.$result["seq"].'">
<tr>
<td> ' , $result["code"] , '</td>
<td> ' , $result["url"] , ' </td>
<td>http://aaa/php/short_url/?' . $result["code"] . '</td>
<td><input type="button" onclick="return delete_check(' , $result["seq"] , ')" value="削除"></td>
<td><input type="button" onclick="location.href=\'admin.php?mode=change&seq=' . $result["seq"] . '\'" value="編集"></td>
</tr>
</form>
';
}
echo '</table>';
}
?>
</body>
</html>

 - PHP

  関連記事

PHPを使えないサーバから使えるサーバーに値を渡す方法

PHPが使えないサーバーから使えるサーバーに値を渡したい場合があった。ajaxと ...

PHPで多次元連想配列のキーを指定してソート

やりたかった事は、 ・多次元配列があってcodeというキーでソートしたい という ...

CodeIgniterでログをファイルに出力する

Codeigniterで何らかのエラーが発生した際に分かりやすい形でファイルに情 ...

jQuery.uploadでリアルタイムプレビュー

やりたい事は、 ・<input type="file">で画像を選択 ...

ランダム表示のページング

MySQLからデータを持ってくる際に、 ランダムな表示を行ってほしいと言われた。 ...

PHPで画像を上下反転させ保存する

やりたかった事は、下記の通り。 ・既にフォルダに保存されている画像を上下反転させ ...

エラー管理まとめ

■エラーログをとる。 error_reporting(E_ALL ^ E_NOT ...

file_get_contentsを使用する際にタイムアウト設定

20秒に1回自動でリロードするページにて file_get_contentsを使 ...

数値を3桁とかでカンマ区切りにする

見たこと無い関数が業務中にあったのでメモ。 number_format ■参考サ ...

PHPのintval

intvalという見たこと無い関数があったのでメモ。 ■リファレンス http: ...