Visualizzazione dei risultati da 1 a 2 su 2

Discussione: problema update mysql

  1. #1

    problema update mysql

    con questo script faccio l'update di alcuni campi di un db... il problema è che modificando un un record (che corrisponde ad un utente) mi fa l'update del nuovo valore a tutti gli utenti del database! nn ne vengo a capo
    grazie
    Codice PHP:
    <?php
    include 'auth.inc.php';

    if (
    $_SESSION['admin_level'] < 1) {
        
    header('Refresh: 5; URL=user_personal.php');
        echo 
    '

    [b][/b]You are not authorized for this page.[/b]</p>'
    ;
        echo 
    '

    You are now being redirected to the main page. If your browser ' 
    .
            
    'doesn\'t redirect you automatically, <a href="main.php">click ' .
            
    'here</a>.</p>';
        die();
    }

    include 
    'db.inc.php';

    $db mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASSWORD) or 
        die (
    'Unable to connect. Check your connection parameters.');
    mysql_select_db(MYSQL_DB$db) or die(mysql_error($db));

    $hobbies_list = array('Computers''Dancing''Exercise''Flying''Golfing',
        
    'Hunting''Internet''Reading''Traveling''Other than listed');

    if (isset(
    $_POST['submit']) && $_POST['submit'] == 'Update') {
        
    // filter incoming values
        
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
        
    $user_id = (isset($_POST['user_id'])) ? $_POST['user_id'] : '';
        
    $password = (isset($_POST['password'])) ? $_POST['password'] : '';
        
    $first_name = (isset($_POST['first_name'])) ? trim($_POST['first_name']) : '';
        
    $last_name = (isset($_POST['last_name'])) ? trim($_POST['last_name']) : '';
        
    $email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
        
    $city = (isset($_POST['city'])) ? trim($_POST['city']) : '';
        
    $state = (isset($_POST['state'])) ? trim($_POST['state']) : '';
        
    $hobbies = (isset($_POST['hobbies']) && is_array($_POST['hobbies'])) ?
            
    $_POST['hobbies'] : array();

        
    // delete user record
        
    if (isset($_POST['delete'])) {
            
    $query 'DELETE FROM site_user_info WHERE user_id = ' $user_id;
            
    mysql_query($query$db) or die(mysql_error());
            
            
    $query 'DELETE FROM site_user WHERE user_id = ' $user_id;
            
    mysql_query($query$db) or die(mysql_error());
    ?>
    <html>
     <head>
      <title>Update Account Info</title>
     </head>
     <body>
      

    [b]The account has been deleted.[/b]</p>
      

    [url="admin_area.php"]Click here[/url] to return to the admin area.</a></p>
     </body>
    </html>
    <?php
            
    die();
        }
        
        
    $errors = array();
        if (empty(
    $username)) {
            
    $errors[] = 'Username cannot be blank.';
        }
        
        
    // check if username already is registered
        
    $query 'SELECT username FROM site_user WHERE username = "' .
            
    $username '" AND user_id != ' $user_id;
        
    $result mysql_query($query$db) or die(mysql_error());
        if (
    mysql_num_rows($result) > 0) {
            
    $errors[] = 'Username ' $username ' is already registered.';
            
    $username '';
        }
        
    mysql_free_result($result);

        if (empty(
    $first_name)) {
            
    $errors[] = 'First name cannot be blank.';
        }
        if (empty(
    $last_name)) {
            
    $errors[] = 'Last name cannot be blank.';
        }
        if (empty(
    $email)) {
            
    $errors[] = 'Email address cannot be blank.';
        }

        if (
    count($errors) > 0) {
            echo 
    '

    <strong style="color:#FF000;">Unable to update the ' 

                
    'account information.[/b]</p>';
            echo 
    '

    Please fix the following:</p>'
    ;
            echo 
    '<ul>';
            foreach (
    $errors as $error) {
                echo 
    '[*]' $error '';
            }
            echo 
    '[/list]';
        } else {
            
    // No errors so enter the information into the database.

            
    if (!empty($password)) {
                
    $query 'UPDATE site_user SET
                        password = PASSWORD("' 
    .
                            
    mysql_real_escape_string($password$db) . '")
                    WHERE
                        user_id = ' 
    $user_id;
                
    mysql_query($query$db) or die(mysql_error());
            }

            
    $query 'UPDATE site_user u, site_user_info SET
                username = "' 
    mysql_real_escape_string($username$db) . '",
                first_name = "' 
    mysql_real_escape_string($first_name$db) . '",
                last_name = "' 
    mysql_real_escape_string($last_name$db) . '",
                email = "' 
    mysql_real_escape_string($email$db) . '",
                city = "' 
    mysql_real_escape_string($city$db) . '",
                state = "' 
    mysql_real_escape_string($state$db) . '",
                hobbies = "' 
    mysql_real_escape_string(join(', '$hobbies), $db) . '"
              WHERE
                u.user_id = ' 
    $user_id;
            
    mysql_query($query$db) or die(mysql_error());
            
    mysql_close($db);
    ?>
    <html>
     <head>
      <title>Update Account Info</title>
     </head>
     <body>
      

    [b]The account information has been updated.[/b]</p>
      

    [url="admin_area.php"]Click here[/url] to return to the admin area.</a></p>
     </body>
    </html>
    <?php
            
    die();
        }
    } else {

        
    $user_id = (isset($_GET['id'])) ? $_GET['id'] : 0;
        if (
    $user_id == 0) {
            
    header('Location: admin_area.php');
            die();
        }

        
    $query 'SELECT
            username, first_name, last_name, email, city, state, hobbies AS my_hobbies
          FROM
            site_user u JOIN site_user_info i ON u.user_id = i.user_id
          WHERE
           u.user_id = ' 
    $user_id;
        
    $result mysql_query($query$db) or die(mysql_error());
        
        if (
    mysql_num_rows($result) == 0)
        {
            
    header('Location: admin_area.php');
            die();
        }
        
        
    $row mysql_fetch_assoc($result);
        
    extract($row);
        
    $password '';
        
    $hobbies explode(', '$my_hobbies);

        
    mysql_free_result($result);
        
    mysql_close($db);
    }
    ?>
    <html>
     <head>
      <title>Update Account Info</title>
      <style type="text/css">
       td { vertical-align: top; }
      </style>
      <script type="text/javascript">
       window.onload = function() {
           document.getElementById('cancel').onclick = goBack;
       }
       function goBack() {
           history.go(-1);
       }
      </script>
     </head>
     <body>
      <h1>Update Account Information</h1>
      <form action="update_user.php" method="post">
       <table>
        <tr>
         <td><label for="username">Username:</label></td>
         <td><input type="text" name="username" id="username" size="20"
           maxlength="20" value="<?php echo $username ?>"/></td>
        </tr><tr>
         <td><label for="password">Password:</label></td>
         <td><input type="text" name="password" id="password" size="20"
           maxlength="20" value="<?php echo $password ?>"/>
         <small>(Leave blank if you're not changing the password.)</mall></td>
        </tr>
         <td><label for="email">Email:</label></td>
         <td><input type="text" name="email" id="email" size="20" maxlength="50"
           value="<?php echo $email?>"/></td>
        </tr><tr>
         <td><label for="first_name">First name:</label></td>
         <td><input type="text" name="first_name" id="first_name" size="20"
           maxlength="20" value="<?php echo $first_name?>"/></td>
        </tr><tr>
         <td><label for="last_name">Last name:</label></td>
         <td><input type="text" name="last_name" id="last_name" size="20"
           maxlength="20" value="<?php echo $last_name?>"/></td>
        </tr><tr>
         <td><label for="city">City:</label></td>
         <td><input type="text" name="city" id="city" size="20" maxlength="20"
           value="<?php echo $city?>"/></td>
        </tr><tr>
         <td><label for="state">State:</label></td>
         <td><input type="text" name="state" id="state" size="2" maxlength="2"
           value="<?php echo $state?>"/></td>
        </tr><tr>
         <td><label for="hobbies">Hobbies/Interests:</label></td>
         <td><select name="hobbies[]" id="hobbies" multiple="multiple">
    <?php
    foreach ($hobbies_list as $hobby)
    {
        if (
    in_array($hobby$hobbies)) {
            echo 
    '<option value="' $hobby '" selected="selected">' $hobby .
                
    '</option>';
        } else {
            echo 
    '<option value="' $hobby '">' $hobby '</option>';
        } 
    }
    ?>
          </select></td>
    <?php
    if ($_SESSION['admin_level'] == 1) {
        echo 
    '</tr><tr>';
        echo 
    '<td> </td>';
        echo 
    '<td><input type="checkbox" id="delete" name="delete"/>' .
            
    '<label for="delete">Delete</label></td>';
    }
    ?>
        </tr><tr>
         <td> </td>
         <td>
          <input type="hidden" name="user_id" value="<?php echo $user_id;?>"/>
          <input type="submit" name="submit" value="Update"/> 
          <input type="button" id="cancel" value="Cancel"/>
        </tr>
       </table>
      </form>
     </body>
    </html>

  2. #2
    leggere tutto e' dura.

    Stampa la query quando hai problemi e vedi cosa risolvono le variabili.

    comunque nell'update multitabella devi impostare il riferimento where per entrambe le tabelle

    $query = 'UPDATE site_user u, site_user_info SET .....

    nel where hai solo il riferimento a site_user = id e nulla per site_user_info che quindi aggiornera' tutti i suoi record.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.