За последние 24 часа нас посетили 18838 программистов и 1647 роботов. Сейчас ищут 862 программиста ...

про повторяющиеся поля БД

Тема в разделе "PHP для новичков", создана пользователем writer, 9 ноя 2012.

  1. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Знаю что достал,но серьезно перечитал столько всего и все равно не могу понять как сделать?
    Код (PHP):
    1. <?php
    2. /**/if(empty($_POST['email'])){
    3. $email=0;}else{
    4. $email = $_POST['email'];}
    5. //Если надо вытащить из файла
    6. /*
    7. $email = $_POST['email'];*/
    8.  
    9. $db_host="localhost";  
    10. $db_user="u***";  
    11. $db_password="ku***";   
    12. $db_name = "u***";  
    13.     $db = mysql_connect($db_host,$db_user,$db_password);
    14.         if(!$db) echo 'Ошибка подключения';
    15.     mysql_select_db($db_name);
    16. mysql_real_escape_string($_POST['email']);
    17. /*
    18. $result = mysql_query("INSERT INTO `email` (email) VALUES('$email')");*/
    19. /**/
    20. $file = file('email2.txt');  //открыть файл
    21. $count = count($file); //кол-во строк в файле
    22. for ($i=0; $i<=$count; $i+=1) {
    23. $str = $file[$i]; // $str это и есть твоя строка, дальше производи нужные действия
    24. $email=$str;
    25. $result = mysql_query("INSERT INTO `email` (email) VALUES('$email')");
    26. } 
    27. //Если надо вытащить из файла
    28. if($result) {
    29.     echo '<script type="text/javascript">
    30.    window.close();
    31. </script>';
    32. } else {
    33.     echo 'Запись не обновлена';
    34. }
    35.  
    36. ?>
    Ну много мусора(просто надо и по 1 и из файла много добавлять поэтому есть лишний код) и надо сделать чтобы проверка была на одинаковые поля.
    Суть в том чтобы проверить есть ли уже такое поле и если есть,то не прекращать скрипт а продолжать выполнение,но не заносить неверное поле.

    Обязательно надо будет делать уникальным email поле?
    в БД 2 столбца - емайл и айди.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    :D

    Ну так...
     
  3. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    подскажи как сделать)
    в гугле лажу ниче не нахожу

    Добавлено спустя 16 минут 15 секунд:
    Код (Text):
    1. SELECT     email
    2. FROM         email
    3. GROUP BY email
    4. HAVING      (COUNT(*) > 1)
    нашел такое решение, но хз куда его воткнуть то....)

    Добавлено спустя 7 минут 46 секунд:
    Код (PHP):
    1. for ($i=0; $i<=$count; $i+=1) {
    2. $str = $file[$i]; // $str это и есть твоя строка, дальше производи нужные действия
    3.  
    4. //new kode
    5.  
    6. $result2=mysql_query("SELECT COUNT(email) FROM email WHERE email='$str'")
    7. or die ("<br>Invalid query: " . mysql_error());
    8. if(mysql_result($result2, 0) > 0){ 
    9.         $email=$str+1; 
    10.     } else{
    11. $email=$str;}
    12.  
    13. //close code
    14.  
    15. $result = mysql_query("INSERT INTO `email` (email) VALUES('$email')");
    16. }  
    Если такую фигню замутить то проканает?))))
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    а почему бы не сразу mysql_num_rows?