webForumDet fria alternativet

Vad e det för fel? får error meddelande fast allt ser rätt ut :/

PHP

5 svar · 1 257 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Tjena igen jag har gjort ett litet registreringsformulär men när jag ska testa det får får jag ett felmeddelande som lyder

Column count doesn't match value count at row 1

Men när jag jag går in i koden och felsöker så hittar jag inte något fel, eller är det bara min nybörjar ögon som inte ser felet??

min php kod ser ut såhär

<?php
//REGISTRERA//
if($_POST['submit1'])
{
	$emailr 			= strip_tags($_POST['emailr']);
	$passwordr 			= strip_tags($_POST['passwordr']);
	$repeat_passwordr 	= strip_tags($_POST['repeat_passwordr']);
	$firstnamer 		= strip_tags($_POST['firstnamer']);
	$lastnamer 			= strip_tags($_POST['lastnamer']);
	$genderr 			= $_POST['genderr'];	
	
	if($emailr&&$passwordr&&$repeat_passwordr&&$firstnamer&&$lastnamer&&$genderr)
	{
		//check for existing email
		$query = mysql_query("SELECT * FROM user WHERE email='$emailr'");
		if(mysql_num_rows($query)>=1)
			echo "Din email du angav finns redna registrerad hos oss.";
			{
				if(strlen($passwordr)<6)
					echo "Lösenordet måste vara minst 6tecken långt!";
				else 
				{
					if($passwordr==$repeat_passwordr)
					{
						//Haschar lösenordet//
						$password_db = md5($passwordr);
						//Kollar längden på förnamn och efternamnet
						if(strlen($firstnamer)<3||strlen($lastnamer)<3)
							echo "ditt förnamn måste ha minst 3tecken och ditt efternamn måste minst ha 3tecken";
						else
						{
							//Anger tecken för könet//
							switch ($gender)
							{
								case "Man":
									$gender_db = "M";
								break;
								case "Kvinna":
									$gender_db = "F";
								break;		
							}
							// Add user info into the database table, claim your fields then values 
							$sql = mysql_query("INSERT INTO user  (email, password, firstname, lastname, gender, signupdate) VALUES('','$emailr','$password_db','$firstnamer','$lastnamer','$gender_db','$email', now())") or die (mysql_error());
							// Get the inserted ID here to use in the activation email
							$id = mysql_insert_id();
							// Create directory(folder) to hold each user files(pics, MP3s, etc.) 
							mkdir("memberFiles/$id", 0755); 
							//ge medlemen en success meddelande//
							echo "Din registrering lyckades felfritt. <br> Tack för din registrering. ";
						}
					}
					else
						echo "Din lösenord du angav matchar inte varandra!";
				}
			}	
	}
	else
		echo "Snälla fyll i allt tack!";
}
?>

och min form som jag gjorde för att skicka datan till som är samma sida.
som sagt min form ser ut följande

 <fieldset style="width: 650px;">
				<legend>Bli Medlem</legend>
                <form action='login.php' method='post'>
                	<table width="640">
  						<tr>
    						<td align="right">Din Email:</td>
    						<td><input type='text' name='emailr' /></td>
  						</tr>
                        <tr>
    						<td align="right">Lösenord:</td>
    						<td><input type='password' name='passwordr' /></td>
  						</tr>
                        <tr>
    						<td align="right">Repetera lösenordet</td>
    						<td><input type='password' name='repeat_passwordr' /></td>
  						</tr>	
                        <tr>
    						<td align="right">Förnamen</td>
    						<td><input type='text' name='firstnamer' /></td>
  						</tr>
                        <tr>
    						<td align="right">Efternamn:</td>
    						<td><input type='text' name='lastnamer' /></td>
  						</tr>
                        <tr>
    						<td align="right">Kön:</td>
    						<td>
                            	<select name='genderr'>
    								<option>Kvinna</option>
        							<option>Man</option>
    							</select>
            				</td>
  						</tr>
                        <tr>
    						<td colspan="2" align="right"><input type='submit' name='submit1' value='Registrera' /></td>
   						</tr>
					</table>
                </form>
			</fieldset>

Förklara lite enkelt vad felet kan vara. Jag är lite ny fortfarande jag försöker lära mig själv men nu hittar jag inte felet så jag vänder mig hit :)

// Robin K
http://www.mycodez.se --- Min blogg :)

Medlem sedan juni 200032 967 inlägg
#2

Felmeddelandet säger vad som är fel - Du har angett fler värden än kolumner i din INSERT.

Medlem sedan juli 20023 617 inlägg
#3

Som @nders säger: Du försöker fördela åtta värden på sex kolumner...

Medlem sedan aug. 20039 340 inlägg
#4

Som två personer har sagt tidigare...

$sql = mysql_query("INSERT INTO user  (email, password, firstname, lastname, gender, signupdate) VALUES('','$emailr','$password_db','$firstnamer','$lastnamer','$gender_db','$email', now())")

I VALUES så är '' (först) och $email (näst sist) överflödiga.
För öfvrigt, ta och escapea det du petar ni i databasen, annars kan folk göra osnälla saker genom att avsluta strängen genom att stoppa in en extra enkelfnutt. Jag låter följande stripp förklara konceptet:

    $emailr             = mysql_real_escape_string(strip_tags($_POST['emailr']));
    $passwordr             = mysql_real_escape_string(strip_tags($_POST['passwordr']));
    $repeat_passwordr     = mysql_real_escape_string(strip_tags($_POST['repeat_passwordr']));
    $firstnamer         = mysql_real_escape_string(strip_tags($_POST['firstnamer']));
    $lastnamer             = mysql_real_escape_string(strip_tags($_POST['lastnamer']));
    $genderr             = mysql_real_escape_string($_POST['genderr']);
Medlem sedan feb. 2010445 inlägg
#5

tack jag såg det lite tack alla(A)

Medlem sedan feb. 2010445 inlägg
#6

nitro2k01 skrev:

Som två personer har sagt tidigare...

$sql = mysql_query("INSERT INTO user  (email, password, firstname, lastname, gender, signupdate) VALUES('','$emailr','$password_db','$firstnamer','$lastnamer','$gender_db','$email', now())")

I VALUES så är '' (först) och $email (näst sist) överflödiga.
För öfvrigt, ta och escapea det du petar ni i databasen, annars kan folk göra osnälla saker genom att avsluta strängen genom att stoppa in en extra enkelfnutt. Jag låter följande stripp förklara konceptet:

    $emailr             = mysql_real_escape_string(strip_tags($_POST['emailr']));
    $passwordr             = mysql_real_escape_string(strip_tags($_POST['passwordr']));
    $repeat_passwordr     = mysql_real_escape_string(strip_tags($_POST['repeat_passwordr']));
    $firstnamer         = mysql_real_escape_string(strip_tags($_POST['firstnamer']));
    $lastnamer             = mysql_real_escape_string(strip_tags($_POST['lastnamer']));
    $genderr             = mysql_real_escape_string($_POST['genderr']);

Tack får fixa det man vill ju inte att någon gör något dumt:)

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)