2016-04-02 13 views
0

Hoffe, dass jemand helfen kann. Ich habe eine Profilseite, auf der ich die Details der eingeloggten Benutzer anzeigen möchte. Bisher habe ich das auf der Profilseite.Profilseite zeigt keine Benutzerprofilinformationen oder Aktualisierung an

<?php 

/* This script pulls the existing name input and displays it when the user logs in. */ 

session_start(); 

include("db.php"); ?> 

<?php include("includes/header.php") ?> 

<?php include("includes/nav.php") ?> 




<?php 

    if(logged_in()) { 

    $result = mysqli_query($link,$query); 

    $row = mysqli_fetch_array($result); 


if (!$_POST['name'] && $_POST['name']=="") $error.="<br />Please enter your name"; 
if (!$_POST['email'] && $_POST['email']=="") $error.="<br />Please enter your email"; 
if (!$_POST['DOB'] && $_POST['DOB']=="") $error.="<br />Please enter your date of birth"; 
if (!$_POST['country'] && $_POST['country']=="") $error.="<br />Please enter your country"; 




if ($error) { 

       echo '<div class="alert alert-success alert-dismissable">'.addslashes($error).'</div>'; 

      } 

if(isset($_POST['form-control'])) { 

move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']); 
$query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."'"); 
}  


    } else { 

     redirect("login.php"); 

    } 

?> 


<Style> 


.alert{ 
display:none; 
} 

#profileimg { 
    height: 100px; 
    width: auto; 
}  

</Style> 


<div class="container"> 
<h1>Edit Profile</h1> 
<hr> 
<div class="row"> 
    <!-- left column --> 
    <div class="col-md-3"> 
    <div class="text-center"> 
     <img src="//placehold.it/100" class="avatar img-circle" alt="avatar" id="profileimg"> 
     <h6>Upload a different photo...</h6> 

     <input class="form-control" type="file" name="name"> 
    </div> 
    </div> 

    <!-- edit form column --> 
    <div class="col-md-9 personal-info"> 
    <div class="alert alert-success alert-dismissable"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
     <strong>Profile updated.</strong> 
    </div> 
    <h3>Personal info</h3> 

    <form class="form-horizontal" role="form" action="edit_profile.php" method="post"> 

     <div class="form-group"> 
     <label class="col-lg-3 control-label name">name:</label> 
     <div class="col-lg-8"> 
     <input class="form-control" value="<?php echo $row['name'];?>" type="text" name="name" required> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">Email:</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['email'];?>" type="text" name="email" required> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">DOB:</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['DOB'];?>" type="date" name="DOB" required> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">Country</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['country'];?>" type="text" name="country" required> 
     </div> 
     </div> 

     <div class="form-group"> 
     <label class="col-md-3 control-label"></label> 
     <div class="col-md-8"> 
      <input class="btn btn-primary" value="Save Changes" type="submit"> 
      <span></span> 
      <input class="btn btn-default" id="updated" value="Cancel" type="reset"> 
     </div> 
     </div> 

    </form> 
    </div> 

 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<!-- Include all compiled plugins (below), or include individual files as needed --> 
