Index: query_store_page.php
===================================================================
--- query_store_page.php
+++ query_store_page.php
@@ -43,10 +43,34 @@
 		print "<br />$t_error_msg<br /><br />";
 	}
 
-	print lang_get( 'query_name' ) . ': ';
+	//print lang_get( 'query_name' ) . ': ';
 ?>
-	<form method="POST" action="query_store.php">
-	<input type="text" name="query_name"><br />
+	<form method="POST" action="query_store.php" name="query">
+	<table cellspacing="0" cellpadding="2">
+		<tr>
+			<td>
+				<?php print lang_get( 'query_name' ) . ': '; ?>
+			</td>
+			<td>
+				<input type="text" name="query_name">
+			</td>
+		</tr>
+		<tr>
+			<td>
+				<?php print lang_get( 'query_existing' ) . ': '; ?>
+			</td>
+			<td>
+				<select name="query_existing" onchange="javascript: document.forms.query.query_name.disabled = !!this.options[this.selectedIndex].length;">
+					<option value=""></option>
+					<?php 
+						foreach ($t_query_arr as $t_id => $t_name) {
+							echo "<option value=\"{$t_id}\">{$t_name}</option>\r\n";
+						}
+					?>
+				</select>
+			</td>
+		</tr>
+	</table>
 	<?php
 	if ( access_has_project_level( config_get( 'stored_query_create_shared_threshold' ) ) ) {
 		print '<input type="checkbox" name="is_public" value="on"> ';
Index: query_store.php
===================================================================
--- query_store.php
+++ query_store.php
@@ -19,27 +19,38 @@
 	auth_ensure_user_authenticated();
 	compress_enable();
 
-	$f_query_name = strip_tags( gpc_get_string( 'query_name' ) );
+	$f_query_id = gpc_get_int( 'query_existing' );
 	$f_is_public = gpc_get_bool( 'is_public' );
 	$f_all_projects = gpc_get_bool( 'all_projects' );
-
 	$t_query_redirect_url = 'query_store_page.php';
+	$f_query_name = null;
 
-	# We can't have a blank name
-	if ( is_blank( $f_query_name ) ) {
-		$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
-			. urlencode( lang_get( 'query_blank_name' ) );
-		print_header_redirect( $t_query_redirect_url );
-	}
-
-	# Check and make sure they don't already have a
-	# query with the same name
-	$t_query_arr = filter_db_get_available_queries();
-	foreach( $t_query_arr as $t_id => $t_name )	{
-		if ( $f_query_name == $t_name ) {
+	if (!$f_query_id) {
+		$f_query_name = strip_tags( gpc_get_string( 'query_name' ) );
+		
+		# We can't have a blank name
+		if ( is_blank( $f_query_name ) ) {
 			$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
-				. urlencode( lang_get( 'query_dupe_name' ) );
+				. urlencode( lang_get( 'query_blank_name' ) );
 			print_header_redirect( $t_query_redirect_url );
+		}
+
+		# Check and make sure they don't already have a
+		# query with the same name
+		$t_query_arr = filter_db_get_available_queries();
+		foreach( $t_query_arr as $t_id => $t_name )	{
+			if ( $f_query_name == $t_name ) {
+				$t_query_redirect_url = $t_query_redirect_url . '?error_msg='
+					. urlencode( lang_get( 'query_dupe_name' ) );
+				print_header_redirect( $t_query_redirect_url );
+				exit;
+			}
+		}
+	} else {
+		if (!($f_query_name = filter_get_field($f_query_id, "name"))) {
+			$t_query_redirect_url = $t_query_redirect_url . '?error_msg=' . 
+				urlencode( lang_get( 'query_invalid_id' ) );
+			print_header_redirect( $t_query_redirect_url );
 			exit;
 		}
 	}
