From 6081c978868b42379ab87066039197a1d32b8c09 Mon Sep 17 00:00:00 2001 From: Nur Latifah Ulfah <n.latifahulfah31@gmail.com> Date: Sat, 7 Oct 2017 17:44:45 +0700 Subject: [PATCH] fix some bug --- src/css/fan.css | 33 ++++++++++++- src/css/fan2.css | 15 +++++- src/css/styles.css | 10 ++++ src/edit-prefered-location.php | 4 +- src/edit-profile.php | 59 +++++++++++++++++----- src/img/cloud.png | Bin 0 -> 7944 bytes src/img/images.png | Bin 0 -> 9464 bytes src/js/fan.js | 29 ++++++++++- src/js/register.js | 15 +++++- src/login.php | 3 ++ src/profile.php | 44 +++++++++++------ src/update.php | 86 +++++++++++++++++++++++++++++++++ 12 files changed, 265 insertions(+), 33 deletions(-) create mode 100644 src/img/cloud.png create mode 100644 src/img/images.png create mode 100644 src/update.php diff --git a/src/css/fan.css b/src/css/fan.css index 8b3f0a6..5ab5a2b 100644 --- a/src/css/fan.css +++ b/src/css/fan.css @@ -3,7 +3,8 @@ } img { max-width: 100%; - height: auto; + height: 100%; + width: auto; } h1 { margin-top: 60px; @@ -204,6 +205,10 @@ nav ul li a.active { border: 1px solid grey; } .btn { + text-decoration: none; + color: black; + font-size: 14px; + font-family: Roboto; padding: 7px 17px; cursor: pointer; border-style: none; @@ -275,6 +280,32 @@ input:checked + .slider:before { width: 75%; } +/*.inputfile { + opacity: 0; + z-index: -1; +}*/ +/*.inputfile + label span { + width: 75%; + min-height: 26px; + margin-right: 5px; + display: inline-block; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + vertical-align: top; + border: 1px solid #C8C8C8; +} + +.inputfile + label strong { + height: 100%; + color: black; + background-color: #D7D7D7; + display: inline-block; + padding: 3px 10px; + border: 1px solid #BBBBBB; + font-weight: normal; +}*/ + /* Status */ .status { font-size: 17px; diff --git a/src/css/fan2.css b/src/css/fan2.css index 3c912e1..f209c64 100644 --- a/src/css/fan2.css +++ b/src/css/fan2.css @@ -1,3 +1,6 @@ +h2 { + font-family: Oswald; +} /* Main Container */ .card { margin-top: 20px; @@ -120,8 +123,18 @@ /* Users */ #username { font-weight: bold; + font-size: 30px; +} +#fullname, #email, #phone { + font-size: 20px; +} +.rating { + color: #FE9926; +} +.pref-loc { + font-family: Oswald; + font-size: 26px; } - /* Floating */ .float-right { float: right; diff --git a/src/css/styles.css b/src/css/styles.css index ceb75af..392aa2d 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -236,3 +236,13 @@ input.form-control.validation { a:hover { cursor: pointer; } + +.invalid-text { + color: red; + font-weight: bold; + padding-left: 25px; +} + +.left-align { + text-align: left !important; +} \ No newline at end of file diff --git a/src/edit-prefered-location.php b/src/edit-prefered-location.php index 7d55079..5d6914c 100644 --- a/src/edit-prefered-location.php +++ b/src/edit-prefered-location.php @@ -17,7 +17,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST'){ if(mysqli_stmt_execute($stmt)){ echo 'sesuatu'; - header('location: '. htmlspecialchars($_SERVER["PHP_SELF"]) .'?id='. $_GET['id_active']); + header('location: '. htmlspecialchars($_SERVER["PHP_SELF"]) .'?id_active='. $_GET['id_active']); } else { echo 'gagal'; } @@ -128,7 +128,7 @@ if(mysqli_stmt_execute($stmt)){ <br> <h2>ADD NEW LOCATION:</h2> - <form class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) .'?id='. $_GET['id_active'] . '&type=add';?>" onsubmit="return isFilled()" method="post"> + <form class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) .'?id_active='. $_GET['id_active'] . '&type=add';?>" onsubmit="return isFilled()" method="post"> <input type="text" class="form-control loc" name="location" > <button type="submit" class="btn-css">ADD</button> diff --git a/src/edit-profile.php b/src/edit-profile.php index 4380192..e4daf65 100644 --- a/src/edit-profile.php +++ b/src/edit-profile.php @@ -1,50 +1,87 @@ <!DOCTYPE html> +<?php + require_once 'dbconfig.php'; + + $sqlconn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME); + if (!$sqlconn) { + die('mySQL connection failed'); + } + + // Menyiapkan statement SELECT + $sqlquery = 'SELECT username, fullname, email, phoneno, isdriver, avg_vote, n_voters, img_name FROM userinfo WHERE id=?'; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + + // Bind variables + mysqli_stmt_bind_param($stmt, "i", $_GET['id_active']); + + if(mysqli_stmt_execute($stmt)){ + // Simpan Hasil query + mysqli_stmt_store_result($stmt); + // username exist + mysqli_stmt_bind_result($stmt, $username, $fullname, $email, $phoneno, $isdriver, $avg_vote, $n_voters, $img_name); + + mysqli_stmt_fetch($stmt); + } +?> <html> <head> <title>Edit Profile</title> <link rel="stylesheet" type="text/css" href="css/fan.css"> - <link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet"> + <link href="https://fonts.googleapis.com/css?family=Oswald|Roboto" rel="stylesheet"> </head> <body> <main class="container"> + <form action="update.php" method="post" enctype="multipart/form-data"> <h1 class="uppercase">Edit Profile Information</h1> <div class="row relative mb25"> <div class="col-4"> <div class="photo-container"> - <img src="img/foto-profil.jpg" class="vertical-center"> + <?php echo '<img class="border" src="img/' . $img_name . '" />' ?> </div> </div> <div class="col-8 vertical-center r0"> Update profile picture<br> - <form action="" method="post" class="photo-update"> - <input type="text" name="photo-url" class="col-9"> - <button class="btn-flat">Browse...</button> - </form> + <div class="photo-update"> + <input type="file" name="fileToUpload" id="fileToUpload" class="inputfile"> + <!-- <label for="file"><span></span><strong>Browse</strong></label> --> + </div> </div> </div> <div class="row"> <div class="col-4">Your Name</div> - <div class="col-8"><input type="text" name="name" class="w100"></div> + <div class="col-8"><input type="text" name="name" class="w100" value="<?php echo $fullname; ?>"></div> </div> <div class="row mt5"> <div class="col-4">Phone</div> - <div class="col-8"><input type="number" name="phone" class="w100"></div> + <div class="col-8"><input type="number" name="phone" class="w100" value="<?php echo $phoneno; ?>"></div> </div> <div class="row mt5"> <div class="col-4">Status Driver</div> <div class="col-8 right-align"> <!-- Rounded switch --> <label class="switch"> - <input type="checkbox"> + <?php + if ($isdriver == 1) { + echo '<input name="isdriver" type="checkbox" checked>'; + }else { + echo '<input name="isdriver" type="checkbox">'; + } + ?> <span class="slider round"></span> </label> </div> </div> + <input type="hidden" name="id_active" value="<?php echo $_GET['id_active'];?>"> + <input type="hidden" name="username" value="<?php echo $username;?>"> <div class="row mt25"> - <div class="col-6"><button class="btn red-bg uppercase">Back</button></div> - <div class="col-6 right-align"><button class="btn green-bg uppercase">Save</button></div> + <div class="col-6"><a href="profile.php?id_active=<?php echo $_GET['id_active'];?>" class="btn red-bg uppercase">Back</a></div> + <div class="col-6 right-align"><button type="submit" class="btn green-bg uppercase">Save</button></div> </div> + </form> </main> </body> </html> +<?php + +?> \ No newline at end of file diff --git a/src/img/cloud.png b/src/img/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..56671fc430146183fa2fc16b746011ce9857b5a4 GIT binary patch literal 7944 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	D8?qG;hAAI##p%A-LmhB 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 literal 0 HcmV?d00001 diff --git a/src/img/images.png b/src/img/images.png new file mode 100644 index 0000000000000000000000000000000000000000..97aecf78161a2b258fe1a7cf6b17062cfe718564 GIT binary patch literal 9464 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 KMNUMnLSTaXfM-qs literal 0 HcmV?d00001 diff --git a/src/js/fan.js b/src/js/fan.js index 277cae2..a627e92 100644 --- a/src/js/fan.js +++ b/src/js/fan.js @@ -24,4 +24,31 @@ function openTab(evt, tabName) { function hide(id) { document.getElementById(id).style.display = "none"; -} \ No newline at end of file +} + + +//INPUT FILE +'use strict'; + +;( function ( document, window, index ) +{ + var inputs = document.querySelectorAll( '.inputfile' ); + Array.prototype.forEach.call( inputs, function( input ) + { + var label = input.nextElementSibling, + labelVal = label.innerHTML; + + input.addEventListener( 'change', function( e ) + { + + if( fileName ) + label.querySelector( 'span' ).innerHTML = fileName; + else + label.innerHTML = labelVal; + }); + + // Firefox bug fix + input.addEventListener( 'focus', function(){ input.classList.add( 'has-focus' ); }); + input.addEventListener( 'blur', function(){ input.classList.remove( 'has-focus' ); }); + }); +}( document, window, 0 )); \ No newline at end of file diff --git a/src/js/register.js b/src/js/register.js index d88dd16..82fc6d1 100644 --- a/src/js/register.js +++ b/src/js/register.js @@ -1,5 +1,5 @@ function validate(field, str){ - if (str.length != 0){ + if (str.length != 0 && validateEmail(str)){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { @@ -21,7 +21,6 @@ function validate(field, str){ } else { document.getElementsByClassName('valid-status')[1].innerHTML = '<img class="stat-img" src="img/cross.png" >'; document.getElementsByClassName('valid-status')[1].alt = 'invalid'; - } return false; } @@ -92,3 +91,15 @@ function submitForm(){ console.log(req1, req2, req3); return verifyAll(req1, req2, req3); } + +function validateEmail(email) { + var x = email; + var atpos = x.indexOf("@"); + var dotpos = x.lastIndexOf("."); + if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { + document.getElementsByClassName('valid-status')[1].innerHTML = '<img class="stat-img" src="img/cross.png" >'; + document.getElementsByClassName('valid-status')[1].alt = 'invalid'; + return false; + }else + return true; +} \ No newline at end of file diff --git a/src/login.php b/src/login.php index 24c8afd..2c1e117 100644 --- a/src/login.php +++ b/src/login.php @@ -17,6 +17,7 @@ <input type="text" class="form-control" name="username" required> <label>Password</label> <input type="password" class="form-control" name="password" required><br><br> + <!-- <div class="invalid-text">Invalid username or password !</div> --> <button type="submit" name="login" >GO!</button> </form> <a class="signup-link" href="register.php">Don't have an account?</a> @@ -63,6 +64,8 @@ function authenticate($username, $password) { if (isset($_POST['login'])) { if ( $id = authenticate($_POST['username'], $_POST['password'])){ header('Location: profile.php?id_active='.$id); + }else{ + header('Location: login.php'); } } diff --git a/src/profile.php b/src/profile.php index 9e5ff5c..35f2577 100644 --- a/src/profile.php +++ b/src/profile.php @@ -25,6 +25,19 @@ require_once 'dbconfig.php'; mysqli_stmt_fetch($stmt); + /* PREFERED LOCATION */ + $query_prefloc = 'SELECT location FROM prefloc WHERE prefloc.id=?'; + $driver_prefloc = mysqli_prepare($sqlconn, $query_prefloc); + + // Bind variables + mysqli_stmt_bind_param($driver_prefloc, "i", $_GET["id_active"]); + + if(mysqli_stmt_execute($driver_prefloc)){ + // Simpan Hasil query + mysqli_stmt_store_result($driver_prefloc); + // username exist + mysqli_stmt_bind_result($driver_prefloc, $location); + } ?> <html> @@ -78,36 +91,37 @@ require_once 'dbconfig.php'; <?php echo $fullname?> </div> <?php if($isdriver) { - echo '<span id="isdriver">Driver</span><span >| → '. $avg_vote . '(' . $n_voters .')' . '</span>'; } + echo '<span id="isdriver">Driver</span> | <span class="rating">☆ <b>'. $avg_vote . '</b></span> (' . $n_voters .'votes)'; } else { echo '<span>Non-Driver</span>'; }?> <div id="email"> - <?php echo $email?> - + ✉ <?php echo $email?> </div> <div id="phone"> - <?php echo $phoneno?> + ☠<?php echo $phoneno?> </div> </div> - <div class="mtop10"> - <span class="font-header flexone">PREFERRED LOCATIONS</span> + <div class="mtop30"> + <span class="font-header flexone pref-loc">PREFERRED LOCATIONS</span> <a href="<?php echo 'edit-prefered-location.php?id_active='.$_GET['id_active']; ?>"><img class="mtop10 float-right editpic flexone" src="img/pencil.png" /></a> </div> <ul> - <li> - Pewter City - </li> - <li> - Saffron City - </li> - <li> - Skypillar tower - </li> + <?php + while (mysqli_stmt_fetch($driver_prefloc)) { + $list = ' + <li> + '.$location.' + </li> + '; + + echo $list; + } + ?> </ul> </div> diff --git a/src/update.php b/src/update.php new file mode 100644 index 0000000..e9b404a --- /dev/null +++ b/src/update.php @@ -0,0 +1,86 @@ +<?php +require_once 'dbconfig.php'; + +$sqlconn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME); +if (!$sqlconn) { + die('mySQL connection failed'); +} + +$username = $_POST["username"]; + +if (isset($_FILES["fileToUpload"])){ + $target_dir = "img/"; + $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); + $uploadOk = 1; + $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); + // Check if image file is a actual image or fake image + if(isset($_POST["submit"])) { + $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); + if($check !== false) { + echo "File is an image - " . $check["mime"] . "."; + $uploadOk = 1; + } else { + echo "File is not an image."; + $uploadOk = 0; + } + } + if ($_FILES["fileToUpload"]["size"] > 500000) { + echo "Sorry, your file is too large."; + $uploadOk = 0; + } + // Allow certain file formats + if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" + && $imageFileType != "gif" ) { + echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; + $uploadOk = 0; + } + // Check if $uploadOk is set to 0 by an error + if ($uploadOk == 0) { + echo "Sorry, your file was not uploaded."; + // if everything is ok, try to upload file + } else { + if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { + echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded."; + $newphoto = basename( $_FILES["fileToUpload"]["name"]); + $sqlquery = "UPDATE userinfo SET img_name=? WHERE username=?"; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + mysqli_stmt_bind_param($stmt, "ss", $newphoto, $username); + mysqli_stmt_execute($stmt); + } else { + echo "Sorry, there was an error uploading your file."; + } + } +} + +if (isset($_POST["name"])) { + $newname = $_POST["name"]; + $sqlquery = "UPDATE userinfo SET fullname=? WHERE username=?"; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + mysqli_stmt_bind_param($stmt, "ss", $newname, $username); + mysqli_stmt_execute($stmt); +} + +if (isset($_POST["phone"])) { + $newphone = $_POST["phone"]; + $sqlquery = "UPDATE userinfo SET phoneno=? WHERE username=?"; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + mysqli_stmt_bind_param($stmt, "ss", $newphone, $username); + mysqli_stmt_execute($stmt); +} + +if (isset($_POST["isdriver"])){ + $isdriver=1; + $sqlquery = "UPDATE userinfo SET isdriver=? WHERE username=?"; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + mysqli_stmt_bind_param($stmt, "is", $isdriver, $username); + mysqli_stmt_execute($stmt); +}else { + $isdriver=0; + $sqlquery = "UPDATE userinfo SET isdriver=? WHERE username=?"; + $stmt = mysqli_prepare($sqlconn, $sqlquery); + mysqli_stmt_bind_param($stmt, "is", $isdriver, $username); + mysqli_stmt_execute($stmt); +} + +header('Location: profile.php?id_active=' . $_POST["id_active"]); +?> \ No newline at end of file -- GitLab