Помощ - Търсене - Потребители - Събития
Пълна версия: Проблем с mysql и php
GGbit.info > Hi-Tech > Web разработка
spas666
Здравейте. Аз съм нов в програмирането на php и mysql. Опитвам се да направа една форма за регистация на потребители, като отребителите ще получават рарола и потребителско име от админа на сайта. Потребителите ще имат възможност само да четат и свалят нужната им информация за тях самите. А админидстраторите да имат възможност да добавят, изтриват и променят потребители, да качват нова информация за съответния потребител. И всичкото това трябва да се запазва в една база данни. До тука съм направил входа на потребителите. От админ панела съм направил изтриването и добавчнето на потребители. За промяната на потребители ми дава грешка. т.е. визуално работи но не ми променя информацията в самата база данни. Благодаря предварително

ето го кода кадето използвам

user.php
<html>
<meta http-equiv="content-type" content="text/html"; charset="utf-8">
<head>
<title></title>
</head>
<body bgcolor="#F5FDE6">

<?php

echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";

$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="ideq"; // Database name
$tbl_name="users"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die(mysql_error());
mysql_select_db("$db_name")or die(mysql_error());
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die(mysql_error());

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

?>
<center>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4" bgcolor="#FFFFFF" align="center"><strong>Опции над потребителите</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Потребител</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Парола</strong></td>
</tr>

