2012-12-15 4 views
-2

Я хочу показать всех пользователей, за которые отвечает «супер» пользователь. Затем пользователь «супер» может отправить комментарий любому пользователю, нажав на свой идентификатор пользователя.

Первая часть показа всех пользователей работает нормально! Моя проблема заключается в отправке комментария суперпользователем. Я хочу сохранить идентификатор пользователя (т. Е. suid) в базе данных. Поэтому я думаю использовать функцию $_Get. Но когда я попробовал, в базе данных ничего не хранится. Думаю, я ошибся. Так может ли кто-нибудь помочь мне в этом?

Это код, который покажет всем пользователям суперпользователя:

<?php 

session_start();?> 
<?php 
require("noCache.php"); 
$uid=$_SESSION['uid']; 

?> 
<html> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title>Send a comment</title> 
<meta charset="utf-8"> 
<link rel="stylesheet" href="css/reset.css" type="text/css" media="all"> 
<link rel="stylesheet" href="css/layout.css" type="text/css" media="all"> 
<link rel="stylesheet" href="css/style.css" type="text/css" media="all"> 
<script type="text/javascript" src="js/jquery-1.4.2.js" ></script> 
<script type="text/javascript" src="js/cufon-yui.js"></script> 
<script type="text/javascript" src="js/cufon-replace.js"></script> 
<script type="text/javascript" src="js/Myriad_Pro_400.font.js"></script> 
<script type="text/javascript" src="js/Myriad_Pro_700.font.js"></script> 
<script type="text/javascript" src="js/Myriad_Pro_600.font.js"></script> 
</head> 


<body> 
<div class="main"> 

    <header> 
     <div class="wrapper"> 
      <h1><a href="index.php" id="logo"> Biz</a></h1> 

     </div> 
     <nav> 
      <ul id="menu"> 
       <li class="alpha"><a href="index.php"><span><span>Home</span></span></a></li> 
       <li><a href="About.html"><span><span>About</span></span> </a></li> 
       <li><a href="Projects.html"><span><span>Projects</span></span></a></li> 
       <li><a href="Contacts.php"><span><span>Contacts</span></span></a></li> 
       <li class="omega"><a href="Services.html"><span><span>Services</span></span></a></li> 
      </ul> 
     </nav> 
     </br></br> 

</header> 


<head> 
<!-- CSS Stylesheet --> 
<style type="text/css"> 
html{ 

} 
body{ 
    text-align:center; 

} 

