2011-10-28 4 views
3

Je me demande si quelqu'un peut m'aider s'il vous plaît. J'essaie de créer un formulaire que je peux utiliser pour rechercher des détails de membre à partir d'une base de données mySQL, récupérer les résultats afin qu'ils apparaissent dans des zones de texte prédéfinies sur le même formulaire et faire des mises à jour à renvoyer à la base de données.Rechercher et mettre à jour MySQL avec le formulaire

Le code que je utilise est comme suit:

PHP

<?php 
require("phpfile.php"); 

// Opens a connection to a MySQL server 

$connection=mysql_connect ("hostname", $username, $password); 
if (!$connection) { die('Not connected : ' . mysql_error());} 

// Set the active MySQL database 

$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
die ('Can\'t use db : ' . mysql_error()); 
} 

$email = $_POST['email']; 
$sql = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$emailaddress%'"); 

while($row = mysql_fetch_array($sql)) 
{ 
echo $row['forename']; 
echo $row['surname']; 
echo "<br />"; 
} 
?> 

HTML FORMULAIRE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<form action="search.php" method="post">  
    <p>Search: 
    <input name="emailaddress" type="text" id="emailaddress" /> 
    <br />  
    <input type="submit" name="submit" value="Submit" />  
</p> 
    <p> 
    <label> 
    <input name="forename" type="text" id="forename" value="<?php echo $forename; ?>" /> 
    </label> 
    </p> 
    <p> 
    <input name="surname" type="text" id="surname" value="<?php echo $surname; ?>" /> 
    </p> 
    <p>&nbsp; </p> 
</form> 
</body> 
</html> 

J'utilise l'adresse e-mail pour rechercher le dossier désiré, mais le problème que j'ai est que tous les enregistrements sont récupérés plutôt que celui que j'ai Les résultats n'apparaissent pas dans les champs prénom et nom du formulaire.

Quelqu'un pourrait-il me montrer peut-être s'il vous plaît ce que je fais mal

Sincères salutations

Répondre

2

... mais si vous appuyez sur le bouton d'envoi à jour email blanc, il devrait ressembler à ceci:

if(isset($_REQUEST['submit'])) { 
$fname = mysql_real_escape_string($_POST['forename']); 
$sname = mysql_real_escape_string($_POST['surname']); 
$emai= mysql_real_escape_string($_POST['email']); 
mysql_query(UPDATE `table` SET `forename` = $fname, `surname` = $sname, `email`=$email WHERE id = `id`); 
} 
0

Vous avez appelé la variable "$ email" non "de emailaddress $". Modifiez votre requête à:

SELECT * FROM userdetails WHERE emailaddress like '%$email%' 

Auparavant, votre requête a été à la recherche d'une adresse e-mail comme « %% » - qui trouvera toutes les adresses e-mail. Dans un autre ordre d'idée, vous devez vous pencher sur l'injection SQL. C'est l'un des risques de sécurité les plus courants qui affectent les applications Web, mais il est très facile à protéger. Je ne vais pas expliquer en détail mais, pour le moment, remplacer votre ligne:

$email = $_POST['email']; 

Avec:

$email = mysql_real_escape_string($_POST['email']); 

est ici plus d'informations sur l'injection SQL: http://php.net/manual/en/security.database.sql-injection.php

+0

im pas mal de ce que veut vraiment irhm – faq

+0

Salut, excuses si je n'ai pas été aussi clair que J'aurais dû être.J'ai un formulaire dans lequel je tape une adresse email d'utilisateur, puis je soumets cette information à une table de base de données mySQL pour récupérer le prénom et le nom de famille pour l'enregistrement pertinent. Je voudrais récupérer les noms de prénom et de nom pour remplir les champs de texte prénom et nom de famille sur le même formulaire de recherche. Je vais ensuite construire sur cela et utiliser le même formulaire pour apporter des modifications aux enregistrements des utilisateurs et enregistrer les informations modifiées dans la table de base de données. J'espère que ça aide. Cordialement – IRHM

+0

Avez-vous changé le nom de la variable dans votre requête à '$ email'? –

0
  1. Vous devriez échapper l'entrée POST avant de l'utiliser. Si vous utilisez MySQL, vous pouvez utiliser la fonction mysql_real_escape_string():

    $emailaddress = mysql_real_escape_string($_POST['email']) 
    
  2. Vous peut remplir le formulaire avec les valeurs récupérées définissant le paramètre de valeur dans chaque entrée de formulaire. Pour des raisons de sécurité, assurez-vous que la sortie convertit les entités HTML:

    <input name="surname" type="text" id="surname" value="<?php echo isset($surname) ? htmlentities($surname) : null; ?>" /> 
    

Vous pouvez lire la ligne ci-dessus: est fixé $ le nom? Si c'est le cas, appliquez htmlentities et output. Sinon, renvoyez null.

Questions connexes