<?php
$checkbox = $_POST['checkbox'];
$button = $_POST['button'];
while($rows=mysql_fetch_array($result)){
?>

<tr> <td align="center" bgcolor="#FFFF9F">
<input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id'];?>"></td>
<td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['user']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['password']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="2" align="center" bgcolor="#FFFFFF">
<input name="delete" type="submit" id="delete" value="Delete"></td>
<td colspan="1" align="center" bgcolor="#FFFFFF"><input type="button" name="btnDelete" onClick="this.form.action='change.php'; this.form.submit();" value="Change"></td>
<td colspan="1" align="center" bgcolor="#FFFFFF"><input type="button" name="btnDelete" onClick="this.form.action='upload.php'; this.form.submit();" value="Upload"></td>
</tr>
<?php

// Check if delete button active, start this
if($_POST['delete']){
for($i=0;$i<count($_POST['checkbox']);$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}

// if successful redirect to delete_multiple.php
if($result){

echo "<meta http-equiv=\"refresh\" content=\"0;URL=users.php\">";
}
}
?>
</table>
</form>
</td>
</tr>
</table>

<form name="back" method="post" action="new.php">
<input name="back" type="hidden" value="1">
<input type="Submit" value="Нов потребител">
</form><br>

</center>

</body>
</html>
<?php
mysql_close();
?>




а това е на change.php

change.php
<html>
<meta http-equiv="content-type" content="text/html"; charset="utf-8">
<head>
<title></title>
</head>
<body bgcolor="#F5FDE6">
<center>

<?php

$con = mysql_pconnect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("ideq", $con) or die (mysql_error());
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die(mysql_error());

$ids = isset($_POST['checkbox']) ? ( is_array($_POST['checkbox']) ? $_POST['checkbox'] : array($_POST['checkbox']) ) : array();
$id = $ids[0];
$user= trim($_POST['user']);
$password = trim($_POST['password']);

$result = mysql_query("SELECT * FROM users WHERE id='$id'") or die (mysql_error());
$count=mysql_num_rows($result);

if($row = mysql_fetch_array($result))
{

?>

<form name="form" method="post" action="change1.php">
<table align="center" border="1" cellspacing="1" cellpadding="1">
<tr>
<td bgcolor="#D6DDEF" align="center"><b> # </b></td>
<td bgcolor="#D6DDEF" align="center"><b> Стари данни </b></td>
<td bgcolor="#D6DDEF" align="center"><b> Нови данни </b></td>
</tr>
<tr>
<td bgcolor="#D6DDEF" width="100" align="center"><b> ID: </b></td>
<td bgcolor="#ffffff" align="center"><?php echo $row['id']; ?></td>
<td align="center"><input type="text" name="id_preview" value="<?php echo $row['id']; ?>" disabled="disabled">
<input type="hidden" name="ID" value="<?php echo $row['id']; ?>" />
</td>
</tr>
<tr>
<td bgcolor="#D6DDEF" width="100" align="center"><b> Потребител: </b></td>
<td bgcolor="#ffffff" align="center"><?php echo $row['user']; ?></td>
<td align="center"><input type="text" name="user" value="<?php echo $row['user']; ?>"></td>
</tr>
<tr>
<td bgcolor="#D6DDEF" width="100" align="center"><b> Парола: </b></td>
<td bgcolor="#ffffff" bgcolor="#ffffff" align="center"><?php echo $row['password']; ?></td>
<td align="center"><input type="text" name="password" value="<?php echo $row['password']; ?>"></td>
</tr>
</table><br>

<input name="register" type="hidden" value="1">
<input type="Submit" value="Промени">

</form>

<form name="back" method="post" action="users.php">
<input name="back" type="hidden" value="1">
<input type="Submit" value="Назад">
</form>

</center>
</body>
</html>

<?php
}
mysql_close();
?>



и на последната страница change1.php
change1.php
<html>
<meta http-equiv="content-type" content="text/html"; charset="utf-8">
<head>
<title></title>
</head>
<body bgcolor="#F5FDE6">
<center>

<?php

$id = trim($_POST['id']);
$user = trim($_POST['user']);
$password= trim($_POST['password']);

$con = mysql_pconnect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("ideq", $con) or die (mysql_error());
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die (mysql_error());

$query = mysql_query("UPDATE users SET user='$user', password='$password' WHERE id='$id'") or die (mysql_error());

?>

<table align='center' border='1' cellpadding='2' cellspacing='2' bgcolor ='#FFFFFF'>
<tr>
<td><strong>Потребител</strong></td>
<td><?php echo $user; ?></td>
</tr>
<tr>
<td><strong>Парола</strong></td>
<td><?php echo $password; ?></td>
</tr>
</table>

<form name='back' method='post' action='users.php'>
<input name='back' type='hidden' value='1'>
<input type='Submit' value='Назад'>
</form>

</body>
</html>

<?php
mysql_close();
?>
Relevant Advertise!
spas666
Мерси за отговорите които ми писахте. КОПЕЛЕТА

vIkToRsHeFa
Цитат(spas666 @ Sep 30 2008, 11:03) *
Мерси за отговорите които ми писахте. КОПЕЛЕТА

1. Предупредителното ти ниво е повишено, в този форум за разлика от много други не се толерира подобно държание и тон!
2. Форум това е дискусия, никой не е задължен да ти отговаря на въпросите.
3. Има тагове за форматиране на кода, избълван в този му формат напълно ме отказваш изобщо да се опитам да го разчитам, камо ли да търся пропуските ти.

Относно кода какво ми се наби на очи:
1. Ползвай utf8 само при нужда! Ако се въвежда само текст на кирилица и латиница няма смисъл от UTF8 ползвай cp1251(windows-1251).
2. Няма нужда да ползваш mysql_close($link) конструкцията, освен ако нямаш повече от една връзки към бази данни.
3. Ползвай mysql_real_escape_string() за пречистване на входното инфо към базата данни.
4. Не съхранявай паролите в plain вариант поне им шибни един md5...

Относно проблема ти с обновяването ползвай бактрейс, пробвай да принтираш заявката и да я изпълниш през phpmyadmina за да видиш дали всичко е коректно там и дали всички стойности са нализе и каква грешка ще ти върне. smile.gif
bulter
Cool glare.gif Първият пост който чета в този форум и останах без думи glare.gif
От къде ли да започна ... ?!

Код
<body bgcolor="#F5FDE6">

<?php

echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";


Какъв беше смисълът тука да започваш РНР-то преди да дефинираш Мета тага който като по между другото трябва да се намира в HEAD ?!

Код
mysql_connect("$host", "$username", "$password")


Функцията ще се имплементира без проблем и без " (кавичките) безсмислени са .

Код
// if successful redirect to delete_multiple.php
if($result){

echo "<meta http-equiv=\"refresh\" content=\"0;URL=users.php\">";
}


Както казах Мета таговете трябва да са дефинирани в Header-a в този случай можеш да ползваш функцията header() за да си реализираш редирекцията.

Код
$ids = isset($_POST['checkbox']) ? ( is_array($_POST['checkbox']) ? $_POST['checkbox'] : array($_POST['checkbox']) ) : array();

$id = $ids[0];
$user= trim($_POST['user']);
$password = trim($_POST['password']);

$result = mysql_query("SELECT * FROM users WHERE id='$id'") or die (mysql_error());


Направо ще ме убиеш wink.gif
Пробвай така:

Код
$id            = (int)$_POST["checkbox"][0];
$user        = trim($_POST["user"]);
$password = trim($_POST["password"]);

$result = mysql_query("SELECT * FROM users WHERE id='".$id."'")or die(mysql_error());


Това:

Код
$id = trim($_POST['id']);
$user = trim($_POST['user']);
$password= trim($_POST['password']);

$con = mysql_pconnect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("ideq", $con) or die (mysql_error());
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die (mysql_error());

$query = mysql_query("UPDATE users SET user='$user', password='$password' WHERE id='$id'") or die (mysql_error());


Така:

Код
$id            = (int)$_POST['id'];
$user        = trim($_POST['user']);
$password = trim($_POST['password']);

$con = mysql_pconnect("localhost", "root", "")or die('Could not connect: ' . mysql_error());

mysql_select_db("ideq", $con) or die (mysql_error());
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'") or die (mysql_error());

$query = mysql_query("UPDATE users SET user='".$user."', password='".$password."' WHERE id='".$id."'") or die (mysql_error());


Пич няма ко да ти редактирам кода smile.gif безсмислено е "кодът" ти е неспасяем tongue.gif
Защо имам чувството, че това не си го писал ти не знам ... мирише на Copy&Paste smile.gif
Почети малко и пак си задай въпроса, но следващият път по културно wink.gif
А да няма да е зле да видиш какво са Template-ите и да прочетеш малко за MVC ( Model-View-Controller ) или изцяло какво е Design Pattern smile.gif
Това е "lo-fi" версия на нашия форум. За да видите пълната версия, моля натиснете тук.
Invision Power Board © 2001-2018 Invision Power Services, Inc.