Mam nadzieję, że możesz pomóc
Chcę mieć listę rozwijaną, która przeszuka moją bazę danych MySQL i pokazuje pierwsze i nazwiska użytkowników. Następnie możesz wybrać dowolną nazwę i wygeneruje resztę szczegółów członkostwa (tj. Data zapisana w górę, ostatni zalogowany itp.).
Mam listę rozwijaną w porządku, ale mój problem ma następny krok do generowania reszty szczegółów. Z moim poniższym kodem wystde pokazuje szczegóły ostatniego użytkownika, który się zapisał i nie zmienia się, gdy zmieniam nazwę w menu rozwijanym.
Jestem pewien, że potrzebuję JavaScript, aby pomóc w tym działaniu, ale ponieważ jestem początkującym do PHP / MySQL każda doradza w kierunku właściwego kierunku, byłaby świetna. Dzięki
Jest to kod, który przeszukuje moją bazę danych i umieszcza imię i nazwisko na liście rozwijanej
$sql = "SELECT first_name,last_name FROM registration_tbl";
$query = mysqli_query($dbc, $sql);
echo '<select name="name" style="width: 400px">';
while ($row = mysqli_fetch_assoc($query)){
$firstname = $row['first_name'];
$lastname = $row['last_name'];
echo'<option>' . $firstname . " " . $lastname . '</option>';
}
echo '</select> <p>';
Ponownie powyższy kod działa dobrze, ale poniższy kod jest tym, z czym mam trudności
$sql = "SELECT * FROM registration_tbl WHERE first_name = '".$firstname."'";
$query = mysqli_query($dbc, $sql);
while($row = mysqli_fetch_array($query)){
echo "ID: " . " " . $row[0] . "<br>" .
"Name: " . $row[1] . " " . $row[2] . "<br>" .
"Company: " . $row[3] . "<br> " .
"Email: " .$row[4] . "<br> " .
"Date of registration: " . $row[6] . "<br> " .
"Last login: " .$row[7] . "<br>" .
"Admin/User: " .$row[8] . "<p>";
}
4 odpowiedzi
Jeśli nie chcesz używać AJAX, aby dynamicznie ładować zawartość, potrzebujesz formularza do przesłania danych, problem polega na tym, że po pierwszej pętli, $ FirstName jest ostatnim użytkownikiem załadowanym do telefonu, aby działało działanie kodu, ty Potrzebujesz formularza.
Wystarczy umieść wybrać formularz i dodaj przycisk
<form action="mypage.php" method="get">
<select name="name" style="width: 400px">
<?php
$sql = "SELECT first_name,last_name FROM registration_tbl";
$query = mysqli_query($dbc, $sql);
while ($row = mysqli_fetch_assoc($query)){
$firstname = $row['first_name'];
$lastname = $row['last_name'];
echo'<option>' . $firstname . " " . $lastname . '</option>';
}
?>
</select>
<input type="submit" value="Load User Data">
</form>
Następnie w myPage.php musisz sprawdzić, czy formularz jest przesłany i pokaż szczegóły użytkownika.
<?php
if(isset($_GET["name"])) {
//this form is posted, show user details
//$firstname = $_GET["name"]; <--- SQL Injection enabled here!!
$firstname = mysqli_real_escape_string($_GET["name"]); // please try to avoid SQL injection!
//your code continues here
$sql = "SELECT * FROM registration_tbl WHERE first_name = '".$firstname."'";
$query = mysqli_query($dbc, $sql);
while($row = mysqli_fetch_array($query)){
echo "ID: " . " " . $row[0] . "<br>" .
"Name: " . $row[1] . " " . $row[2] . "<br>" .
"Company: " . $row[3] . "<br> " .
"Email: " .$row[4] . "<br> " .
"Date of registration: " . $row[6] . "<br> " .
"Last login: " .$row[7] . "<br>" .
"Admin/User: " .$row[8] . "<p>";
}
}
Ostatnia uwaga, jeśli nie chcesz, aby nazwa użytkownika pojawiła się w QueryString, zmień formularz akcji do publikacji i uzyskać zmienną za pomocą $ _POST ["Nazwa"]
Edytuj: Jeśli chcesz, aby formularz do autopostu przy użyciu JavaScript, a następnie dodaj to do UR Wybierz definicję:
<select name="name" style="width: 400px" onchange="this.form.submit()">
Ale pamiętaj, że wielu użytkowników blokuje JavaScript, więc nie będzie działać.
Najlepszym sposobem będzie użycie AJAX, aby uzyskać dane innego skryptu. Jednakże, inny (znacznie mniej elegancki i wydajny) sposób robienia tego, gdy zapętlasz się przez nazwy, aby umieścić w wybranej. Możesz także korzystać z nazw, aby uzyskać informacje o tej nazwie i umieścić go w tablicy (ale nie wykurz go), dopóki tego nie potrzebujesz.
Użyj tego kodu, w którym użytkownik wybierze nazwę
<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js">
<script type="text/javascript">
$(document).ready(function()
{
$(".listdata").change(function()
{
var dataString = 'listdata='+ $(this).val();
$.ajax
({
type: "POST",
url: "alldata",
data: dataString,
cache: false,
success: function(html)
{
$(".alldata").html(html);
}
});
});
});
</script>
<?php
$sql = "SELECT first_name,last_name FROM registration_tbl";
$query = mysqli_query($dbc, $sql);
echo '<select name="name" style="width: 400px" class="listdata">';
while ($row = mysqli_fetch_assoc($query)){
$firstname = $row['first_name'];
$lastname = $row['last_name'];
echo'<option value="'.$firstname.'">' . $firstname . " " . $lastname . '</option>';
}
echo '</select> <p>';
?>
<div class="alldata">
<!--here your all data will come-->
</div>
<br/><br/>
Skrzyń więcej i podaj nazwę alldata.php i użyj poniższego kodu na tej stronie
<?php
$sql = "SELECT * FROM registration_tbl WHERE first_name = '".$firstname."'";
$query = mysqli_query($dbc, $sql);
while($row = mysqli_fetch_array($query)){
echo "ID: " . " " . $row[0] . "<br>" .
"Name: " . $row[1] . " " . $row[2] . "<br>" .
"Company: " . $row[3] . "<br> " .
"Email: " .$row[4] . "<br> " .
"Date of registration: " . $row[6] . "<br> " .
"Last login: " .$row[7] . "<br>" .
"Admin/User: " .$row[8] . "<p>";
}
?>
Aby wypełnić swoje opcje, tutaj masz pełną imprezę , ale podstawową AJAX (przy użyciu jQuery):
Plik select.php (część javascript na dole pliku):
<?php
// Notice that you'll need to get the $dbc from somewhere, maybe require 'db.php'?
// Retrieve list of people... (notice I've added id column!)
$sql = "SELECT id, first_name, last_name FROM registration_tbl";
$query = mysqli_query($dbc, $sql);
$people = [];
while ($row = mysqli_fetch_assoc($query)){
$people[$row['id']] = $row['first_name'] . " " . $row['last_name'];
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>List of people</title>
<style type="text/css">
.error {
color: red;
box-shadow: 0px 0px 15px 0px rgba(247, 17, 40, 0.44);
}
#person-info {
padding: 10px;
margin-top: 1em;
}
</style>
</head>
<body>
<h2>People list</h2>
<label for="person">Please select one person</label>
<select name="person" id="people-selection">
<option value="-1"></option>
<?php foreach ($people as $person_id => $person_name): ?>
<option value="<?php echo $person_id ?>"><?php echo $person_name ?></option>
<?php endforeach; ?>
</select>
<div id="person-info"><!-- here we will put person info using AJAX request --></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
// We bind our AJAX handler to the onChange event of the select element
$("#people-selection").on('change', function(e) {
if ($(this).val() != -1) { // If we did select some value
$.ajax({
type: "POST",
url : "/get_people_info.php",
data: { id: $(this).val() },
})
.done(function(data) {
$("#person-info")
.removeClass("error") // we don't need the error class here, it's a success response
.html(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
$("#person-info")
.addClass("error") // in order to add some UI for the user
.html("Something went wrong!<br><blockquote>" + errorThrown + "</blockquote>");
});
}
else {
$("#person-info")
.removeClass("error")
.html("");
}
})
});
</script>
</body>
</html>
A następnie get_people_info.php
<?php
if ($_SERVER['REQUEST_METHOD'] !== "POST") {
header('HTTP/1.0 400 Bad request');
die("Only POST request accedpted!");
}
if (!isset($_POST['id'])) {
header('HTTP/1.0 400 Bad request');
die("id parameter is mandatory!");
}
$id = (int) $_POST['id'];
// Notice that you'll need to get the $dbc from somewhere, maybe require 'db.php'?
$sql = "SELECT * FROM registration_tbl WHERE id = ". $id .";";
$query = mysqli_query($dbc, $sql);
if ($row = mysqli_fetch_array($query)){
echo "<p>ID: " . " " . $row[0] . "<br>" .
"Name: " . $row[1] . " " . $row[2] . "<br>" .
"Company: " . $row[3] . "<br> " .
"Email: " .$row[4] . "<br> " .
"Date of registration: " . $row[6] . "<br> " .
"Last login: " .$row[7] . "<br>" .
"Admin/User: " .$row[8] . "</p>";
}
else {
echo "Person not found!";
}
Pozwól, że dam ci kilka dalszych czytania (powiedziałeś, że byłeś nowy do PHP, Asume całego rozwoju sieci Web):