Как я могу остановить загрузку дубликата информации в MySQL - PullRequest
0 голосов
/ 31 августа 2011

Я новичок в php, поэтому идите медленно (пожалуйста). У меня настроен код, позволяющий пользователям вводить URL-адрес видео на YouTube и размещать это видео на одной из страниц веб-сайта. Единственная проблема заключается в том, что я не могу понять, как остановить загрузку повторяющихся видео. Большая часть кода MySQL была написана Dreamwevaer. Я сделал несколько попыток, чтобы остановить дубликаты, но я думаю, что что-то упустил. Поэтому кто-то может дать мне инструкции о том, как добавить что-то, что остановит загрузку нескольких копий одной и той же вещи. БЛАГОДАРНОСТЬ.

Вот мой код:

<?php require_once('../Connections/Main.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_Main, $Main);
$query_youtube = "SELECT video_id FROM youtube";
$youtube = mysql_query($query_youtube, $Main) or die(mysql_error());
$row_youtube = mysql_fetch_assoc($youtube);
$totalRows_youtube = mysql_num_rows($youtube);

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

    $pieces = explode("=", $_POST['url']);
    $Ndone = $pieces[1];
    $pieces = explode("&", $Ndone);
    $done = $pieces[0];
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "youtube")) {

  $insertSQL = sprintf("INSERT INTO youtube (video_id) VALUES (%s)",
                       GetSQLValueString($done, "text"));

  $Result1 = mysql_query($insertSQL, $Main) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>
<style type="text/css">
.text_box {
    text
    font-size: 9px;
    color: #000;
    }
</style>
<body>
  <?php 
if (isset($_POST['url'])){
    echo "YouTube Video Submited";
    }
?>
  <form action="<?php echo $editFormAction; ?>" name="youtube" height="100px" method="POST" id="youtube">
    <span id="url">
    <input type="text" class="text_box" value="type in url of video " name="url" id="url2" />
    <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldInvalidFormatMsg">Invalid format.</span></span>
    </input>
    <input type="submit">
    <input type="hidden" name="MM_insert" value="youtube" />
    </p>
    </input>
  </form>
  <?php ?>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("url", "url", {validateOn:["blur"]});
</script>
</body>
</html>
<?php
mysql_free_result($youtube);
?>

1 Ответ

0 голосов
/ 31 августа 2011

Без чтения всего вашего блока кода вы ищете следующее утверждение: INSERT ... ON DUPLICATE KEY UPDATE .Столбец базы данных должен быть индексом или первичным ключом.Если вы попытаетесь вставить его дважды, он выполнит обновление вместо вставки.

Редактировать: Со стороны PHP вы можете захотеть заглянуть в parse_url () и удалитьвсе ненужные теги.Возможно, вместо того, чтобы хранить весь URL-адрес, вы должны хранить только фактический уникальный идентификатор видео.Например, вместо хранения http://www.youtube.com/watch?v=Xqghpm4gXf4&feature=feedrec_grec_index, просто сохраните Xqghpm4gXf4, а затем заново скомпилируйте URL из этой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...