2014-10-10 2 views
1

나는 2 개의 테이블 usersshort_style을 가지고 있습니다. 표 users여러 행의 ID가 같을 때 행을 삭제하는 방법

필드 표 users에 사용자에 의해 삽입

id int primary not null auto increment 
username 
password 
firstname 
lastname 

데이터 :

users 
id  username  password  firstname  lastname 
1  jsmith  md5hash  john   smith 
2  jbrown  md5hash  jane   brown 
테이블 short_style에 사용자에 의해 삽입

데이터 :

short_style 
id  style_name  style_cost  style_time  number_of_styles 
1  bald   10    30    1 
2  wash   5    15    2 
1  shave   12    30    3 
2  line   8    15    4 
1  wash   Free   15    6 
2  color   20    30    7 

I 수 h 사용자가 새 스타일을 추가하면 해당 코드가 완벽하게 작동합니다.

사용자가 데이터를 업데이트하도록 할 수 있습니다. 그 코드는 완벽하게 작동합니다.

유일한 데이터이므로 number_of_styles 데이터를 타겟팅하는 방법을 모르기 때문에 사용자 데이터를 삭제하는 데 어려움이 있습니다.

내가 알기에는 (이 짧은 시간에) DELETE은 2 개의 매개 변수 인 표 이름과 표 행 (가정)을 사용합니다.

어떻게하면됩니까? 긴 HTML 죄송합니다

, 나는 아직 코멘트에 HTML을 표시하는 방법을 알아 내지 못했다. 내가 가진 무엇 :

<?php 
if (isset($_POST['delete_servicename'])&& 
isset($_POST['update_category'])) { 

$delete_servicename = $_POST['delete_servicename']; 
$category = $_POST['update_category']; 

$atta = '_name'; 
$delete = "$category$atta"; 

$query = "SELECT $delete FROM $category  WHERE `id`='".$_SESSION['user_id']."'"; 
$query_run = mysql_query($query); 
if(mysql_num_rows($query_run)==1) { 
$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."'"; 
} 
} 
?> 

<form action="services_update.php" method="POST"> 
    <div class="a_u_d_sort"> 
    <ul> 
     <li class="a_u_d_sort_left"> 
     <p>Category:</p> 
     </li> 

     <li class="a_u_d_sort_right"> 
     <select name="update_category"> 
      <option value="">select</option> 
      <option value="short_style">Short Style</option> 
      <option value="medium_style">Medium Style</option> 
      <option value="long_style">Long Style</option> 
      <option value="other_services">Other Service</option> 
     </select> 
     </li> 
    </ul> 
    </div> 
    <div class="a_u_d_sort"> 
    <ul> 
     <li class="a_u_d_sort_left"> 
     <p>Service Name:</p> 
     </li> 

     <li class="a_u_d_sort_right"> 
     <input type="text" name="delete_servicename"></input> 
     </li> 
    </ul> 
    </div> 
    <button class="add" type="submit">Delete</button> 
    </form> 
+2

는, 제발 ['mysql_로 사용하지 마십시오 *'기능 (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), 그들은 더 이상 없다 (공식적으로 권장되지 않음) (https://wiki.php.net/rfc/mysql_deprecation). 대신 [prepared statements] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 알아보고 [PDO] (http://us1.php.net/pdo) 또는 [MySQLi] (http : //)를 사용하십시오. us1.php.net/mysqli). [이 기사] (http://php.net/manual/en/mysqlinfo.api.choosing.php)를 사용하면 결정하는 데 도움이됩니다. –

+2

delete는'where' 절을 사용할 수 있습니다. 이것은'select'에서와 똑같이 작동 할 것입니다. 게다가, 당신은 삭제의 SQL 오류가 있습니다. 'WHERE $ 아이디 = $ results'? 'id'는 PHP 변수가 아닌 테이블의 필드입니다. PHP는 변수가 될 것으로 예상되는 경우, 그리고 희망 ..., 그것은 정의되지 않은 변수이고 효과적으로 WHERE 내가 아는 = $ results' –

+0

@JayBlanchard하지만 난 그냥 배우고 나는뿐만 아니라이 배우고 싶은'하고있는 나는 다음 주에이 사이트에서 일을 잘할 수 없다.나는 PDO MYSQLI로 업데이트 할 계획을 가지고있다. – tru

답변

1

당신은 항상 당신이 항상 행을 삭제할 때 사용하는 고유 ID를 가질 수 있도록 작성하는 모든 테이블에 대해 자동 증가 필드를 사용합니다.

그것이 당신을위한 옵션이 아니라면, 당신은 당신이 올바른 행을 삭제하고 있는지 확인하기 위해 삭제 쿼리를 수정해야합니다 :

$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."' AND `style_name` = $stylename AND style_cost = $stylecost AND style_time = $styletime AND number_of_styles = $numberofstyles LIMIT 1"; 

편집

내가하지 않았다을 귀하의 number_of_styles이 자동 증가했다는 것을 깨닫지 못합니다. 이 경우 간단히 다음을 수행 할 수 있습니다.

다른 모든 필드를 언급 할 필요가 없으므로 간단합니다.

+0

그쪽으로 nk 당신 너무 대단히 @Adelphia, number_of_styles는 자동 증가입니다 .... 나는 내가 사용할 수있는 것을 알지 못했습니다 ... 그게 부질의보다 훨씬 낫습니다 .. PhpMyAdmin에서 당신의 방식에 지쳐서 아무런 문제가 없습니다. PHP 페이지에서 그것을 시도하고 놀랍게도 내가 2 id를 결합하여 style_name을 대상으로 독특하게 작동합니다. 내 문제를 잘 이해했다. 내가 상상하기를 바란다. 그러나 나는 명성 포인트가 충분하지 않다 ... 누군가가 환영받은 원조가 될 그의 해결책을 업 그레 이드 할 수 있다면. e = 답장을 보내 주신 모든 분들께 감사드립니다. 건배 – tru

+0

@tru 내 대답이 도움이 되었다면 체크 표시를 눌러 선택하십시오. 당신이한다면 점수를 얻습니다;) 기꺼이 도와 드리겠습니다. –

+0

@tru 내 업데이트도 참조하십시오. –