<script src="js/bootstrap.min.js"></script> 

    <script> 

    $("#updated").click(function(){ 

$(".alert").hide().show('medium'); 

    </script> 


</body> 
</html> 

Ich habe dann eine andere PHP-Datei für die Aktualisierung, die dies:

<?php 

session_start(); 

include("db.php"); 



$name = $_POST['name']; 
$email = $_POST['email']; 
$DOB = $_POST['DOB']; 
$country = $_POST['country']; 
$password = md5($salt.$_POST['password']); 



$query = "UPDATE users SET name = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."'"; 




$result = mysqli_query($link,$query); 




header('Location: profile.php'); 

?> 

So die kurze ist es nicht oder Update nicht angezeigt wird, und ich bin nicht sicher warum. Ich bin neu in PHP, also gehen Sie einfach auf mich, wenn das einfach ist, habe ich gesucht, aber kann nicht scheinen, die Antwort zu finden.

Vielen Dank im Voraus.

+1

wo ist '$ _SESSION ['id']' zugewiesen? –

+1

auch, brauche ich keine 'Form-Control' Name Attribut so' if (isset ($ _ POST ['Form-Control'])) {...} 'wird nie feuern. Dann verwendest du Dateien, aber ich sehe nichts damit. Sie prüfen nicht auf Fehler. Fügen Sie das Fehlerreporting an den Anfang Ihrer Datei (en) direkt nach dem öffnenden PHP-Tag zum Beispiel '

+0

Sie haben eine Antwort unten. Frag sie jetzt. Viel Glück –

Antwort

1

Im neu auch dies aber in der Regel, wenn ich überprüfen, ob eine Session-ID aktiv ist, verwende ich

if(isset($_SESSION['id'])) { 
$query = "UPDATE users SET name = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."' WHERE id='".$_SESSION['id']."'"; 
} 

Sie müssen auch die indexierten Zeilen Echo zurück, die Sie abfragen versuchen, Ergebnisse anzuzeigen

$name = row['username']; 
echo $name; 
0

Es gibt viele Fehler in Ihrem Code: Sie versuchen, eine Datei auf der gleichen Seite hochzuladen, während Sie die Formulardaten an eine andere Seite senden. Wie Sie die Formularvalidierung handhaben, ist auch ein kleiner Aufwand. Was ich im Formular geändert habe, ist: Ich füge name = "save" in deine Submit-Schaltfläche ein und füge neue versteckte Eingabe hinzu, um deine Benutzerprofil-ID zu speichern. Ich bin mir nicht sicher, welche login() - Funktion in Ihrem Code verwendet wurde. Bleiben Sie besser bei if ($ id) {}.

Versuchen Sie folgendes:

<?php 

/* This script pulls the existing name input 
    and displays it when the user logs in. */ 
session_start(); 
include("db.php"); 
include("includes/header.php"); 
include("includes/nav.php"); 
$id = $_SESSION['id']; 
if(loginned()) {//you can do if($id){} 
    $query="SELECT * FROM users WHERE id='$id' LIMIT 1"; 
    $result = mysqli_query($link,$query); 
    $row = mysqli_fetch_array($result); 
?> 
<style> 
.alert{ 
display:none; 
} 
#profileimg { 
    height: 100px; 
    width: auto; 
}  
</style> 

<div class="container"> 
<h1>Edit Profile</h1> 
<hr> 
<div class="row"> 
    <!-- left column --> 

    <!-- edit form column --> 
    <div class="col-md-9 personal-info"> 
    <div class="alert alert-success alert-dismissable"> 
     <button type="button" class="close" data-dismiss="alert" 
      aria-hidden="true">&times;</button> 
     <strong>Profile updated.</strong> 
    </div> 
    <h3>Personal info</h3>  
    <form class="form-horizontal" role="form" 
      action="edit_profile.php" method="post">  
     <div class="form-group"> 
     <label class="col-lg-3 control-label name">name:</label> 
     <div class="col-lg-8"> 
     <input class="form-control" value="<?php echo $row['name'];?>" 
       type="text" name="name" required> 
     </div> 
     </div> 
     <div class="col-md-3"> 
    <div class="text-center"> 
     <img src="//placehold.it/100" class="avatar 
      img-circle" alt="avatar" id="profileimg"> 
     <h6>Upload a different photo...</h6> 
     <input class="form-control" type="file" name="name"> 
    </div> 
    </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">Email:</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['email'];?>" 
       type="text" name="email" required> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">DOB:</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['DOB'];?>" 
       type="date" name="DOB" required> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-3 control-label">Country</label> 
     <div class="col-lg-8"> 
      <input class="form-control" value="<?php echo $row['country'];?>" 
       type="text" name="country" required> 
     </div> 
     </div> 

     <div class="form-group"> 
     <input type="hidden" name="id" value="<?php echo $row['id'];?>"> 
     <label class="col-md-3 control-label"></label> 
     <div class="col-md-8"> 
      <input class="btn btn-primary" name="save" 
       value="Save Changes" type="submit"> 
      <span></span> 
      <input class="btn btn-default" id="updated" 
       value="Cancel" type="reset"> 
     </div> 
     </div>   
    </form> 
    </div> 
    <?php }else{ redirect("login.php"); } ?> 

edit_profile.php Zuerst überprüfen wir, ob ein Beitrag mit dem Namen speichern ist, Wir validieren die gebuchten Daten. Wenn die Validierung erfolgreich ist, laden wir Ihre Datei hoch und führen dann Ihre Aktualisierungsabfrage aus.

<?php 
    session_start(); 
    include("db.php"); 
if(isset($_POST['save'])){ 
     $id = isset($_POST['id'])? $_POST['id']:''; 
     $name = isset($_POST['name'])? $_POST['name']:''; 
     $email = isset($_POST['email'])? $_POST['email']:''; 
     $dob = isset($_POST['DOB'])? $_POST['DOB']:''; 
     $pass = isset($_POST['passwrd'])? md5($salt.$_POST['password']):''; 
     $country = isset($_POST['country'])? $_POST['country']:''; 

     if(empty($name)){ 
      $error = 'Please enter your name'; 
     }elseif(empty($email)){ 
      $error = 'Please enter your email'; 
     }elseif(empty($dob)){ 
      $error = 'Please enter your date of birth'; 
     }elseif(empty($country)){ 
      $error = 'Please enter your country'; 
     }elseif(empty($pass)){ 
      $error = 'Please enter your password'; 
     }else{ 
      move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']); 
      $query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."' 
            WHERE id='$id'"); 
      $query = "UPDATE users SET name = '$name', email = '$email', 
         DOB = '$DOB', country = '$country', password = '$password' 
         WHERE id='$id'"; 
      $result = mysqli_query($link,$query); 
      header('Location: profile.php'); 
     } 

} ?>

<?php if(!empty($error)){ 
     echo '<div class="alert alert-success 
      alert-dismissable">'.addslashes($error).'</div>'; 
    }else{ 
     echo '<div class="alert alert-success">Success</div>'; 
     } 
    ?> 

Ich habe eine demo here hinzugefügt. Zumindest hilft das:

+0

vielen Dank für die Zeit, um zu helfen. Du hast Recht, mein Code ist ein Durcheinander und ich bin neu, also kämpfe ich. Ich habe meinen Code auf das geändert, was Sie für beide Dateien getan haben, und trotzdem passiert nichts. Es zieht die Informationen nicht oder ändert sie nicht. Irgendwelche anderen Gedanken? Noch einmal vielen Dank. – will

+0

print_r ($ row) auf der ersten Seite und zeigen die Ausgabe in der Frage. –

+0

gerade getan. Nichts ist passiert. – will