Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted
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.

Posted

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.

Posted
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.

Posted

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)... :pislog: )

Posted

Köszönöm, de ez rajtam nem segít. Magát a PHP-t ugyanis - természetesen - nem látom sehol. :hááát:

Posted

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.

Posted

"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).

Posted

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!

:D

Esetleg némi mysql segítség a honlapomon.

Posted

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?

Posted

if ( $kilep == "exit" )
{
mysql_query("UPDATE teszt SET feladat=feladat+1 WHERE username='$username'");
header("Location: login.php?exit=1");
exit;
}

:D

Posted

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.

Posted

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. :D

 

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));

:D

 

 

 

Posted

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.

Posted

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?

Posted

Én megint nem értem mi a bajod.

:hááát:

Posted (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 by Spányik Balázs
Posted

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.. :démonikacaj: )

 

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!

Posted

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

Posted

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...

Posted

Ööö... 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.

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...