2013-06-30 23 views
0
<?php 

include('../Adress/includes/mysql_connection_recepti.php'); 

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

$conn = dbConnect($_POST['username']); 


$city=$_POST['city']; 

$sql= 'SELECT * FROM adress_table WHERE city="'.$city.'"'; 

$result=mysql_query($sql); 

$numRows=mysql_num_rows($result); 

?> 

<p><?php echo $numRows; ?> records is found.</p> 

<table> 
<tr> 
<th>Number</th> 
<th>Name</th> 
<th>Last Name</th> 
<th>City</th> 
<th>Country</th> 
<th>Date</th> 
</tr> 

<?php 
$n=0; 

while($row = mysql_fetch_assoc($result)){ 
//print_r($row); 

$n++; 

?> 

<tr> 
<td><?php echo $n . ".";?></td> 
<td><?php echo $row['name'] ?></td> 
<td><?php echo $row['last_name'] ?></td> 
<td><?php echo $row['city'];?></td> 
<td><?php echo $row['country'] ?></td> 
<td><?php echo $row['date'] ?></td> 
</tr> 

<?php }?> 

</table> 

<?php }?> 
</body> 
<body> 

<form action="" method="post"> 
<input type="text" id="username" name="username"/> 


<select name="city"> 
<option value="new_york">New York</option> 
<option value="london">London</option> 
<option value="belgrade">Belgrade</option> 
<option value="zagreb">Zagreb</option> 
<option value="moscow">Moscow</option> 

<input type="submit" value="Find"> 
</select> 
</body> 

Как вы можете видеть, в моем заявлении sql указывается, что каждый столбец должен отображаться, когда city = "'. $ City.'", И это совершенно нормально. Но когда я пытаюсь показать некоторый определенный столбец (ы), не все (*), напримерПроблемы с отображением результатов mysql

$sql= 'SELECT name,last_name FROM adress_table WHERE city="'.$city.'"'; 

то ошибка возникает, bacause

<td><?php echo $row['city'];?></td> 
<td><?php echo $row['country'] ?></td> 
<td><?php echo $row['date'] ?></td> 

не определены. Для того, чтобы исправить это я ставлю знак @

<td><?php @ echo $row['city'];?></td> 
<td><?php @ echo $row['country'] ?></td> 
<td><?php @ echo $row['date'] ?></td> 

, чтобы скрыть сообщения об ошибках, и я кот вам сказать, что все выглядит совершенно нормально, но я не знаю, это хорошая практика. Что мне делать? Спасибо.

+2

Обычный способ предотвратить это проверка каждой переменной с http://php.net/isset, но почему вы пытаетесь вывода столбцов, которые вы не выбирающих в первую очередь ? Я не понимаю, как это будет иметь смысл. –

+0

Потому что я предполагаю, что в sql-заявлении имя столбцов, которые должны отображаться, может быть динамически выбрано пользователем, но я не показал это в этом коде. – natttan

+0

Вы не можете ограничить * отображение * столбцов, используя ту же систему, которую вы используете для ограничения запросов? –

ответ

2

Вы можете просто использовать, если проверить, есть ли что-то там или нет:

<?php echo isset($row["city"]) ? $row["city"] : "" ?> 
+0

Не могу поверить, что мы добавили тот же ответ :) – Nitesh

+1

Да. Ну, я думаю, что он получил идею^_^ –

+0

Спасибо, я думаю, что я сделал это в первую очередь, мне кажется очевидным, чтобы попробовать, но что-то пошло не так. Я попробую еще раз, спасибо! – natttan

1

Вы пытаетесь отобразить столбец, который не присутствует в вашем SQL запросе. Вы можете использовать что-то вроде -

<?php echo isset($row["city"]) ? $row["city"] : "" ?> 
+1

Да, да, это работает. Спасибо вам всем. – natttan

+0

@natttan Рад, что это работает! – Nitesh

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