Auteur Topic: [PHP] Update database  (gelezen 2010 keer)

0 leden en 1 gast bekijken dit topic.

xvilo

  • Global Moderator
  • Verslaafd DigitalPlace Lid
  • *****
  • Berichten: 2675
  • Karma: -44
    • Bekijk profiel
    • http://www.xvilo.com
[PHP] Update database
« Gepost op: maart 06, 2014, 12:28:33 pm »
  • [+1]0
  • [-1]0
  • 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:
    Code: php [Selecteer]
    <?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
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »


    Faperdaper

    • Administrator
    • Verslaafd DigitalPlace Lid
    • *****
    • Berichten: 2274
    • Karma: 29
      • Bekijk profiel
    Re: [PHP] Update database
    « Reactie #1 Gepost op: maart 09, 2014, 12:55:21 pm »
  • [+1]0
  • [-1]0
  • Er wordt niets geupdate omdat de update query die je daarvoor hebt geschreven niet klopt.

    De syntax is als volgt:
    Citaat van: "W3schools"
    UPDATE table_name
    SET column1=value, column2=value2,...
    WHERE some_column=some_value

    Je hebt geen komma's tussen de verschillende kolom namen. Daarbij komt dat je de mysql_real_escape_string() functie BUITEN de quote's moet laten. Anders wordt dit gezien als een string en komt die waarde letterlijk in je database te staan.

    Verder is het good programming practise om variablen buiten de quotes te laten. Niet alleen in queries, maar in je hele code.

    Om het jou makkelijk te maken zou ik die query regel als volgt maken:
    Code: php [Selecteer]
    mysqli_query($con, sprintf("UPDATE `users` SET email='%s', ip='%s', firstname='%s', lastname='%s', adres='%s', city='%s', zip='%s', country='%s', phone='%s', WHERE id='%s'", mysql_real_escape_string($_POST["email"]), $ip, mysql_real_escape_string($_POST["firstname"]), mysql_real_escape_string($_POST["lastname"]), mysql_real_escape_string($_POST["adres"]), mysql_real_escape_string($_POST["city"]), mysql_real_escape_string($_POST["zip"]), mysql_real_escape_string($_POST["country"]), mysql_real_escape_string($_POST["phone"]), $_SESSION["id"])); 
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »
    Klik hier voor stats over ons irc kanaal #DPF! Wil je ook ons kanaal joinen? Check deze tutorial. Of gebruik de webchat :)

    xvilo

    • Global Moderator
    • Verslaafd DigitalPlace Lid
    • *****
    • Berichten: 2675
    • Karma: -44
      • Bekijk profiel
      • http://www.xvilo.com
    Re: [PHP] Update database
    « Reactie #2 Gepost op: maart 13, 2014, 12:39:38 pm »
  • [+1]0
  • [-1]0
  • mysqli_query($con, sprintf("UPDATE `users` SET email='%s', ip='%s', firstname='%s', lastname='%s', adres='%s', city='%s', zip='%s', country='%s', phone='%s', WHERE id='%s'", $_POST["email"], $ip, $_POST["firstname"], $_POST["lastname"], $_POST["adres"], $_POST["city"], $_POST["zip"], $_POST["country"], $_POST["phone"], $_SESSION["id"])) or mysql_error($con);

    Het gekke is dat ik met de bovenstaande code deze fout krijg: [icode:1rhqvj7z]<b>Warning</b>:  mysql_error() expects parameter 1 to be resource, object given in <b>/home/xvilo/D3/site/account.php</b> on line <b>45</b><br />[/icode:1rhqvj7z]

    Ja ik weet dat ik wel op alles een [icode:1rhqvj7z]mysql_real_escape_string()[/icode:1rhqvj7z] moet zetten!
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »


    gertmenkel

    • Actief DigitalPlace Lid
    • **
    • Berichten: 1125
    • Karma: 131
      • Bekijk profiel
    Re: [PHP] Update database
    « Reactie #3 Gepost op: maart 13, 2014, 02:42:55 pm »
  • [+1]0
  • [-1]0
  • Ik denk dat [icode:2z188qi6]$con[/icode:2z188qi6] niet goed geopend wordt. Kun je de code posten waarmee je die resource maakt?

    Btw, als je met mysqli werkt kun je net zo goed OOP gebruiken ipv functioneel mysqli functies aan te roepn.
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »
    ThePirateBay AFK
    Bekijk de vrije en gratis documentaire!

    xvilo

    • Global Moderator
    • Verslaafd DigitalPlace Lid
    • *****
    • Berichten: 2675
    • Karma: -44
      • Bekijk profiel
      • http://www.xvilo.com
    Re: [PHP] Update database
    « Reactie #4 Gepost op: maart 13, 2014, 04:38:20 pm »
  • [+1]0
  • [-1]0
  • Ik snap niet helemaal wat je bedoeld met "die resource" maar hier de code:
            $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, sprintf("UPDATE `users` SET email='%s', ip='%s', firstname='%s', lastname='%s', adres='%s', city='%s', zip='%s', country='%s', phone='%s', WHERE id='%s'", $_POST["email"], $ip, $_POST["firstname"], $_POST["lastname"], $_POST["adres"], $_POST["city"], $_POST["zip"], $_POST["country"], $_POST["phone"], $_SESSION["id"])) or mysql_error($con);
            mysqli_close($con);

    Edit:
    OOP - Classes And Objects?
    Ik ga me er nú in verdiepen
    « Laatst bewerkt op: januari 01, 1970, 01:00:00 am door Guest »