ugrás a tartalomhoz

űrlap feldolgozás hiba?

Pallosi Péter · 2012. Jún. 13. (Sze), 19.37
Sziasztok!
van egy php-kódom ami nem igazán akar működni!
<?php
if(isset($_POST["form_submit"])) {
 
	$username = $_POST["username"];
	$password1 = $_POST["password1"];
	$password2 = $_POST["password2"];
	$email1 = $_POST["email1"];
	$email2 = $_POST["email2"];
	$username_regex = '/^[a-z0-9\_\-\.]{3,10}$/';
	$email_regex = '/^([A-z0-9\_\.\-]+)@([a-z0-9\_\-\.]+).([a-z]{2,})$/';
	$error_data = false;
	$error_avatar = false;
 
	if(!$username) {
		echo "<div class=\"message error\">Nincs megadva felhasználónév!</div>";
		$error_data = true;
	} elseif(strlen($username)<=2) {
		echo "<div class=\"message error\">A felhasználónév túl rövid!</div>";
		$error_data = true;
	} elseif(!preg_match($username_regex, $username)) {
		echo "<div class=\"message error\">A felhasználónév nem tartalmazhat nagybetűt / specális karaktert!</div>";
		$error_data = true;
	} else {
		$sql = @ new mysqli("localhost","root","","user");
		if($sql->mysqli_errno) {
			echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
			exit();
		}
		$username = strip_tags($username);
		$username = addcslashes($username, "%'=`");
		$query = "SELECT `user_username` FROM `user` WHERE `user_username` = '".$username."'";
		$result = $sql->query($query) or die("Hiba!");
		if($result->num_rows>0) {
			echo "<div class=\"message error\">A felhasználónév foglalt!</div>";
			$error_data = true;
		}
		$sql->close();
	}
 
	if($password1) {
		if($password1!=$password2) {
			echo "<div class=\"message error\">A két jelszó nem egyezik!</div>";
			$error_data = true;
		} elseif(strlen($password1)<=3) {
			echo "<div class=\"message error\">A jelszó legalább 4 karakter kell, hogy legyen!</div>";
		}
	} else {
		echo "<div class=\"message error\">Nincs megadva jelszó!</div>";
		$error_data = true;
	}
 
	if($email1) {
		if($email1!=$email2) {
			echo "<div class=\"message error\">A két e-mail cím nem egyezik!</div>";
			$error_data = true;
		} elseif(!preg_match($email_regex, $email1)) {
			echo "<div class=\"message error\">Az e-mail cím nem megfelelő formátumú!</div>";			
			$error_data = true;
		} else {
			$sql = @ new mysqli("localhost","","","user");
			if($sql->connect_errno) {
				echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
				exit();
			}
			$query = "SELECT `user_email` FROM `user` WHERE `user_email` = '".$email1."'";
			$result = $sql->query($query) or die("Hiba!");
			if($result->num_rows>0) {
				echo "<div class=\"message error\">Ezzel az e-mail címmel már regisztráltak!</div>";
				$error_data = true;
			}
		}
	} else {
		echo "<div class=\"message error\">Nincs megadva e-mail cím!</div>";		
		$error_data = true;
	}
 
	// csak akkor ellenőrizzük az avatart, ha fel van töltve, illetve
	// az űrlap többi mezője nem tartalmaz hibát
	if($_FILES["avatar"]["name"]!="" && $error_data==false) {
		$avatar_pathinfo = pathinfo($_FILES["avatar"]["name"]);
		$avatar_extension = $avatar_pathinfo["extension"];
		$avatar_filesize = $_FILES["avatar"]["size"];
		$avatar_tmp_name = $_FILES["avatar"]["tmp_name"];
		$avatar_dimensions = getimagesize($avatar_tmp_name);
		$avatar_mime_type = $avatar_dimensions["mime"];
		$allowed_extensions = array("image/jpeg" => "jpg", "image/gif" => "gif", "image/png" => "png");
		if(is_uploaded_file($avatar_tmp_name)) {
			if($avatar_filesize>20000) {
				echo "<div class=\"message error\">A fájlméret nem lehet több, mint 20kbyte.</div>";
				$error_avatar = true;
			} elseif(!in_array($avatar_extension,$allowed_extensions) || !isset($allowed_extensions[$avatar_mime_type])){
				echo "<div class=\"message error\">Nem engedélyezett formátum.</div>";
				$error_avatar = true;
			} elseif($avatar_dimensions[0]!=100 && $avatar_dimensions[1]!=100) {
				echo "<div class=\"message error\">A kép mérete kötelezően 100x100 képpont kell, hogy legyen!</div>";
				$error_avatar = true;
			} else {
				// átnevezi a tmp fájlt egy véletlenszerűen generált fájlnévre
				$avatar_local_tmp_name = $username.".".$allowed_extensions[$avatar_mime_type];
				// az átnevezett tmp fájlt áthelyezi a saját tmp könyvtárunkba
				move_uploaded_file($avatar_tmp_name,"tmp/".$avatar_local_tmp_name);
				// saját tmp könyvtárból átmásolja az upload könyvtárba
				copy("tmp/".$avatar_local_tmp_name,"upload/".$avatar_local_tmp_name);
				// törli a saját tmp fájlt
				unlink("tmp/".$avatar_local_tmp_name);
				echo "<div class=\"message notice\">Sikeres képfeltöltés!</div>";
			}
		}
	}
	if($error_data==false && $error_avatar==false) {
		echo "<div class=\"message notice\">Sikeres regisztráció!</div>";
		$sql = @ new mysqli("localhost","root","","user");
		if($sql->mxsqli_errno) {
			echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
			exit();
		}
		$query = "INSERT INTO `user` (`user_username`,`user_email`,`user_password`) VALUES ('".$username."', '".$email1."', '".sha1($password1)."')";
		$sql->query($query) or die("Hiba!");
	}
}
 
if(!isset($_POST["form_submit"]) || $error_data || $error_avatar) {
?>
és ezt a hiba üzenetet kapom Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in C:\wamp\www\belep.php on line 40
Hiba!


nem látok semmit a 40.sorba -.- valaki esetleg?
 
1

biztos?

Poetro · 2012. Jún. 13. (Sze), 19.57
Biztosan ez a belep.php? És biztosan ezt a fájlt futtatod?
2

iegn!

Pallosi Péter · 2012. Jún. 13. (Sze), 19.59
csak véletlen még ezen a névan van elmentve a fájl
de még mindig nem jöttem rá a hibára
3

Nézd végig az egészet, mert

eddig bírtam szó nélkül · 2012. Jún. 13. (Sze), 20.48
Nézd végig az egészet, mert könnyen lehet, hogy nem csak egy helyen írtál a mysql_errno helyett mxsql_errno-t!
Az utolsó new mysqli(...) után van egy ilyen.
Esetleg valahol elrontottál zárójel párokat? (ezt most nem tudom ellenőrizni)
4

Megvan a hiba :) köszi a

Pallosi Péter · 2012. Jún. 14. (Cs), 07.05
Megvan a hiba :) köszi a segítséget ;)
5

És mi volt az?

eddig bírtam szó nélkül · 2012. Jún. 14. (Cs), 07.20
És mi volt az?
6

Mysql

Pallosi Péter · 2012. Jún. 14. (Cs), 11.41
Egyik fügvény és rosz adatbázist adtam meg,de már működik rendesen! ;)
7

Hiba a feldolgozásnál.

Alex Black · 2013. Már. 1. (P), 11.47
Üdvözlök mindenkit!
Nemrég kezdtem el PHP-vel foglalkozni,és akadt egy probléma amire nem tudok rájönni.
A lényeg az hogy adatbázisba töltögetik fel az adatot a regisztrált emberek,és be is teszi az adatbázisba az adatokat ahogyan azt én elvárom tőle viszont amikor beadják az adatot "Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in (24.SOR)" és a Fatal error: Call to a member function fetch_array() on a non-object in(25.SOR)" hibát ad ki az oldal,de feltöltötte az adatot.Tehát adat feltöltésnél ki írja a hibát,de az adatokat feltölti,lefrissítem az oldalt és tökéletesen működik.Mi lehet a baj??
<?php 
$bname = $_SESSION['login'];
$mysqli = new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_NAME) or die ($mysqli->error);
$use = "USE adatbazisnev";
$mysqli->query($use) or die ($mysqli->error);
$mysqli->query("SET NAMES  utf8");
if(isset($_POST['kedv_kuldes'])){
    $kev = $_POST['k_ev'];
    $kho = $_POST['k_h'];
    $kn = $_POST['k_n'];
    $vev = $_POST['v_ev'];
    $vho = $_POST['v_h'];
    $vn = $_POST['v_n'];
    $akszoveg = $_POST['ak_szoveg'];
if(!empty($kev) and !empty($vev) and !empty($akszoveg)){
$add_item = "INSERT INTO tabla (login,ak_kezdet,ak_vege,ak_szoveg)
VALUES ('$bname','$kev-$kho-$kn','$vev-$vho-$vn','$akszoveg')";  
    $mysqli->query($add_item) or die ($mysqli->error);
    $mysqli->close();
    echo "Az adatokat sikeresen feltöltötted";
    }
}
$_SESSION['login'];
$info = $mysqli->query("SELECT login,ak_szoveg,ak_kezdet,ak_vege FROM tabla WHERE login= '" . $_SESSION['login'] . "'");
$row = $info->fetch_array(MYSQLI_NUM);
if($row != NULL ){
    $ak_szoveg = $row['2'];
    $datumk = $row['3'];
    $datumv = $row['4'];
    echo "<table BORDER=1>";
echo "<tr>";
echo "<td>Hirdetésed szövege:</td>";
echo "<td>$row[1]</td>";
echo "<td>Dátuma :</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[3]</td>";
echo "</tr>";
echo "</table>";
mysqli_result;
echo "<br/><td>Ha ismét szerkeszteni szeretnéd :</td>";
echo '<form method="POST" action="">';
echo '<textarea name="ujszoveg" style="width: 300px; max-height: 1000px; max-width: 300px; height: 100px;"></textarea>';
echo '<br/><input type="submit" name="szerk" value="Szerkesztés">';
    if(isset($_POST['szerk'])){
        $ujszoveg = $_POST['ujszoveg'];
        $sql = "UPDATE tabla SET ak_szoveg='$ujszoveg' WHERE login='" . $_SESSION['login'] .  "'";
        $mysqli->query($sql) or die ($mysqli->error);
         echo '<br/><p>Hirdetésed frissült.</p>';
         }      
echo '<form method="POST" action="">';
echo '<input type="submit" name="delete" value="Hirdetés törlése">';
if(isset($_POST['delete'])){
$sql2 = "DELETE FROM tabla WHERE login='" . $_SESSION['login'] .  "'";
$mysqli->query($sql2) or die ($mysqli->error);
echo '<br/><p>Sikeresen törölted a hirdetésedet</p>'; 
 }
 $mysqli->close();
 }
 else{
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<br />
<tr>
</tr>
<tr>
	<td>Kezdete :</td>
	<td><select name="k_ev">
<?php 
$k_ev = 2012; 
while($k_ev  <= 2014){
    echo '<option>' .  $k_ev .'</option>';
      $k_ev++;}
      ?>
</select></td>
<td>Hónap</td>
	<td><select name="k_h">
<?php
$h_k = 1;
while($h_k <= 12){
    echo '<option>'. $h_k .'</option>';
    $h_k++;
}
?>
</select></td>
<td>Nap</td>
	<td><select name="k_n">
<?php 
$k_nap = 1;
while($k_nap <=31){
    echo '<option>'. $k_nap .'</option>';
    $k_nap++;
}
?>
</select></td>
</tr>
<br />
<tr>
	<td>Vége :</td>
	<td><select name="v_ev">
<?php $v_ev = 2012; 
while($v_ev <= 2014){
    echo '<option>' .  $v_ev .'</option>';
      $v_ev++;}
      ?>
</select></td>
<td>Hónap</td>
	<td><select name="v_h">
<?php
$h_k = 1;
while($h_k <= 12){
    echo '<option>'. $h_k .'</option>';
    $h_k++;
}
?>
</select></td>
<td>Nap</td>
	<td><select name="v_n">
<?php
$v_nap = 1;
while($v_nap <=31){
    echo '<option>'. $v_nap .'</option>';
    $v_nap++;
}

?>
</select></td>
</tr>
<center>
Kedvezmény információk<br />
(max karakter : 300)<br />
<textarea style="width: 724px;" maxlength="300" name="ak_szoveg"></textarea>
<br />
<input type="submit" name="kedv_kuldes" value="Mentés"/>
</center>
</table>
</body>
</html>
<?php  }?>
8

Lehet a $info =

Poetro · 2013. Már. 1. (P), 12.04
Lehet a
$info = $mysqli->query("SELECT login,ak_szoveg,ak_kezdet,ak_vege FROM tabla WHERE login= '" . $_SESSION['login'] . "'"); sorban hibás a query, ezért nem kapsz vissza eredményt, ezért a $row = $info->fetch_array(MYSQLI_NUM); nem fog tudni lefutni, mivel nincs eredmény. A $_SESSION['login']-t mindenképpen escapelni kellene, vagy használni a prepared statement-eket.
9

Lezárt kapcsolat

Endyl · 2013. Már. 1. (P), 12.15
A manualból:

The cryptic "Couldn't fetch mysqli" error message can mean any number of things, including:

1. You're trying to use a database object that you've already closed (as noted by ceo at l-i-e dot com). Reopen your database connection, or find the call to <?php mysqli_close($db); ?> or <?php $db->close(); ?> and remove it.
[...]


Adatfeltöltéskor a 19. sorban lezárod az adatbázis kapcsolatot, így a 24. sorban nem tud lefutni a lekérdezés, így a 25. sorban egy false értéken próbálod meghívni a fetch_array() metódust, ami nyilván nincs rendjén.

Ha frissítesz és nincs feltöltés, akkor nem fut le az adatbázis kapcsolatot lezáró kód, ezért nem kapsz hibát olyankor.
10

Köszönöm

Alex Black · 2013. Már. 1. (P), 16.39
Köszönöm mindkettőtöknek a segítséget,a
$mysqli->close()
nem kellett a 19. sorba és így tökéletesen működik minden.