</style> 
</head> 
<?php 
$dbh=mysql_connect("localhost", "root", "hahaha1") or die (mysql_error()); 
mysql_select_db ("senior"); 
$result = mysql_query("SELECT * FROM sensorusers where uid=$uid"); 
echo "<html><body>"; 
echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>"; 
while ($row = mysql_fetch_array($result)) 
{ echo "<form method='post' action='sendcomment.php'>"; 
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['dusername'] . "</td>"; 
    echo "<td>" . $row['password'] . "</td>"; 
    echo "<td>" . $row['date'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td></tr></form>"; 
    $_GET['suid'] = $row['suid']; 
} 

echo "</table></body></html>"; 
mysql_close($dbh); 
?> 
<html> 
<body> 
<!-- CSS Stylesheet --> 
<style type="text/css"> 

body { 

    font-family:"Andalus" 
    font: 16px ; 
    color:black; 
    padding: 30px 5px; 
    text-align: center; 
} 

</style></body></html> 

Вот часть, которую я хочу спросить о:

echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>"; 
while ($row = mysql_fetch_array($result)) 
{ echo "<form method='post' action='sendcomment.php'>"; 
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['dusername'] . "</td>"; 
    echo "<td>" . $row['password'] . "</td>"; 
    echo "<td>" . $row['date'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td></tr></form>"; 
    $_GET['suid'] = $row['suid']; 
} 

Решение:

Спасибо всем за помощь. Я исправил код. Я использовал метод post, чтобы сохранить значение suid в первый раз. Затем я печатаю его как скрытый ввод. Наконец, я сохраняю значение скрытого ввода в sql, и он работает!

+1

Пожалуйста, разместите только код, относящийся к вашему вопросу. – Mike

+0

Являются ли ваши 'suid' и' uid' в таблице, если тип int? – Chipmunk

+0

да, они оба целые числа –

ответ

1

У вас есть POST Я НЕ ВИДИТ GET в вашем коде и зависит от ваших входов html (u did not post them), если вы создаете метод GET или POST. если ваш метод GET, то вы используете GET

но попробуйте использовать этот

 if(isset($_POST['submit'])){ 

вместо

if($submit){ 

EDIT.

вы используете method='post' , то вы должны использовать POST не GET

EDIT2: у Вас есть ошибка в вашем SQL, вы использовали VALUE и она должна быть VALUES

вместо этого

$place="INSERT INTO comments VALUE 

заменить его на

$place="INSERT INTO comments (columns here ,..., ,..) VALUES 
+0

вы можете найти GET в первом коде в цикле while –

+0

Посмотрите мои обновленные –

+0

'$ submit = $ _POST ['submit']; переменная' 'submit' устанавливается через' $ _POST', так что , чтобы фактически использовать то, что ОП пытается 'if (isset ($ submit)) {...}' –

1

Как использовать $_GET:
Поместите данные в URL, как так:

sendcomment.php?suid=blahblahblah 

Затем вы можете использовать $_GET, например, так:

$suid = $_GET['suid'] 

В настоящее время код использует POST для отправьте suid
Или измените свой способ формы.


echo "<form method='post' action='sendcomment.php?suid=".$row['suid']."'>"; 
+0

Я пробовал ур последний комментарий, но это не сработало –

0

Просто это

$id1=$_GET["suid"]; 

заменить

$id1=$_POST["suid"]; 

При использовании $ _GET varible shuld быть в ссылке. При использовании переменной $ _POST не указывается в url

+0

i trieg post тоже не работает :( –

1

В коде есть несколько проблем. Я постараюсь перечислить самые большие, но все еще могу пропустить некоторые.

Код 1 -
Выпуск 1
У вас есть несколько <html></html>, <head></head> и <body></body> блок.

<html> 
... 
<head> 
... 
</head> 
<body> 
... 
<head> 
... 
</head> 
... 
echo "<html><body>"; 
... 
echo "...</body></html>"; 
... 
<html> 
<body> 
... 
</body> 
</html> 

Выпуск 2
Ваш <form> находится вокруг <td> блока, который является недействительным, поэтому он не будет POST должным образом. Это либо должно быть вокруг стола <form><table></table></form>, либо внутри ячейки <td><form></form></td>.

echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>"; 
while ($row = mysql_fetch_array($result)) 
{ echo "<form method='post' action='sendcomment.php'>"; 
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['dusername'] . "</td>"; 
    echo "<td>" . $row['password'] . "</td>"; 
    echo "<td>" . $row['date'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td></tr></form>"; 
    $_GET['suid'] = $row['suid']; 
} 

echo "</table></body></html>"; 

Выпуск 3
Вы злоупотребляете $_GET и находится за пределами ваших <form></form> тегов. $_GET используется для получения значения от url.

$_GET['suid'] = $row['suid']; 

Код 2-
Выпуск 1
Вы настраиваете $id1=$_GET["suid"];, но в вашей форме в код # 1, вы используете method="post".

$id1=$_GET["suid"]; 

Выпуск 2
Когда вы отправляете из кода № 1 к Code # 2 (<form><input type='submit' name='suid' value='".$row['suid']."' /></form>), вы только отправка name='suid', так что все ваши $_GET & $_POST варов не будут установлены для использования в INSERT -

$id1=$_GET["suid"]; 
... 
$name=$_POST['sent_by']; 
$id=$_POST['hidden_id']; 
$id2=$_POST['hidden_id2']; 
$message=$_POST['message']; 
$submit= $_POST['submit']; 
... 

Выпуск 3
Вы ошибки в запросе.Он должен быть VALUES, а не VALUE, вы должны включать столбцы перед комментариями INSERT INTO (id, name, message, receiver, sender, date, time) VALUES ('', '$ name', '$ message', '$ идентификатор», '$ id1', '$ дата', '$ времени')

$place="INSERT INTO comments VALUE('','$name','$message','$id','$id1','$date','$time')"; 
$run = mysql_query("$place"); 

Выпуск 4
Все ваши value= в вашей форме отсутствуют котировки '' вокруг ценностей.

<form action="sendcomment.php" method="post"> 
    <input type ='hidden' name='hidden_id' value = <?php print $uid; ?> > 
    <input type ='hidden' name='hidden_id2' value = <?php print $id1; ?> > 
    Name : <input type ='name' name='sent_by' value = <?php print $username; ?>></br> 
    Message: <textarea name='message'></textarea></br> 
    <input type='submit' value='submit' name="submit" /></br> 
</form> 

Я знаю, что вы приняли ответ, но у вас есть много проблем с кодом, которые нужно адресовать. Каждый из них вызовет проблемы с вашей формой и вставляет в вашу базу данных. Плюс они вызовут у вас больше проблем.

+0

действительно ур ответ полезен, я внес изменения в свои коды .. но я не понял этого «Когда вы отправляете с Код №1 - Код № 2 (

>
), вы отправляете только имя = 'suid' , поэтому все ваши $ _GET & $ _POST vars не будут использоваться для использования в INSERT " –

+0

Ваш 1-й цикл файла' while ($ row = mysql_fetch_array ($ result)) 'создает форму для отправки в' sendcomment.php' - '

'. Единственное поле в этой форме - 'suid' -' '. На загрузке 1-й страницы 'sendcomment.php' он попытается установить ваши' $ vars' - '$ id1 = $ _ GET [" suid "]; $ name = $ _POST ['sent_by']; $ id = $ _ POST ['hidden_id']; $ id2 = $ _ POST ['hidden_id 2' ]; $ Сообщение = $ _ POST [ 'сообщение']; $ submit = $ _POST ['submit']; '. Вы должны поместить эти & 'if ($ submit) {}' block внутри 'if (isset ($ _ POST ['message']) {}', чтобы проверить, отправлено – Sean

+0

, спасибо вам очень много Шона –

Смежные вопросы