Tuli tässä sellainen ongelma että koodini antaa kokoajan virheilmoituksen
Parse error: parse error, unexpected $ in /home/eekauppa/public_html/rekisteroi.php on line 48
Ja tätä kyseistä riviä ei ole, mutta sitä edellinen on, joten vika on {} merkeissä. Olen tätä yrittänyt puia jo jotain tunnin verran mutta vikaa ei löydy.
P.S. Elkää valittako mysql syntakseista tms. koska ne on phpmyadminin mukaisia.
rekisteroi.php
<?php
$dbh=mysql_connect ("localhost", "*", "*") or die (mysql_error());
mysql_select_db("salattu_kanta :P") or die (mysql_error());
if (isset($_POST["tunnus"])) {
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_num_rows(mysql_query($kysely1, $dbh)) or die (mysql_error());
$kyssari = "SELECT * FROM `kayttajat` WHERE 1 AND `username` LIKE '".$_POST['tunnus']."'";
$query2 = mysql_query($kyssari, $dbh) or die(mysql_error());
$maara = mysql_num_rows($query2);
if ($maara>0) {
echo "Tunnus on jo käytössä";
}
else {
if ($_POST['salasana'] != $_POST['salasana2']) {
echo "Salasanat eivät ole samanlaisia!";
}
else {
if (strlen($_POST['tunnus']) <= 5) {
echo "Tunnuksen on oltava pitempi kuin 5 merkkiä!";
}
else {
if (strlen($_POST['salasana']) <= 6) {
echo "Salasanan on oltava 6 merkkiä tai pitempi!";
}
else {
$id = $query + 1;
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_query($kysely1, $dbh) or die (mysql_error());
$query2 = "INSERT INTO `kayttajat` ( `id` , `username` , `password` , `email` , `osoite` , `toimipaikka` , postinumero` , `puh` , `nimi`, `kuvaus` )
VALUES (
'".$id."', '".$_POST['tunnus']."', '".md5($salasana)."', '".$_POST['email']."', '".$_POST['katuos']."', ".$_POST['asuinp']."', '".$_POST['postinro']."', '".$_POST['gsm']."', '".$_POST['kokonimi']."', ".$_POST['kuvaus'].'
);";
mysql_query($query2, $dbh) or die(mysql_error());
setcookie("tunnus", $tunnari);
setcookie("ip", $_SERVER['REMOTE_ADDR']);
{
header("Location: index.php");
}
}
}
}
}
}
}
else {
header("Location: index.php");
}
?>Edit: Tietääkö kukaan hyvää systeemiä millä saisi Edit+ 2:seen hyvän php-värityksen, tai jotain hyvää ohjelmaa millä voisi yksinkertaisesti tarkistaa nämä {} merkit?
Joopa joo, koodi oli todella vaikealukuista, joten en hirveästi jaksanut etsiä virheitä.
Onkos '-merkit jossain kohdissa tahalleen `-merkkejä?
Crimson Editorissa on mm. php-koodiväritys ja sillä pystyy aika helposti tarkistamaan aaltosulkeet yms.
Okei.. kokeilen sitä :D
Edit: ei ole tahallaan..
<?php
$dbh=mysql_connect ("localhost", "*", "*") or die (mysql_error());
mysql_select_db("salattu_kanta :P") or die (mysql_error());
if (isset($_POST["tunnus"])) {
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_num_rows(mysql_query($kysely1, $dbh)) or die (mysql_error());
$kyssari = "SELECT * FROM `kayttajat` WHERE 1 AND `username` LIKE '".$_POST['tunnus']."'";
$query2 = mysql_query($kyssari, $dbh) or die(mysql_error());
$maara = mysql_num_rows($query2);
if ($maara>0)
echo "Tunnus on jo käytössä";
}
else {
if ($_POST['salasana'] != $_POST['salasana2'])
echo "Salasanat eivät ole samanlaisia!";
}
else {
if (strlen($_POST['tunnus']) <= 5)
echo "Tunnuksen on oltava pitempi kuin 5 merkkiä!";
}
else {
if (strlen($_POST['salasana']) <= 6)
echo "Salasanan on oltava 6 merkkiä tai pitempi!";
}
else {
$id = $query + 1;
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_query($kysely1, $dbh) or die (mysql_error());
$query2 = "INSERT INTO `kayttajat` ( `id` , `username` , `password` , `email` , `osoite` , `toimipaikka` , postinumero` , `puh` , `nimi`, `kuvaus` )
VALUES (
'".$id."', '".$_POST['tunnus']."', '".md5($salasana)."', '".$_POST['email']."', '".$_POST['katuos']."', ".$_POST['asuinp']."', '".$_POST['postinro']."', '".$_POST['gsm']."', '".$_POST['kokonimi']."', ".$_POST['kuvaus'].'
);";
mysql_query($query2, $dbh) or die(mysql_error());
setcookie("tunnus", $tunnari);
setcookie("ip", $_SERVER['REMOTE_ADDR']);
{ // tässä on nyt jotain mätää,
header("Location: index.php");
//aaltosulut mutta ei ifiä? en tiedä
//mitä laittaa, mieti sitä itse
}
}
}
else {
header("Location: index.php");
}
?>Korjattu koodi tässä, paitsi yhdeltä osin (katso kommentti)
Tuo valitti ilman noitakin, mutta kokeilen tota :P
Eikö tuota helpottaisi, jos koko systeemin tekisi elseif-lauseilla? Muutenkaan useimpia noista aaltosuluista ei edes tarvita, kun koodia on aina vain yksi rivi (echo)
Toteutin tämän nyt tuolla kertovalla tavallasi.
Koodi on seuraava:
<?php
$dbh = mysql_connect("localhost", "*", "*") or die (mysql_error());
mysql_select_db("*") or die (mysql_error());
if (isset($_POST["tunnus"])) {
$tunnus = $_POST['tunnus'];
$salasana = $_POST['salasana'];
$salasana2 = $_POST['salasana2'];
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_num_rows(mysql_query($kysely1, $dbh)) or die (mysql_error());
$kyssari = "SELECT * FROM `kayttajat` WHERE 1 AND `username` LIKE '".$_POST['tunnus']."'";
$query2 = mysql_query($kyssari, $dbh) or die(mysql_error());
$maara = mysql_num_rows($query2) or die(mysql_error());
if($maara==0)
echo "Tunnus on jo olemassa!";
elseif($_POST['tunnus']<4)
echo "Tunnuksen on oltava pitempi. (Kuin 4 merkkiä)!";
elseif($_POST['salasana']<6)
echo "Salasanan on oltava pitempi. (Kuin 6 merkkiä)!";
elseif($_POST['salasana'] != $_POST['salasana2'])
echo "Salasanat eivät ole samanlaisia!";
else {
$id = $query + 1;
$kysely1 = "SELECT * FROM `kayttajat`";
$query = mysql_query($kysely1, $dbh) or die (mysql_error());
$query2 = "INSERT INTO `kayttajat` ( `id` , `username` , `password` , `email` , `osoite` , `toimipaikka` , postinumero` , `puh` , nimi`, `kuvaus` )
VALUES (
'".$id."', '".$_POST['tunnus']."', '".md5($salasana)."', '".$_POST['email']."', '".$_POST['katuos']."', ".$_POST['asuinp']."', '".$_POST['postinro']."', '".$_POST['gsm']."', '".$_POST['kokonimi']."', ".strip_tags($_POST['kuvaus'], '<i><b>').'
);";
mysql_query($query2, $dbh) or die("Ongelmia rekisteröinnissä (".mysql_error()."), ilmoita ylläpitäjälle!");
header("Location: index.php");
}
else {
header("Location: index.php");
}
?>Mutta siltikään ei toimi :(
Edit: Samaa "Parse error: parse error, unexpected $ in /*.php on line 42" virhettä tulee..
Edit2: Sain toimii :)))) jeee
Aihe on jo aika vanha, joten et voi enää vastata siihen.