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.