Автоматично зарежда на поле във

vinsbg

Registered
Здравейте,
имам една форма с която добавям потребители. Тъй като не разбрах как мога да направя 2 колони да са auto_increment се налага едно поле да го пиша всеки път .. следващото което е подред в базата. Та идеята е да ми изведе текущото кое е и да го променя, защото сега трябва да влеза в базата и да видя кое е... малко е хамалско, но не се сещам как ще стане иначе.
Та това е формата за добавяне
Код:
                    <?php
               
				$username = $_POST['username'];
				$password = $_POST['password'];
				$firstname = $_POST['firstname'];
				$lastname = $_POST['lastname'];	   
				$email = $_POST['email'];
				$number= $_POST['number'];
    					$sql = "INSERT INTO users ( username, password, firstname, lastname, email,  number)
    							VALUES (:username, :password, :firstname, :lastname, :email, :number) ";
    					$q = $pdo->prepare($sql);
    					$q->execute(array(
    						':username'	=> $username,
                  		  		':password'	=> sha1($password),
                  		  		':firstname'	=> $firstname,
                  		  		':lastname'	=> $lastname,
                  		  		':email'	=> $email,
                  		  		':number'	=> $number
                  		  		));
					Database::disconnect();	
				if (isset($_POST)) {
 				   $_SESSION['created'] = '<code>Потребителят е създаден успешно!</code>';
				} else {
				    $_SESSION['created'] = false;
				}
				header('Location: users.php');
							    					
    			}		
		   ?>
                    <form role="form" action="" method="post" enctype="multipart/form-data">

			
			<div class="form-group">
			  <label for="username">Потребителско име</label>
			    <input id="username" name="username" placeholder="потребителско име" class="form-control" type="text">
			</div>
			<div class="form-group">
			  <label for="password">Парола</label>
			    <input id="password" name="password" placeholder="парола" class="form-control" type="password">
			</div>
			 			
			<div class="form-group">
			  <label for="firstname">Име</label>
			    <input id="firstname" name="firstname" placeholder="име" class="form-control" type="text" >
			</div>

			
			<div class="form-group">
			  <label for="lastname">Фамилия</label>
			    <input id="lastname" name="lastname" placeholder="фамилия" class="form-control" type="text" >
			</div>
	
			
			<div class="form-group">
			  <label for="email">Email</label>
			    <input id="email" name="email" placeholder="E-mail адрес" class="form-control" type="text">
			</div>
					
			
			<div class="form-group">
			  <label for="number">Номер</label>
			    <input id="number" name="number"  class="form-control" type="number">
			</div>
			
			
			<div class="form-group">
			  <label class="control-label" for="submit"></label>
			    <button id="submit" name="submit" class="btn btn-success">Запази</button>
		</form>
Полето, което се налага да ъпдейтвам всеки път със следващото поред е 'number'...
 
[sql]SELECT `number` FROM `users` ORDER BY `number` DESC LIMIT 1[/sql]
Присвояваш стойността на някоя променлива (за примера нека бъде $lastId). След това правиш ъпдейт на полето $lastId+1.
 
Тоест транзакции?
Имам нещо подобно за ъпдейт във втора таблица, след като е добавено в първата...
Код:
$pdo->beginTransaction();
			        	try 
			        	{
			            	$sql = $pdo->prepare("INSERT INTO mytable ( name, image,  ) 
			           			  	VALUES (:name, :urlPathForDB)");
			            
			            		$sql->execute(array(
			            		':name' 		=> $name,
			            		':urlPathForDB' 	=> $urlPathForDB,
			            					            
			            		));
			            		$lastInsertID = $pdo->lastInsertId();
			            	$sql = $pdo->prepare("INSERT INTO mytable_table1 (id, table_id) 
  									VALUES (:id, :table_id)");
  				    		$sql->execute(array(
  				    		':id' 		=> $lastInsertID,
  				    		':table_id'	=> $rest_id
  				    		));
  				    		$pdo->commit();		
  					}
					catch (PDOException $e)
					{
	    					$pdo->rollback();
	    					ExceptionErrorHandler($e);
	   					exit;
					}
 
Аз го направих така:
Код:
	$pdo->beginTransaction();
			       	try 
			       	{
		         		$sql = "INSERT INTO users ( username, password, firstname, lastname, email, user_image, path)
    							VALUES (:username, :password, :firstname, :lastname, :email, :user_image, :path)";
			            
		            		$q = $pdo->prepare($sql);
    					$q->execute(array(
    						':username'	=> $username,
                  		  		':password'	=> sha1($password),
                  		  		':firstname'	=> $firstname,
                  		  		':lastname'	=> $lastname,
                  		  		':email'	=> $email,
                  		  		':user_image'	=> $forDB,
                  		  		':path'		=> $path                  		  		
                  		  		));		            
			            	
			            	$lastInsertID = $pdo->lastInsertId();
			            	$sql = $pdo->prepare("UPDATE users SET usertype=:user_id WHERE user_id=:user_id");
  								
  				    	$sql->execute(array(
  				    	':user_id' 		=> $lastInsertID
  				    	));
  				    	$pdo->commit();		
  				}  				
				catch (PDOException $e)
				{
	    				$pdo->rollback();
	    				ExceptionErrorHandler($e);
	   				exit;
				}
ама се замислих, че то реално няма смисъл от това ... то това поле ще ми е равно и същото като user_id поле и реално мога да ползвам него..
 

Back
Горе