payskin Posted May 12, 2006 Posted May 12, 2006 Az hogyan lehet megcsinálni, hogy a számláló az adatbázisba ne úgy mentse el a számot, hogy 1 hanem 001. Bocs, tudom, hogy nem vagyok valami konstruktív, de gondolj bele: ennek semmi értelme. Miért tárolnál stringként egy számértéket? A 0-ákkal való feltöltés tipikusan kiiratási feladat, és annak viszont pofonegyszerû: $uj_szamlalo = substr ("000".$szamlalo,-3); Azaz fogsz annyi nullát, ahány számjegyet szeretnél, hozzátolod az adatbázisból beolvasott számértéket (a php azt hiszem ilyenkor automatikusan stringgé alakítja), és a substr függvénnyel elveszel jobbról n számjegyet.
web Posted May 12, 2006 Posted May 12, 2006 Köszönöm a segítségeteket! Azért kell nekem a 0 is, mert csinálok egy olyan gyakorló oldalt, ahol van közel 200 kérdés és ezek html vannak. És az oldalak 001.html a nevük. És lekérdezem az adatbázisból a számlálót és a következőre lép.
web Posted May 12, 2006 Posted May 12, 2006 Tehát: $szamlalo++; $valami = sprintf("%03d", "$szamlalo"); mysql_query("UPDATE teszt SET szamlalo='$valami' WHERE username='$username'"); Hát ja, megpróbáltam mindenhogy, de mindig 001-t ír ki nekem, és a számláló nem nő, de hogy miért azt nem tudom.
h.arpad Posted May 12, 2006 Posted May 12, 2006 Sziasztok! Most egy olyan oldalt készítek, amelyen lesz egy regisztrációs lap. A regisztrálók adatait MySQL-adatbázisban tárolnám PHP segítségével, persze, de ilyen hosszú kérdõívhez (rádiógombokkal, stb.) még nem volt szerencsém (a leghosszabb két mezõ volt ). Az sem tetszene, ha csak úgy bármit lehetne a mezõkbe írogatni. Tudtok egy olyan weboldalt, amelyik részletesen foglalkozik az ilyen ûrlapok elkészítésével, vagy akár csak páldákat tud adni a szkriptekre? (Sajnos egyesületünkben csak én értek jobban a webhez, meg egyáltalán a számítástechnikához, de a PHP sántít kicsit, de az enyém ez a munka (is)... )
web Posted May 12, 2006 Posted May 12, 2006 PL ezt a rohadt sok mezőt én csináltam: http://katisk.uw.hu/kerdesek.php És mindent adatbázisba ment.
h.arpad Posted May 13, 2006 Posted May 13, 2006 Köszönöm, de ez rajtam nem segít. Magát a PHP-t ugyanis - természetesen - nem látom sehol.
web Posted May 13, 2006 Posted May 13, 2006 Tudom, hogy nem segít, de fáradt voltam már hajnalba és elmentem aludni és nem volt erõm bemásolni ide a scriptet. <?php function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } $editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { $insertSQL = sprintf("INSERT INTO szallas (nev, cim, tel, email, datum) VALUES (%s, %s, %s, %s, %s)", GetSQLValueString($_POST['nev'], "text"), GetSQLValueString($_POST['cim'], "text"), GetSQLValueString($_POST['tel'], "text"), GetSQLValueString($_POST['email'], "text"), GetSQLValueString($_POST['datum'], "text")); ////////////// Adatbázis megnyitása ///////////// $sql = mysql_connect("SQL4.ULTRAWEB.HU mysql kapcsolat", "felhasználó név", "jelszo"); mysql_select_db("felhasználó név", $sql);// Ez nyitja meg az adatbázisodat $Result1 = mysql_query($insertSQL, $sql) or die(mysql_error()); $insertGoTo = "thanks.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="<?php echo $editFormAction; ?>" method="POST" name="form1" onSubmit="YY_checkform('form1','nev','#q','0','Field \'nev\' is not valid.','cim','#q','0','Field \'cim\' is not valid.','tel','#q','0','Field \'tel\' is not valid.');return document.MM_returnValue"> <div align="center"> </div> <table width="416" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2" scope="col"><div align="center"> <div align="center"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><br> Jelentkezési lap </font><br> </div> </div></td> </tr> <tr> <td width="325" height="22" bgcolor="#0099FF"><font size="3" face="Verdana, Arial, Helvetica, sans-serif">neve:</font></td> <td width="235" bgcolor="#0099FF"><input name="nev" type="text" class="subt" id="nev" maxlength="30"> </td> </tr> <tr> <td bgcolor="#FFCC33"><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Címe:</font></td> <td bgcolor="#FFCC33"><input name="cim" type="text" class="subt" id="cim" maxlength="50"> </td> </tr> <tr bgcolor="#0099FF"> <td height="36"><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Telefonszáma (lehet mobil):</font></td> <td><input name="tel" type="text" class="subt" id="tel" maxlength="20"> </td> </tr> <tr> <td height="54" bgcolor="#FFCC33"><font size="3" face="Verdana, Arial, Helvetica, sans-serif">E-mail címe: <font color="#FF0000">(ha Önnek nincs e-mail címe akkor hagyja szabadon a sort)</font></font></td> <td bgcolor="#FFCC33"><input name="email" type="text" class="subt" id="email" maxlength="30"> </td> </tr> <tr bgcolor="#0099FF"> <td><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Szállás idõpontja:</font></td> <td><input name="datum" type="text" class="subt" id="datum" maxlength="20"> </td> </tr> <tr bgcolor="#FFCC33"> <td> </td> <td><input name="Submit" type="submit" class="subt" value="A lap elküldése"> </td> </tr> </table> <input type="hidden" name="MM_insert" value="form1"> </form> </body> </html> És csinálsz külön egy thanks.php lapot amibe át fog ugrani az oldal ha valaki kitölti és elküldi Az egész script az adatbázisba menti az adatoat.
payskin Posted May 14, 2006 Posted May 14, 2006 "Ahogy azt Móricka elképzeli" jelleggel programozok éppen PHP-t: egy rettentő sok mezőt tartalmazó MySQL táblából kell rekordokat átmásolni 1:1-ben egy másik táblába. Az INSERT INTO parancsom olyan hosszú lehet, hogy fizikai fájdalmat okoz a leírása, főleg azért, mert egy asszoc tömbbe húzom be a sort, tehát nem elég, hogy minden egyes mezőt meg kell adni, de mindegyik így néz ki: $row["mezőnév"] és a sok $row csak feleslegesen hosszabbítja az amúgy sem rövid query stringemet. Annak idején pascalos pályafutásom alatt, ha jól emlékszem volt olyan, hogy with struktúra, ami után meg lehetett adni egy objektumot, és ezen a struktúrán belül közvetlenül lehetett hivatkozni az objektum változóira. Például (fejből írom, ne üssetek!): with gyumolcskosar begin db_alma := db_alma+1; db_korte := db_korte-1; end; szóval a lényeg, hogy nem kellett minden egyes hivatkozásnál kiírni a gyumolcskosar objektum nevét is, rövidebb, áttekinthetőbb lett tőle a kód. Kérdés: nincs ilyen a PHP-ban? Mert ha volna, akkor objektumként húznám be a MySQL rekordokat asszoc tömb helyett, és spórolnék egy csomó helyet. Már gondolkodtam rajta, hogy for ciklussal rakom össze a query stringet, de nem akarom bonyolítani (6000+ rekordnál még rekordonként ciklusoljak is, nem tűnik jó ötletnek).
Mezofi Posted May 14, 2006 Posted May 14, 2006 Igazából, annyi mindent írtál, hogy teljesen összezavartál! Ha az kell, hogy egy táblából a sorokat átírd egy másik táblába akkor azt valahogy így próbáld: <? php //Adatbázis megnyítása $elemek=mysql_query("SELECT * FROM tabla_nev........);//Lekérdezzük a táblát while($aktualis_sor=mysql_fetch_assoc($elemek)){ $oszlop_nev1=$aktualis_sor["oszlop_nev1"]; $oszlop_nev2=$aktualis_sor["oszlop_nev2"]; ...... ... ...//Amennyi oszlopot másolni akarsz mysql_query(INSERT ............);//Egy soronkén fogja másolni az új táblába } Nyilván a kipontozott részeket értelemszerüen ki kell tölteni. Vagy ha ez segítség ezzel a kóddal lekérdezheted a a tábla oszlop neveit, és tömbbe töltve mondjuk egy sorszámozott tömbbe töltve, átjárhatod for() ciklussal pl mysql_fetch_row. $tomb=mysql_query("SHOW COLUMNS FROM tabla_nev"); Ezt fejbõl írtam, semmi próba, ezért tartalmazhat hibákat, de én így csinálnám, ha jól értettem mit akarsz! Esetleg némi mysql segítség a honlapomon.
web Posted May 14, 2006 Posted May 14, 2006 if ( $kilep == "exit" ) { mysql_query("UPDATE teszt SET feladat+1 WHERE username='$username'"); header("Location: login.php?exit=1"); exit; } A gondom az lenne vele, hogy amikor az user kilép a számlálot mindig +1 növeli, no de a script lefut átugrik arra az oldalra mit megadtam neki, de a számlálot nem növeli +1, de miért?
Mezofi Posted May 14, 2006 Posted May 14, 2006 if ( $kilep == "exit" ) { mysql_query("UPDATE teszt SET feladat=feladat+1 WHERE username='$username'"); header("Location: login.php?exit=1"); exit; }
web Posted May 15, 2006 Posted May 15, 2006 A kód most sem jó, csak a kivánt oldalra ugrik, de nem ad hozzá +1. Most itt benne a feladat nem egy változoként szolgál? Ha kap értéket akkor teljesül a feltétel.
Mezofi Posted May 15, 2006 Posted May 15, 2006 Jó! Tehát kell, hogy legyen egy teszt nevü táblád, azon belül kell legyen egy feladat nevü oszlopod és egy username. Ha a teszt nevü tábládban van olyan rekord amelynek az értéke egyenlõ a az $username változó tartalmával, akkor a hozzá tartozó feladat nevü oszlop rekordjának számlálója eggyel emelkedni fog. Hibák lehetnek: - Nincs olyan username a táblában mint ami a változóban van. - Az username változó tartalma üres. - Nincs feladat nevü oszlop. - Nincs teszt nevü tábla. - stb. Ha van energiád, mielött ugrasztod az oldalt csinálj egy SELECT-et és nézd meg hány találat lesz! $mennyi=mysq_query("SELECT * FROM teszt WHERE username='$username' "); print(mysql_num_rows($mennyi));
web Posted May 15, 2006 Posted May 15, 2006 Minden megvan, semmit sem hagytam ki belõle, de a session tartalmát megnézem még, lehet, hogy nincs benne semmi, pedig kell lennie valaminek benne.
web Posted May 19, 2006 Posted May 19, 2006 Sziasztok! elseif ($szamok == "megoldas") { $m = "M"; include("$tantargymappa$feladat_szamlalo$m.htm"); print ("<input name='RadioGroup1' type='hidden' value='RadioGroup1'>"); } Olyan gomdom van vele, hogy bárhogyan is próbálm az inputot belerakni, most pl a print() függvénnyel, de nem sikerül. Mindig hibát ír ki az oldal a <> jelek miatt, hogyan csináljam máshogyan?
web Posted May 19, 2006 Posted May 19, 2006 (edited) A hiba a következõ, van 1 formom és benne vannak az if és elseif ágak, de nekem csak bizonyos inputok kellenek, amik jelenlem (???) meg. És ha simán berakom, akkor dongja (???) van a phpnak az inputok miatt, a macsakakörmöket kiszedtem belõle és aposztokra cseréltem. Azaz ezt nem tudja megjeleníteni: <input name='RadioGroup1' type='hidden' value='RadioGroup1'> Edited May 22, 2006 by Spányik Balázs
ocsi Posted May 20, 2006 Posted May 20, 2006 Egy meglátás.. azért <input> a html tag mert az angol szó 'input' és nem 'imput' (az in tőből ered, ami a 'be' re utal.. ) Megoldás: Az include-dal van a baj! A megoldás: <?php /* php scripted helye*/ ?> <html> ide jön a html dolgod /*és bizonyos helyekre ahova be akarsz tenni inputot if vizsgálattal:*/ <?php if (...) {print $valtozo;} else {} ?> </html> És fontos, hogy a file kiterjesztése php legyen! A php-ba bele nem tehetsz html-t csak változókba string-ként: $valtozo="<br><b>vastagbetüs szöveg" html simán csak a ?> lezárás után lehet!
Netkaloz Posted May 23, 2006 Posted May 23, 2006 Hello! Az egyik oldalon egy űrlpot készítettem, két beviteli mező adatait szeretném emilben küldeni. Az oldalon egymásba ágyazott táblázatok vannak. Szükséges-e a body elején beírnom a következőket? <div id="urlap"> <form method="post" action="mail.php"> vagy elég csak a cellában és utána lezárni a </form></div>-vel, vagy ez így nem megoldható? A baj az, hogy, amikor beraktam az elején, akkor az oldalt megnéztem a böngészőben és elcsúszott a többihez képest. A php-t így nem is próbáltam. Van egy másik oldalam fent, az gond nélkül működik: http://leesoft.extra.hu A kérdéses oldal: http://fejleszt.extra.hu/Html/velemeny.htm Köszönöm előre is! Leenux
Mezofi Posted May 23, 2006 Posted May 23, 2006 <form method="post" action="mail.php"> <input name="input1"....... /> <input name="input2" ...../> <input type="submit"...../> </form> <!-- Formázásra <div>-et az elküldéshez semmi köze--> Megnéztem a kérdésest oldalt! Hibák száma 43! Mondjuk <form>-ot nem találtam az egész oldalba. Ha ide kattintasz csak tíz hibát jelez, de van több is az oldaladon.
Netkaloz Posted May 23, 2006 Posted May 23, 2006 Igen vannak hibái, még dolgozom rajta. Nem is találhattál, mert kivettem, hiszen azt írtam, hogy amikor beleraktam, akkor elcsúszott az oldal szerkezete. <label for="velemeny">Kérjük, írja meg észrevételét,<br>véleményét, kérdését<br> <textarea name="velemeny" cols="20" rows="3" id="velemeny"></textarea> </label> </p> </h2> <h2> <p align="center"> <label for="emil">E-mail címe<br> <input type="text" name="emil" id="emil" size="30" n="30" /> </label> </p> </h2> <p align="center"> <input name="submit" type="submit" value="Küldés"> Ez szerepel eddig a cellában. Ezek szerint a textarea elé is kell az input? Csak azért kérdezem, mert ezt a másik oldalamról vettem, ahol így mûködik. És a form method="post" action="mail.php"> - t hová írjam? Ennek a cellának az elejére, vagy közvetlenül a body elejére? Értelemszerûen a </form> taget a cella végére, vagy a body végére? Bocs, ha értetlen vagyok...
payskin Posted May 23, 2006 Posted May 23, 2006 Ööö... a helyedben azzal kezdeném, hogy megszabadítanám az egész formot a -ktõl és a -ktõl. Jól látom, hogy a -vel igazítasz középre? Nem kéne! Azt mondod ez egy táblázat cellájában van? Tedd a form mezõit egy-egy külön cellába, és a -t igazítsd középre. A form lezárására vonatkozó kérdést nem értem. Ott zárd le, ahol vége van.
Netkaloz Posted May 23, 2006 Posted May 23, 2006 Igen, én is úgy érzem, hogy átalakításra szorul a dolog. Peig az oldalak kinézete nekem tetszik, de úgy tűnik, teljesen át kell alakítanom. Igazából eredetileg nem így nézett ki, hanem a nagy okker kereten belül volt bal olalt egymás felett két kisebb cella ugyanúgy okkerrel bekerítve és jobb oldalon egy nagy. Köztük meg rengeteg kisebb cella. Ezt igyekeztem leredukálni és egy letisztultabb kinézetet megvalósítani, de kezdem belátni, hogy talán kevesebb időm ment volna el, ha elejéről kezdem az eészet felépíteni, nem toldozgatom-foldozgatom a elenlegi oldalak eredetijét. Mindenesetre, elképzelhető, hogy mégis újat alkotok, mert ma a színharmónia negatív kritikát kapott, pedig szerintem jó. A <h2>-k, meg a <p>-k a megszokás miatt vannak, de igazad van, elegánsabb és szebb, ráadásul előnyösebb is CSS-sel. Ismételten köszönöm szakértő véleményedet. Üdv: Leenux
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now