Why are the A, and D input keys,both moving my character right?

So ive been trying to get this 2.5D Player controller working they way i want for a day now. Ive tried multiple methods and finaly came up with a solution for my problem getting the player to face the direction im moving, however now my player only moves right.

I think it has to do with the problematic peice of code i will highlight bellow, as when i remove it, the movement works fine, but im not sure. i will also post the full code below that just in case.

Problem code:

// Get Axis for player input

		var x = Input.GetAxis("Horizontal") * Time.deltaTime * walk;
		var z = Input.GetAxis("Vertical") * Time.deltaTime * walk;

		transform.Rotate(0, 0, 0);
		transform.Translate(0, 0, x);

		//Rotate character in the direction they're moving
		if (x != 0)
		{
			if (x > 0)
				transform.forward = new Vector3(1, 0, 0);
			else if (x < 0)
				transform.forward = new Vector3(-1, 0, 0);
		}

full code :

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {


	public float walk = .7f;
	public Animation anim;

	void Start ()
	{

		anim = GetComponent<Animation>();

	}
	void Update()

	{

		// Get Axis for player input

		var x = Input.GetAxis("Horizontal") * Time.deltaTime * walk;
		var z = Input.GetAxis("Vertical") * Time.deltaTime * walk;

		transform.Rotate(0, 0, 0);
		transform.Translate(0, 0, x);

		//Rotate character in the direction they're moving
		if (x != 0)
		{
			if (x > 0)
				transform.forward = new Vector3(1, 0, 0);
			else if (x < 0)
				transform.forward = new Vector3(-1, 0, 0);
		}


		anim ["walk_normal"].speed = 2f;


		if(Mathf.Abs(Input.GetAxis("Horizontal"))>0.1F)
			anim.Play("walk_normal");


		else
			anim.Play ("idle_normal");

Thanks

Chris

You move the transform forward x units every frame. The problem is x can be positive or negative and you also rotate the transform based on the sign of x.

So if x is 5, you set the forward vector to be 1,0,0 and move the transform to that direction times x:
5 * (1,0,0) = (5,0,0)

If x is -5 you set the forward vector to be -1,0,0 and move the transform to that direction times x:
-5 * (-1,0,0) = (5,0,0)

You should disregard the sign of x when moving since the rotation of the transform already handles the direction

 transform.Translate(0, 0, Mathf.Abs(x));