SQL Update niet werkend

  • Onderwerp starter Onderwerp starter xvilo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

xvilo

Gebruiker
Lid geworden
14 dec 2008
Berichten
492
Hallo Allemaal,


Ik ben 'es serieus bezig met PHP en ik probeer een admin panel te maken, nu kan de geregistreerde gebruiker zijn/haar gegevens aanpassen, hiervoor moet ik de database updaten, alleen als ik de form post, update hij niks, hij doet alles wel gewoon en ik kan er ook geen error's uitdebuggen -maar dat zal mijn incompetentie wel zijn-.


De code:
PHP:
<?php
session_start();


require_once 'includes/config.php';
require_once 'includes/functions.php';


checkLogin();


require_once 'includes/header.php';


if ($_POST['update'] == 'ok') {
    $required = array(
        'email',
        'firstname',
        'lastname',
        'adres',
        'city',
        'zip',
        'country',
        'phone'
    );
    
    // Loop over field names, make sure each one exists and is not empty
    
    $error = false;
    foreach ($required as $field) {
        if (empty($_POST[$field])) {
            $error  = true;
            $fields = $fields . " " . $field;
        }
    }
    
    if ($error) {
        $mesg = '<li class="danger alert">Oeps, je hebt niet alles ingevuld: ' . $fields . '</li><br>';
    } else {
        
        $con = mysqli_connect($db_host, $db_user, $db_password, $db_database);
        
        // Check connection
        
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            die();
        }
        mysqli_query($con, "UPDATE users SET email='mysql_real_escape_string($_POST[email])' ip='$ip' firstname='mysql_real_escape_string($_POST[firstname])' lastname='mysql_real_escape_string($_POST[lastname])' adres='mysql_real_escape_string($_POST[adres])' city='mysql_real_escape_string($_POST[city])' zip='mysql_real_escape_string($_POST[zip])' country='mysql_real_escape_string($_POST[country])' phone='mysql_real_escape_string($_POST[phone])' WHERE id='$_SESSION[id]' ");
        mysqli_close($con);
    }
}


?>
   
    <div class="row" id="login">
        <div class="three columns">
            <center> <h2>Account</h2> </center>
            <p>All your information in one place, change it when you want! </p>
            
            <center><h2>News</h2></center>
            <p>Important news, updates or anything else will be posted here!</p>
        </div>
        <div class="nine columns">
            <center><h3 id="information">Overview</h3></center>
            <p>&nbsp;</p>
             <?php


// Connects to your Database


mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());
mysql_select_db($db_database) or die(mysql_error());
$data = mysql_query("SELECT * FROM users WHERE id='$_SESSION[id]'") or die(mysql_error());


while ($info = mysql_fetch_array($data)) {
?>
            <form  id="infoForm" action="<?php
    $_SERVER['PHP_SELF'];
?>" method="post">
                <div class="row">
<?php
    echo $mesg;
?>
                   <div class="five  columns">
                        <ul>
                       <li class="field"><input class="text input" name="firstname" type="text" placeholder="First name" value="<?php
    echo $info['firstname'];
?>" /></li>
                       <li class="field"><input class="text input" name="lastname" type="text" placeholder="Last name" value="<?php
    echo $info['lastname'];
?>"/></li>
                       <li class="field"><input class="text input" name="adres" type="text" placeholder="Adres" value="<?php
    echo $info['adres'];
?>"/></li>
                       <li class="field"><input class="text input" type="text" name="zip" placeholder="Zip" value="<?php
    echo $info['zip'];
?>"/></li>
                       <li class="field"><input class="text input" type="text" name="city" placeholder="City" value="<?php
    echo $info['city'];
?>"/></li>
                       <li class="field"><input class="text input" type="text" name="country" placeholder="Country" value="<?php
    echo $info['country'];
?>"/></li>
                       <li class="field"><input class="text input" type="text" name="phone" placeholder="phone" value="<?php
    echo $info['phone'];
?>"></input></li>
                    </ul>
                    </div>
                    <div class="two columns">
                        <!--<h5>Statistics</h5>
                        <p>Balance due <em>&euro;-12.50</em>.</p>
                        <p>Registerd about 3 years ago.</p>
                        <p><a href="pay.html">pay &euro;12.50</a></p>-->
                    </div>
                    <div class="five columns">
                        <ul>
                            <li class="field"><input class="text input" type="text" name="email" placeholder="Email" value="<?php
    echo $info['email'];
?>"/></li>
                            <p>&nbsp;</p>
                            <h5>Change password</h5>
                           <li class="field"><input class="text input" type="text" placeholder="Username" disabled  value="<?php
    echo $info['user'];
?>"/></li>
                           <li class="field"><input class="password input" type="password" placeholder="current passcode" /></li>
                            <li class="field"><input class="password input" type="password" placeholder="new passcode" /></li>
                            <li class="field"><input class="password input" type="password" placeholder="new passcode again" /></li>
                        </ul>
                    </div>
                </div>
               <input type="hidden" name="update" value="ok">
                <center><p>&nbsp;</p> <div class="medium secondary btn icon-left icon-key"><a href="#" onclick="document.getElementById('infoForm').submit();">Submit</a></div></center>
            </form>
            <?php
}


