how can i update multiply rows at the same time?

Discussion in 'PHP' started by baris22, Nov 8, 2008.

  1. #1
    i am trying to learn how to update multiple rows at the same time using pagination but i do not have any luck.

    I do not get any error, it is just not updating.

    thanks for the help.

    
    
    <?php
    	//connect to your database ** EDIT REQUIRED HERE **
    mysql_connect("localhost","xxx","xxx"); //(host, username, password)
    
    //specify database ** EDIT REQUIRED HERE **
    mysql_select_db("database-name") or die("Unable to select database"); //select which database we're using
    
    
    	
    	// How many adjacent pages should be shown on each side?
    	$adjacents = 3;
    	
    	/* 
    	   First get total number of rows in data table. 
    	   If you have a WHERE clause in your query, make sure you mirror it here.
    	*/
    		$query = "SELECT COUNT(*) as num FROM filedetails";
    	$total_pages = mysql_fetch_array(mysql_query($query));
    	$total_pages = $total_pages[num];
    	
    	/* Setup vars for query. */
    	$targetpage = "index.php"; 	//your file name  (the name of this file)
    	$limit = 2; 								//how many items to show per page
    	$page = $_GET['page'];
    	if($page) 
    		$start = ($page - 1) * $limit; 			//first item to display on this page
    	else
    		$start = 0;								//if no page var is given, set start to 0
    	
    	/* Get data. */
    	$query = "SELECT id, title, description FROM filedetails ORDER BY id DESC LIMIT $start, $limit";
    	$portfolio = mysql_query($query);
    	
    	/* Setup page vars for display. */
    	if ($page == 0) $page = 1;					//if no page var is given, default to 1.
    	$prev = $page - 1;							//previous page is page - 1
    	$next = $page + 1;							//next page is page + 1
    	$lastpage = ceil($total_pages/$limit);		//lastpage is = total pages / items per page, rounded up.
    	$lpm1 = $lastpage - 1;						//last page minus 1
    	
    	/* 
    		Now we apply our rules and draw the pagination object. 
    		We're actually saving the code to a variable in case we want to draw it more than once.
    	*/
    	$pagination = "";
    	if($lastpage > 1)
    	{	
    		$pagination .= "<div class=\"pagination\">";
    		//previous button
    		if ($page > 1) 
    			$pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
    		else
    			$pagination.= "<span class=\"disabled\">« previous</span>";	
    		
    		//pages	
    		if ($lastpage < 7 + ($adjacents * 2))	//not enough pages to bother breaking it up
    		{	
    			for ($counter = 1; $counter <= $lastpage; $counter++)
    			{
    				if ($counter == $page)
    					$pagination.= "<span class=\"current\">$counter</span>";
    				else
    					$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";					
    			}
    		}
    		elseif($lastpage > 5 + ($adjacents * 2))	//enough pages to hide some
    		{
    			//close to beginning; only hide later pages
    			if($page < 1 + ($adjacents * 2))		
    			{
    				for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";		
    			}
    			//in middle; hide some front and some back
    			elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
    			{
    				$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
    				$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";		
    			}
    			//close to end; only hide early pages
    			else
    			{
    				$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
    				$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";					
    				}
    			}
    		}
    		
    		//next button
    		if ($page < $counter - 1) 
    			$pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
    		else
    			$pagination.= "<span class=\"disabled\">next »</span>";
    		$pagination.= "</div>\n";		
    	}
    ?>
    <!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=utf-8" />
    <title>Untitled Document</title>
    <link type="text/css" rel="stylesheet" href="http://localhost/deneme/style.css">
    </head>
    
    <body>
    	<?php
    		
    			while($item = mysql_fetch_array($portfolio))
    			{
    			
    			 
    		
    		?><form name="form1" method="post" action="">
    <table width="100%" border="1" cellpadding="5" bordercolor="#990099">
      <tr>
        <td><? $id[]=$item['id']; ?><? echo $item['id']; ?></td>
        </tr>
      <tr>
      <tr>
        <td><input name="title[]" type="text" value="<?=$item[title]?>" size="100"></td>
        </tr>
      <tr>
        <td><textarea name="description[]" cols="100" rows="10"><?=$item[description]?>
        </textarea></td>
        </tr>
    </table><br />
    <br />
    
    
    
                
    		<?php
    			}
    		?>
    <input type="submit" name="Submit" value="Submit"> 
    
    </form> 
    <?=$pagination?>
    <?
    if($Submit){
    for($i=0;$i<$count;$i++){
    $sql1="UPDATE filedetails SET title='$title[$i]', description='$description[$i]' WHERE id='$id[$i]'";
    $result1=mysql_query($sql1);
    }
    }
    if($result1){
    header("location:index.php");
    }
    mysql_close();
    ?>
    </body>
    </html>	
    
    
    PHP:
     
    baris22, Nov 8, 2008 IP
  2. cont911

    cont911 Peon

    Messages:
    50
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I did not overview all the source code.
    I found some 'update' section at the bottom:

    if($Submit){
    for($i=0;$i<$count;$i++){
    $sql1="UPDATE filedetails SET title='$title[$i]', description='$description[$i]' WHERE id='$id[$i]'";
    $result1=mysql_query($sql1);
    }

    What I see is wrong
    1) $count is not defined, so no interation
    2) $title[$i], $description[$i], $id[$i] is undefined also
    3) if variabes in 2) would be defined,
    $sql1="UPDATE
    would not provide desired substitution

    use the following
    $sql1=sprintf("UPDATE filedetails SET title='%s', description='%s' WHERE id='%s'", $title[$i], $description[$i], $id[$i]);
    instead of
    $sql1="UPDATE filedetails SET title='$title[$i]', description='$description[$i]' WHERE id='$id[$i]'";
     
    cont911, Nov 8, 2008 IP
    baris22 likes this.
  3. baris22

    baris22 Active Member

    Messages:
    543
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    60
    #3
    thank you for the reply.

    I forgot to add

    
    
    $count=mysql_num_rows($result);
    
    
    PHP:
    to the code. it is working now.

    thanks
     
    baris22, Nov 8, 2008 IP