|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #211 Dátum: 2011.03.14 12:35 » |
|
Helló! Egy mysql táblába szeretem volna betenni felhasználónevet, jelszót, email címet, hozzászólások számát, üzentek számát, képet (egy BIGBLOB tipusu mezőbe), rangot. De nem jövök rá hibára mert az oldal lefut hiba nélkül csak az adatbázisba nem veszi fel a felhasználót. Egy űrlapról kérem be az adatokat. A feldolgozó oldal részlete: <? $kapcsolat = mysql_connect("localhost portom","felhasználó nevem","jelszavam"); mysql_select_db("honlap",$kapcsolat);
$sql1 = "INSERT INTO `honlap`.`felhasznalok` (`Felhasznalo`,`Jelszavak`,`Email`,`Hozzaszolasokszama`,`Uzenetekszama`,`Kep`,`Fokozat`) VALUES ('$fh','$jsz','$mail',0,0,$kep,'Tag')"; $sql2 = "SELECT * FROM felhasznalok"; $eredmeny2 = mysql_query($sql2); $sorok = mysql_num_rows($eredmeny2); $szamlalo = 0;
?>
<html> <head> <title> Feldolgozás </title> <meta http-equiv="refresh" content="1;url=bej.php">
</head>
<body> <? if (($jsz and $fh and $mail != "") and $sorok>0) { while ($sor = mysql_fetch_array($eredmeny2)) { $szamlalo+= 1; if ($fh != $sor["Felhasznalo"] and $mail != $sor["Email"]) { if ($szamlalo=$sorok) { mysql_query($sql1); } } elseif ($fh == $sor["Felhasznalo"] or $mail == $sor["Email"]) { if ($fh == $sor["Felhasznalo"]) { echo "Ilyen felhasznaló már létezik."; } elseif ($mail == $sor["Email"]) { echo "Ez az Email cím már foglalt."; } } } } elseif ($sorok==0) { mysql_query($sql1); } elseif ($jsz and $fh and $mail = "") { echo "Nem adtál meg jelszót vagy felhasználó nevet!"; } ?>
</body>
</html>
<? mysql_close($kapcsolat); ?> Előre is köszi a segítséget.
|
|
|
Naplózva
|
|
|
|
kléni
|
|
« Válasz #212 Dátum: 2011.03.14 14:02 » |
|
BIGBLOB tipusu mező Ilyen pl nincs. Azon kívül eléggé furcsa ez a kód. Hibakeresés helyett inkább egy másikat ajánlok, ami áttekinthetőbb is: <?php mysql_connect("localhost portom","felhasználó nevem","jelszavam"); mysql_select_db("honlap"); $nev = mysql_num_rows(mysql_query("SELECT id FROM felhasznalo WHERE nev='".mysql_real_escape_string($_POST["nev"])."'")); $email = mysql_num_rows(mysql_query("SELECT id FROM felhasznalo WHERE email='".mysql_real_escape_string($_POST["email"])."'")); if (empty($_POST["nev"]) or empty($_POST["jelszo"]) or empty($_POST["email"])) $hiba = "Hiányzó adatok"; elseif (preg_match("/^[w-]+(.[w-]+)*@([w-]+.)+[a-zA-Z]{2,7}$/", $_POST["email"])) $hiba = "Hibás E-mail cím"; elseif ($nev != 0) $hiba = "Ilyen felhasználó már létezik"; elseif ($email != 0) $hoba = "Ez az Email cím már foglalt"; else { mysql_query("INSERT INTO felhasznalo SET nev='".mysql_real_escape_string($_POST["nev"])."', ..."); header("Location: index.php"); } ?> <html> <head> <title>Belépés</title> <meta charset="UTF-8" /> </head> <body> <form action="" method="post"> <?php if (!empty($hiba)) ?> <p><?php echo $hiba; ?></p> <input />... </form> </body> </html>
|
|
|
Naplózva
|
[13:49:28] Pisti: Térdre csirkék, itt az isten
|
|
|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #213 Dátum: 2011.03.15 13:23 » |
|
Oké köszi kipróbálom és nem bigblob bocsi hanem longblob (phpmyadmin-ban). Még egy kérdés itt a $_Post változó az amely azonosítja az űrlapról elküldött adatokat?
|
|
« Utoljára szerkesztve: 2011.03.15 13:31 írta JPShadowSniper1 »
|
Naplózva
|
|
|
|
kléni
|
|
« Válasz #214 Dátum: 2011.03.15 14:08 » |
|
Igen. Ha jól látom előzőben nem használtad. Régebben tényleg úgy volt, hogy a változó neve megegyezett az elem nevével, de ezt hamar kiszedték, mert nagy biztonsági rés volt. most már $_POST["emelneve"] van. longblob És miért pont az? Mi a jó égre fogsz te több milliárd karaktert használni? Főleg egy képnek, aminek jó esetben csak az elérési útját kell megadni, ami nem több pár száz karakternél.
|
|
|
Naplózva
|
[13:49:28] Pisti: Térdre csirkék, itt az isten
|
|
|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #215 Dátum: 2011.03.15 16:48 » |
|
Csak az elérési útját adom meg egy file tipusu input elemmel. Az bonyolultabb hogyha ennek az input elemnek az értékét adom longblob mezőnek? Mit használjak helyette hogy egyszerűbb legyen az adatbázisba a bevitel?
|
|
|
Naplózva
|
|
|
|
kléni
|
|
« Válasz #216 Dátum: 2011.03.15 16:50 » |
|
A legegyszerűbb, ha egy megadott helyre feltöltöd a képet, és csak a nevét (pl kep.png) mented el. Ennek elég egy WARCHAR(256)-os mező.
|
|
|
Naplózva
|
[13:49:28] Pisti: Térdre csirkék, itt az isten
|
|
|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #217 Dátum: 2011.03.16 17:22 » |
|
Igaz vagy file mezővel bekérem az oldalra ott pedig a GD könyvtár ImagePng() vagy ImageJpeg() vagy ImageGif() paranccsal lementem a szerverre. És az adatbázisban tárolom az elérési utat. Kösz heló. Pl: <?
$kapcsolat = mysql_connect("127.0.0.1","felhasználó nevem","jelszavam"); mysql_select_db("honlap", $kapcsolat);
$nev = $bfh; // Bejelentkezett felhasználó $szam = 0; $mentes = "";
$parancs1 = "SELECT * FROM felhasznalok"; $parancs2 = "INSERT INTO `honlap`.`felhasznalok` (`Kep`) VALUES ('$mentes')"; $sql1 = mysql_query($parancs1); while ($sor = mysql_fetch_array($sql1) or $szam != 0) { if ($nev == $sor["Felhasznalo"]) { $szam = $sor["ID"]; } }
$forras = $file; $adatok = GetImageSize($forras); $szelesseg = $adatok[0]; $magassag = $adatok[1]; $tipus = $adatok[2];
if ($tipus == 1) { $kep = ImageCreateFromGif($forras); } elseif ($tipus == 2) { $kep = ImageCreateFromJpeg($forras); } elseif ($tipus == 3) { $kep = ImageCreateFromPng($forras); }
$uj_szelesseg = 175; $uj_magassag = 175;
$img = ImageCreateTrueColor($uj_szelesseg, $uj_magassag);
ImageCopyResampled($img, $kep, 0, 0, 0, 0, $uj_szelesseg, $uj_magassag, $szelesseg, $magassag);
$mentes = "Kepek/fhkep" . $szam . ".jpg"; mysql_query($parancs2); $img = ImageJpeg($img, $mentes); ?> Ez így jó vagy lehagytam valamit.
|
|
« Utoljára szerkesztve: 2011.03.16 18:03 írta JPShadowSniper1 »
|
Naplózva
|
|
|
|
kléni
|
|
« Válasz #218 Dátum: 2011.03.16 17:55 » |
|
Lehagytál egy $-t, és van benn egy felesleges ;. Azon kívül nem így kell elmenteni egy képet. A formnak adsz egy enctype attribútumot "multipart/form-data" értékkel. Így ugye el tudod érni a fájlt a $_FILES változóból. elmenteni a nove_upload_files()-el lehet, a kép nevét meg a ["name"] részből éred el. Nézz utána a neten, pl a w3schoolson jól le van írva, hogy kell feltölteni egy fájlt. Az id-t meg felesleges lekérned. Ha most regisztrált, akkor mysql_insert_id(), ha meg nem, akkor úgy is tudod az id-t, mert sessionban eltárolod.
|
|
|
Naplózva
|
[13:49:28] Pisti: Térdre csirkék, itt az isten
|
|
|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #219 Dátum: 2011.03.16 18:02 » |
|
Nem ismerek php-ben még túl sok mysql parancsot majd nézegetem a www.php.net -en. Amit pedig mondtál ki fogom egészíteni vele a php kódomat. Csak nekem az ID lekérésének ez az egyszerűbb változata ezt tudom jobban értelmezni.
|
|
« Utoljára szerkesztve: 2011.03.16 18:10 írta JPShadowSniper1 »
|
Naplózva
|
|
|
|
|
JPShadowSniper1
Új
Nem elérhető
Hozzászólások: 7
|
|
« Válasz #221 Dátum: 2011.03.16 18:11 » |
|
Erre az oldalra a php oldaláról is vezet link.
|
|
|
Naplózva
|
|
|
|
|