?> 
            <p>&nbsp;</p><p>&nbsp;</p>
            <table class="striped rounded">
                    <caption id="products">Products</caption>
                    <thead>
                        <tr>
                            <th>Name</th>
                            <th>Information</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php


// Connects to your Database


mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());
mysql_select_db($db_database) or die(mysql_error());
$data = mysql_query("SELECT * FROM products WHERE uid='$_SESSION[id]'") or die(mysql_error());


while ($info = mysql_fetch_array($data)) {
?>
                       <tr>
                            <td><?php
    echo $info['name'];
?></td>
                            <td><?php
    echo $info['name'];
?> added <?php
    echo aboutTime($info['regdate']);
?>, running until <?php
    echo $info['enddate'];
?></td>
                        </tr>
            <?php
}


?> 
                    </tbody>
                </table>
        </div>
    </div>
    
    <?php
require_once 'includes/footer.php';


?>


Waarom werkt het sumbitten niet? Hij haalt wel alle data goed uit de database.
En nog de vraag, is het handig/veilig zoals ik het op deze manier doe? (ga niet beginnen over PDO :P)


Alvast bedankt,


//xvilo
 
Kijk eens hoe de syntax highlighting met je UPDATE-query overweg gaat, waarschijnlijk zie je dan wel wat er verkeerd gaat :)
 
Ik heb met CTRL-F naar UPDATE gezocht in je code maar kom geen SQL-Update query tegen.
 
Ik heb met CTRL-F naar UPDATE gezocht in je code maar kom geen SQL-Update query tegen.

Op regel 49 ;)

Misschien kan je de SQL query uitprinten op het scherm en dan handmatig invoeren in je database. Misschien krijg je er dan een error uit of zie je wat er gebeurt, misschien update die wel maar niet met de goede waardes.

Moeten er geen komma's staan tussen de verschillende waardes?

Code:
        mysqli_query($con, "UPDATE users SET email='mysql_real_escape_string($_POST[email])', ip='$ip' firstname='mysql_real_escape_string($_POST[firstname])', lastname='mysql_real_escape_string($_POST[lastname])' ,adres='mysql_real_escape_string($_POST[adres])', city='mysql_real_escape_string($_POST[city])', zip='mysql_real_escape_string($_POST[zip])' ,country='mysql_real_escape_string($_POST[country])', phone='mysql_real_escape_string($_POST[phone])' WHERE id='$_SESSION[id]' ");
 
Laatst bewerkt:
@gast0158: Dan is je zoekfunctie bagger :D regel 49 ;) -- pimnl was me voor

@xvilo: Je gebruikt PHP-functies binnen een string, alleen worden die functies nu als onderdeel van de string gezien en dus niet uitgevoerd. Iets dat je met PDO (:p) niet was overkomen aangezien die via prepared statements de input wel filtert.
Moeten er geen komma's staan tussen de verschillende waardes?
Klopt: http://dev.mysql.com/doc/refman/5.0/en/update.html
 
Laatst bewerkt:
Komma's toegevoegd, maar nog steeds veranderd ie niks
 
Zie mijn vorige bericht
 
Komma's toegevoegd, maar nog steeds veranderd ie niks

dit is je beginnersfout
" '".mysql_real_escape_string($_POST)."' "(dit doe je best in een nieuw array waar alle controles op zijn uitgevoerd zodat je geen tien keer de zelfde realescape uitvoerd)
weet dat er pdo bestaat (let op kan je systeem belasten indien het veel gebeurt (ook input filters) maar bij vele sites te verwaarlozen om er rekening meet te houden)
of
phporm (te veel aanmaken en verwijderen van objecten kan ook overhead bezorgen maar dan op een andere mannier)

en of andere niet door mij gekende systemen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan