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!
  1. <?php  
  2. if(isset($_POST["form_submit"])) {  
  3.    
  4.     $username = $_POST["username"];  
  5.     $password1 = $_POST["password1"];  
  6.     $password2 = $_POST["password2"];  
  7.     $email1 = $_POST["email1"];  
  8.     $email2 = $_POST["email2"];  
  9.     $username_regex = '/^[a-z0-9\_\-\.]{3,10}$/';  
  10.     $email_regex = '/^([A-z0-9\_\.\-]+)@([a-z0-9\_\-\.]+).([a-z]{2,})$/';  
  11.     $error_data = false;  
  12.     $error_avatar = false;  
  13.    
  14.     if(!$username) {  
  15.         echo "<div class=\"message error\">Nincs megadva felhasználónév!</div>";  
  16.         $error_data = true;  
  17.     } elseif(strlen($username)<=2) {  
  18.         echo "<div class=\"message error\">A felhasználónév túl rövid!</div>";  
  19.         $error_data = true;  
  20.     } elseif(!preg_match($username_regex$username)) {  
  21.         echo "<div class=\"message error\">A felhasználónév nem tartalmazhat nagybetűt / specális karaktert!</div>";  
  22.         $error_data = true;  
  23.     } else {  
  24.         $sql = @ new mysqli("localhost","root","","user");  
  25.         if($sql->mysqli_errno) {  
  26.             echo "<div class=\"message error\">Adatbázis hiba: "$sql->connect_errno." ".$sql->connect_error;  
  27.             exit();  
  28.         }  
  29.         $username = strip_tags($username);  
  30.         $username = addcslashes($username"%'=`");  
  31.         $query = "SELECT `user_username` FROM `user` WHERE `user_username` = '".$username."'";  
  32.         $result = $sql->query($queryor die("Hiba!");  
  33.         if($result->num_rows>0) {  
  34.             echo "<div class=\"message error\">A felhasználónév foglalt!</div>";  
  35.             $error_data = true;  
  36.         }  
  37.         $sql->close();  
  38.     }  
  39.    
  40.     if($password1) {  
  41.         if($password1!=$password2) {  
  42.             echo "<div class=\"message error\">A két jelszó nem egyezik!</div>";  
  43.             $error_data = true;  
  44.         } elseif(strlen($password1)<=3) {  
  45.             echo "<div class=\"message error\">A jelszó legalább 4 karakter kell, hogy legyen!</div>";  
  46.         }  
  47.     } else {  
  48.         echo "<div class=\"message error\">Nincs megadva jelszó!</div>";  
  49.         $error_data = true;  
  50.     }  
  51.    
  52.     if($email1) {  
  53.         if($email1!=$email2) {  
  54.             echo "<div class=\"message error\">A két e-mail cím nem egyezik!</div>";  
  55.             $error_data = true;  
  56.         } elseif(!preg_match($email_regex$email1)) {  
  57.             echo "<div class=\"message error\">Az e-mail cím nem megfelelő formátumú!</div>";             
  58.             $error_data = true;  
  59.         } else {  
  60.             $sql = @ new mysqli("localhost","","","user");  
  61.             if($sql->connect_errno) {  
  62.                 echo "<div class=\"message error\">Adatbázis hiba: "$sql->connect_errno." ".$sql->connect_error;  
  63.                 exit();  
  64.             }  
  65.             $query = "SELECT `user_email` FROM `user` WHERE `user_email` = '".$email1."'";  
  66.             $result = $sql->query($queryor die("Hiba!");  
  67.             if($result->num_rows>0) {  
  68.                 echo "<div class=\"message error\">Ezzel az e-mail címmel már regisztráltak!</div>";  
  69.                 $error_data = true;  
  70.             }  
  71.         }  
  72.     } else {  
  73.         echo "<div class=\"message error\">Nincs megadva e-mail cím!</div>";          
  74.         $error_data = true;  
  75.     }  
  76.    
  77.     // csak akkor ellenőrizzük az avatart, ha fel van töltve, illetve  
  78.     // az űrlap többi mezője nem tartalmaz hibát  
  79.     if($_FILES["avatar"]["name"]!="" && $error_data==false) {  
  80.         $avatar_pathinfo = pathinfo($_FILES["avatar"]["name"]);  
  81.         $avatar_extension = $avatar_pathinfo["extension"];  
  82.         $avatar_filesize = $_FILES["avatar"]["size"];  
  83.         $avatar_tmp_name = $_FILES["avatar"]["tmp_name"];  
  84.         $avatar_dimensions = getimagesize($avatar_tmp_name);  
  85.         $avatar_mime_type = $avatar_dimensions["mime"];  
  86.         $allowed_extensions = array("image/jpeg" => "jpg""image/gif" => "gif""image/png" => "png");  
  87.         if(is_uploaded_file($avatar_tmp_name)) {  
  88.             if($avatar_filesize>20000) {  
  89.                 echo "<div class=\"message error\">A fájlméret nem lehet több, mint 20kbyte.</div>";  
  90.                 $error_avatar = true;  
  91.             } elseif(!in_array($avatar_extension,$allowed_extensions) || !isset($allowed_extensions[$avatar_mime_type])){  
  92.                 echo "<div class=\"message error\">Nem engedélyezett formátum.</div>";  
  93.                 $error_avatar = true;  
  94.             } elseif($avatar_dimensions[0]!=100 && $avatar_dimensions[1]!=100) {  
  95.                 echo "<div class=\"message error\">A kép mérete kötelezően 100x100 képpont kell, hogy legyen!</div>";  
  96.                 $error_avatar = true;  
  97.             } else {  
  98.                 // átnevezi a tmp fájlt egy véletlenszerűen generált fájlnévre  
  99.                 $avatar_local_tmp_name = $username.".".$allowed_extensions[$avatar_mime_type];  
  100.                 // az átnevezett tmp fájlt áthelyezi a saját tmp könyvtárunkba  
  101.                 move_uploaded_file($avatar_tmp_name,"tmp/".$avatar_local_tmp_name);  
  102.                 // saját tmp könyvtárból átmásolja az upload könyvtárba  
  103.                 copy("tmp/".$avatar_local_tmp_name,"upload/".$avatar_local_tmp_name);  
  104.                 // törli a saját tmp fájlt  
  105.                 unlink("tmp/".$avatar_local_tmp_name);  
  106.                 echo "<div class=\"message notice\">Sikeres képfeltöltés!</div>";  
  107.             }  
  108.         }  
  109.     }  
  110.     if($error_data==false && $error_avatar==false) {  
  111.         echo "<div class=\"message notice\">Sikeres regisztráció!</div>";  
  112.         $sql = @ new mysqli("localhost","root","","user");  
  113.         if($sql->mxsqli_errno) {  
  114.             echo "<div class=\"message error\">Adatbázis hiba: "$sql->connect_errno." ".$sql->connect_error;  
  115.             exit();  
  116.         }  
  117.         $query = "INSERT INTO `user` (`user_username`,`user_email`,`user_password`) VALUES ('".$username."', '".$email1."', '".sha1($password1)."')";  
  118.         $sql->query($queryor die("Hiba!");  
  119.     }  
  120. }  
  121.    
  122. if(!isset($_POST["form_submit"]) || $error_data || $error_avatar) {  
  123. ?>  
é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??
  1. <?php   
  2. $bname = $_SESSION['login'];  
  3. $mysqli = new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_NAME) or die ($mysqli->error);  
  4. $use = "USE adatbazisnev";  
  5. $mysqli->query($useor die ($mysqli->error);  
  6. $mysqli->query("SET NAMES  utf8");  
  7. if(isset($_POST['kedv_kuldes'])){  
  8.     $kev = $_POST['k_ev'];  
  9.     $kho = $_POST['k_h'];  
  10.     $kn = $_POST['k_n'];  
  11.     $vev = $_POST['v_ev'];  
  12.     $vho = $_POST['v_h'];  
  13.     $vn = $_POST['v_n'];  
  14.     $akszoveg = $_POST['ak_szoveg'];  
  15. if(!emptyempty($kevand !emptyempty($vevand !emptyempty($akszoveg)){  
  16. $add_item = "INSERT INTO tabla (login,ak_kezdet,ak_vege,ak_szoveg)  
  17. VALUES ('$bname','$kev-$kho-$kn','$vev-$vho-$vn','$akszoveg')";    
  18.     $mysqli->query($add_itemor die ($mysqli->error);  
  19.     $mysqli->close();  
  20.     echo "Az adatokat sikeresen feltöltötted";  
  21.     }  
  22. }  
  23. $_SESSION['login'];  
  24. $info = $mysqli->query("SELECT login,ak_szoveg,ak_kezdet,ak_vege FROM tabla WHERE login= '" . $_SESSION['login'] . "'");  
  25. $row = $info->fetch_array(MYSQLI_NUM);  
  26. if($row != NULL ){  
  27.     $ak_szoveg = $row['2'];  
  28.     $datumk = $row['3'];  
  29.     $datumv = $row['4'];  
  30.     echo "<table BORDER=1>";  
  31. echo "<tr>";  
  32. echo "<td>Hirdetésed szövege:</td>";  
  33. echo "<td>$row[1]</td>";  
  34. echo "<td>Dátuma :</td>";  
  35. echo "<td>$row[2]</td>";  
  36. echo "<td>$row[3]</td>";  
  37. echo "</tr>";  
  38. echo "</table>";  
  39. mysqli_result;  
  40. echo "<br/><td>Ha ismét szerkeszteni szeretnéd :</td>";  
  41. echo '<form method="POST" action="">';  
  42. echo '<textarea name="ujszoveg" style="width: 300px; max-height: 1000px; max-width: 300px; height: 100px;"></textarea>';  
  43. echo '<br/><input type="submit" name="szerk" value="Szerkesztés">';  
  44.     if(isset($_POST['szerk'])){  
  45.         $ujszoveg = $_POST['ujszoveg'];  
  46.         $sql = "UPDATE tabla SET ak_szoveg='$ujszoveg' WHERE login='" . $_SESSION['login'] .  "'";  
  47.         $mysqli->query($sqlor die ($mysqli->error);  
  48.          echo '<br/><p>Hirdetésed frissült.</p>';  
  49.          }        
  50. echo '<form method="POST" action="">';  
  51. echo '<input type="submit" name="delete" value="Hirdetés törlése">';  
  52. if(isset($_POST['delete'])){  
  53. $sql2 = "DELETE FROM tabla WHERE login='" . $_SESSION['login'] .  "'";  
  54. $mysqli->query($sql2or die ($mysqli->error);  
  55. echo '<br/><p>Sikeresen törölted a hirdetésedet</p>';   
  56.  }  
  57.  $mysqli->close();  
  58.  }  
  59.  else{  
  60. ?>  
  61. <html>  
  62. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  63. <body>  
  64. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
  65. <br />  
  66. <tr>  
  67. </tr>  
  68. <tr>  
  69.     <td>Kezdete :</td>  
  70.     <td><select name="k_ev">  
  71. <?php   
  72. $k_ev = 2012;   
  73. while($k_ev  <= 2014){  
  74.     echo '<option>' .  $k_ev .'</option>';  
  75.       $k_ev++;}  
  76.       ?>  
  77. </select></td>  
  78. <td>Hónap</td>  
  79.     <td><select name="k_h">  
  80. <?php  
  81. $h_k = 1;  
  82. while($h_k <= 12){  
  83.     echo '<option>'$h_k .'</option>';  
  84.     $h_k++;  
  85. }  
  86. ?>  
  87. </select></td>  
  88. <td>Nap</td>  
  89.     <td><select name="k_n">  
  90. <?php   
  91. $k_nap = 1;  
  92. while($k_nap <=31){  
  93.     echo '<option>'$k_nap .'</option>';  
  94.     $k_nap++;  
  95. }  
  96. ?>  
  97. </select></td>  
  98. </tr>  
  99. <br />  
  100. <tr>  
  101.     <td>Vége :</td>  
  102.     <td><select name="v_ev">  
  103. <?php $v_ev = 2012;   
  104. while($v_ev <= 2014){  
  105.     echo '<option>' .  $v_ev .'</option>';  
  106.       $v_ev++;}  
  107.       ?>  
  108. </select></td>  
  109. <td>Hónap</td>  
  110.     <td><select name="v_h">  
  111. <?php  
  112. $h_k = 1;  
  113. while($h_k <= 12){  
  114.     echo '<option>'$h_k .'</option>';  
  115.     $h_k++;  
  116. }  
  117. ?>  
  118. </select></td>  
  119. <td>Nap</td>  
  120.     <td><select name="v_n">  
  121. <?php  
  122. $v_nap = 1;  
  123. while($v_nap <=31){  
  124.     echo '<option>'$v_nap .'</option>';  
  125.     $v_nap++;  
  126. }  
  127.   
  128. ?>  
  129. </select></td>  
  130. </tr>  
  131. <center>  
  132. Kedvezmény információk<br />  
  133. (max karakter : 300)<br />  
  134. <textarea style="width: 724px;" maxlength="300" name="ak_szoveg"></textarea>  
  135. <br />  
  136. <input type="submit" name="kedv_kuldes" value="Mentés"/>  
  137. </center>  
  138. </table>  
  139. </body>  
  140. </html>  
  141. <?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
  1. $mysqli->close()  
nem kellett a 19. sorba és így tökéletesen működik minden.