Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#11351) Speeedfire


Speeedfire
nagyúr

Ok, tárgytalan.
Marad az "inline" (head-ben deklarálva a style). Megkérdeztem a szolgáltatómat, 128MB lehet maximum egy levél. Szóval ha ebbe nem fér bele az inline css... :D

Ja és a legjobb, hogy nem kell külön tábla sem, mert külön vagy egy mail szerver pont hírlevelekre. :)
Betolom neki az összes mailt egyszerre, a szerver meg a maga tempójában elküldi őket. :)

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#11352) KKope


KKope
tag

Sziasztok!

3napja vergődök és elakadtam a diplomamunkámban.
Egyszerűen nem jön össze hogy egy kilistázott táblából sort töröljek(ID alapján).
Mutatom a kódot, hol csesztem el??????

//Tételek törlése

if ( isset( $_POST["delete"] )) {

$id = $_POST['mozgastetel_id'];
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id = '$id'") or die (mysql_error());

header('Location: index.php?eszkozmozgas');

}

<?php
//Hozzáadott eszközök kilistázása
$list = mysql_query ( " SELECT * FROM mozgastetel WHERE bizonylatszam=$lastid+1");

$szin="lightgrey";

while ( $sor = mysql_fetch_array ($list)){
if($szin=="lightgrey"){$szin="white";}
else $szin="lightgrey";
?>
<tr bgcolor="<?php print $szin;?>">

<td><?php print $sor["cikkszam"];?></td>
<td><?php print $sor["mozgastetel_id"];?></td>
<td>
<input type="submit" name="delete" value="Törlés!">
</td>
</tr>

<?php
}
?>
//Tételek törlése vége

(#11353) CSorBA válasza KKope (#11352) üzenetére


CSorBA
őstag

Már bocs, de egyszerű válaszban: Valószínűleg elég sok helyen.

Bővebben talán kezdjük a legfontosabbal, hol a formod? Mit submitelsz azzal a deletetel ott a végén?

(#11354) CSorBA


CSorBA
őstag

Privátban kaptam kódot, de visszaterelem a fórumtársat inkább ide:

Ajjjajajajajj.Hol is kezdjem :D

1,
1 formban 1 submit lehet csak.

2,
A submit csak elküldi a formot, ahhoz hogy adatot is küldj vele, bele kellene raknod az adatokat "valamibe" (pl.: input, textarea, checkbox, radio). /Ezért lehet kapok még leszólást a fórumtársaktól, csak megpróbáltam érthetően elmagyarázni.../
Szóval ha te megnyomod a "Törlés!" gombot, akkor attól honnan tudná a php, hogy mit töröljön? Kellene neki küldeni valamit. Mondjuk nálad a tetel_id-t bele kellene rakni egy hidden inputba, mert attól, hogy ott a táblázatban van, nem fogja elküldeni.

<input type="hidden" value="<?=$sor["mozgastetel_id"]?>">
(a html részben helyettesíthető a print parancs közvetlen egyenlőségjellel, ahogy itt írtam)

Mellesleg, $id = $_POST['mozgastetel_id']; itt is tessék escapelni!!!

(#11355) KKope válasza CSorBA (#11354) üzenetére


KKope
tag

Nagyon köszönöm!
Ne szóljatok le kezdő vagyok, bár ahhoz képest jól haladok:)

Itt a kód a többieknek is:

<?php
include("inc/vedettlink.php");

//Szükséges lekérdezések
$sql1="select * from szemely";
$result1=mysql_query($sql1);

$sql2="select * from telephely";
$result2=mysql_query($sql2);

$sql3="select * from szallito";
$result3=mysql_query($sql3);

$sql4="select * from jelleg";
$result4=mysql_query($sql4);

$sql5="select * from mozgasfej";
$result5=mysql_query($sql5);

$sql6="select * from telephely";
$result6=mysql_query($sql6);

$sql7="select * from eszkoztorzs";
$result7=mysql_query($sql7);

$sql8="select * from szemely";
$result8=mysql_query($sql8);

$list = mysql_query ( " SELECT MAX(bizonylatszam) AS lastid FROM MOZGASFEJ ");
while ( $row = mysql_fetch_array ($list))
$lastid = "$row[lastid]";

//Eszközmozgás feltöltés
if ( isset( $_POST["feltoltes"] ) ) {

//mysql_real_escape_string levédi egy stringben a speciális karaktereket egy SQL lekérdezés számára
$honnan = mysql_real_escape_string($_POST["honnan"]);
$hova = mysql_real_escape_string($_POST["hova"]);
$szallito = mysql_real_escape_string($_POST["szallito"]);
$jelleg = mysql_real_escape_string($_POST["jelleg"]);
$datum = mysql_real_escape_string($_POST["datum"]);

$sql= "INSERT INTO `mozgasfej` ( `honnan` , `hova` , `szallito_id` , `jelleg_id`, `datum`)
VALUES ( '$honnan', '$hova', '$szallito', '$jelleg', '$datum');
";

mysql_query ( $sql );

if(mysql_errno() == 0 ) {

header('Location: index.php?eszkozmozgas'); //Adatfelvitel után frissíti az oldalt
}

else
die (" SQL hiba!" . mysql_error() );

}
//Eszközmozgás feltöltés vége

//Tételek hozzáadása
if ( isset( $_POST["hozzaad"] )) {

$cikkszam = mysql_real_escape_string($_POST["cikkszam"]);
$bizonylatszam = mysql_real_escape_string($_POST["bizonylatszam"]);

$sql= "INSERT INTO `mozgastetel` ( `cikkszam` , `bizonylatszam` )
VALUES ( '$cikkszam', '$bizonylatszam');
";
mysql_query ( $sql );

header('Location: index.php?eszkozmozgas'); //Tetelek hozzáadása után frissíti az oldalt

}
//Tételek hozzáadás vége

//Tételek törlése

if ( isset( $_POST["delete"] )) {

$id = $_POST['mozgastetel_id'];

mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id = '$id'") or die (mysql_error());

header('Location: index.php?eszkozmozgas');

}
//Tételek törlése vége
?>

<p>
<form method="POST" action="index.php?eszkozmozgas">
<table border="0">
<tr>
<td colspan="2"><h2>Eszközök mozgása</h2></td>
</tr>
<tr>
<td>Bizonylatszám: </td><td><input type="text" name="bizonylatszam" value="<?php echo $lastid +1 ?>"><br /></td>
</tr>
<tr>
<td>Honnan: </td>
<td><?php echo '<select name="honnan">';
while($x=mysql_fetch_array($result2)) {
echo '<option value="'.$x[telephely_id].'">'.$x[telephelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Hova: </td>
<td><?php echo '<select name="hova">';
while($x=mysql_fetch_array($result6)) {
echo '<option value="'.$x[telephely_id].'">'.$x[telephelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Szállító(Cég/Szeméy): </td>
<td><?php echo '<select name="szallito">';
while($x=mysql_fetch_array($result1)) {
echo '<option value="'.$x[szemely_id].'">'.$x[szemelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Jelleg: </td>
<td><?php echo '<select name="jelleg">';
while($x=mysql_fetch_array($result4)) {
echo '<option value="'.$x[jelleg_id].'">'.$x[jellegnev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Cikkszmám: </td>
<td><?php echo '<select name="cikkszam">';
while($x=mysql_fetch_array($result7)) {
echo '<option value="'.$x[cikkszam].'">'.$x[cikkszam].'</option>';
}
echo '</select>'?>
<input type="submit" name="hozzaad" value="Hozzáad!"><br />
</td>
</tr>
<tr>
<td>Mozgás dátuma: </td><td><input type="text" name="datum" value="<?php echo date("Y-m-d H:i:s"); ?>"><br /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="feltoltes" value="Feltöltés!"></td>
</tr>
<tr>
<td colspan="2"><h4>Mozgatni kívánt eszköz(ök):</h4></td>
</tr>

<?php
//Hozzáadott eszközök kilistázása
$list = mysql_query ( " SELECT * FROM mozgastetel WHERE bizonylatszam=$lastid+1");

$szin="lightgrey";

while ( $sor = mysql_fetch_array ($list)){
if($szin=="lightgrey"){$szin="white";}
else $szin="lightgrey";
?>
<tr bgcolor="<?php print $szin;?>">
<td><?php print $sor["cikkszam"];?></td>
<td><?php print $sor["mozgastetel_id"];?></td>
<td><input type="submit" name="delete" value="Törlés!"></td>
</tr>

<?php
}
?>

</table>
</form>
</p>

(#11356) KKope válasza CSorBA (#11354) üzenetére


KKope
tag

Nekem egy formban 2 submit is működik. Az hogy lehet?:)

a feltoltes és hozzad submit is tökéletesen működik:)

(#11357) CSorBA


CSorBA
őstag

Az egy dolog, de nem jó.

Gondold el van egy oldalad, amin van két tevékenység:
Törlés
Szerkesztés
És mindkettőnél a formban küldesz valamit, amit ugyanúgy nevezel el. A php honnan tudja, hogy most te melyiket akartad küldeni, ha mindkettőt elküldted. Még most az elején szokj le róla, és szedd szét a formot, annyira, ahány submited van.

(#11358) KKope válasza CSorBA (#11357) üzenetére


KKope
tag

Na akkor nekiugrok, megpróbálom szétkapni:)

(#11359) KKope válasza CSorBA (#11357) üzenetére


KKope
tag

holnap jelentkezem:)

[ Szerkesztve ]

(#11360) KKope válasza CSorBA (#11357) üzenetére


KKope
tag

így sem megy:(

<?php include("inc/vedettlink.php");

if ( isset( $_POST["delete"] )) {

$id = $_POST['mozgastetel_id'];

mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id = '$id'") or die (mysql_error());

header('Location: index.php?eszkozmozgas');

}
?>
<form method="POST" action="mozgasteteltorles.php">
<table>
<?php
//Hozzáadott eszközök kilistázása
$list = mysql_query ( " SELECT * FROM mozgastetel WHERE bizonylatszam=$lastid+1");

$szin="lightgrey";

while ( $sor = mysql_fetch_array ($list)){
if($szin=="lightgrey"){$szin="white";}
else $szin="lightgrey";
?>
<tr bgcolor="<?php print $szin;?>">
<td><?php print $sor["cikkszam"];?></td>
<td><?php print $sor["mozgastetel_id"];?></td>
<td><input type="hidden" value="<?php=$sor['mozgastetel_id']?>"><input type="submit" name="delete" value="Törlés!"></td>
</tr>

<?php
}
?>
</table>
</form>

(#11361) PazsitZ válasza KKope (#11360) üzenetére


PazsitZ
addikt

Ne vedd támadásnak, de érdemes lenne átfutnod egy alap HTML tutorialt.
[link] a name attributumot be kell állítani az input tagnek, hogy megkapd mint post-olt adatot. Esetedben ha jól látom mozgastetel_id kell, hogy a name attributum legyen.
<input type="hidden" value="<?php=$sor['mozgastetel_id']?>" name="mozgastetel_id">

De jelen esetben ha listát használsz az azonos input nevek nem fognak működni.
A listád esetében inkább egy törlés linket tudnék elképzelni, ami a legegyszerűbb megoldás lehet. Ekkor viszont GET-el kaphatod meg az id-t.

[ Szerkesztve ]

- http://pazsitz.hu -

(#11362) Sk8erPeter válasza CSorBA (#11354) üzenetére


Sk8erPeter
nagyúr

"1 formban 1 submit lehet csak."
:Y Ez óriási nagy tévedés... Elég durva lenne... :U

Sk8erPeter

(#11363) Peter Kiss válasza KKope (#11352) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Iskolát szabadna tudni? Privátban is jó nekem.

(#11364) CSorBA válasza Sk8erPeter (#11362) üzenetére


CSorBA
őstag

Tény, hogy ez nem teljesen helytálló kijelentés volt, de érted hogy értettem na. Most nem akarom még jobban megkavarni, mikor tényleg az alap html sem megy neki. Jobb ha külön csinál mindent. :U

(#11365) Soak válasza KKope (#11360) üzenetére


Soak
veterán

Nem tudom, hogy milyen suliba diploma munka, de ha nem csak az számít, hogy meg legyen akkor esetleg az SQL Injection + Prepared Statement és/vagy Escape-t átnézhetnéd . A kódod abszolut nem biztonságos, itt még el megy, de ha később ezzel akarsz foglalkozni akkor ez életképtelen.

Szerk: Ha pedig kódot szursz be akkor használhatnád a Programkód formázási lehetőséget.

Más : Nem kéne írni egy peticíót, hogy Parciék rakjanak be egy alap syntax highlightert ? Sokat segítene a használhatóságon :) .

[ Szerkesztve ]

(#11366) DelArco


DelArco
aktív tag

Hello

Szeretnek egy kis segitseget/otletet kerni egy problema megoldasahoz.

Adott 4 adatbazis mindegyikben par tizezer rekord.
Ezekbol kellene egy 5. adatbazisba adatokat atmasolni kulonbozo feltetelek szerint.
Peldaul:
kell x feltetel szerint mind a 4 bol 500 rekord
kell y feltel szerint mindegyikbol 1000 rekord
es igy meg van vagy 10-15 ilyen feltetel.

En azt a teljesen faek egyszerusegu megoldast hasznaltam hogy mindegyik adatbazisnak csinaltam egy tombot amibe belement az ahhoz tartozo osszes rekord.
Azert tettem igy mert ugy szeretnem felvinni az adatbazisba a rekordokat hogy azok keverve legyenek tehat ne legyenek egymas mellett az egy feltetel szerint letoltottek se illetve az egy adatbazisbol valok sem.
Ami a gond ezzel tobbek kozott az az hogy eleg sok memoriat eszik amit lehetoleg szeretnek elkerulni.
A kerdes az hogy hogyan lehet megoldani ezt az attoltest ugy hogy ne kelljen tombokbe toltenem az adatokat?

Nem kizart hogy csak szamomra ertheto amit irtam szoval aki segiteni szeretne es nem ert valamit az nyugodtan kerdezzen tuti nem irtam le mindent.

Youth hides the key to salvation

(#11367) Soak válasza DelArco (#11366) üzenetére


Soak
veterán

A másolás az egyszeri lenne vagy pedig folyamatosan mentené le bizonyos feltételek mellett? MIlyen adatbázis?

(#11368) Coyot válasza DelArco (#11366) üzenetére


Coyot
őstag

Ideiglenes .sql fájlba rakd el az insert sql parancsokat majd ha kész vagy futtasd a fájlból és egybe lefut a teljes fájl tartalma. tetves gyors és nem sosem fogy el a memó.

Má' nem

(#11369) DelArco válasza Soak (#11367) üzenetére


DelArco
aktív tag

Csak egyszer kellene letrehozni vagyis mindig ujrageneralodna x naponta de most csak az egyszeri generalasrol lenne szo. Mysql adatbazis.

Coyot:
Mar megint nem ertem mirol beszelsz. :))
Irjal peldat mert nem ismerem a megoldast. Az insert utasitasokat azutan hozom letre hogy minden le van mentve tombokbe.
Vagy azt mondod hogy amikor szedem le az adatokat akkor ne tombbe tegyem hanem irjam ki oket egy sql fajlba kesz insert utasitaskent?

Youth hides the key to salvation

(#11370) Coyot válasza DelArco (#11369) üzenetére


Coyot
őstag

Azt mondom igen. Mivel a msqli tud több utasítást egyszerre benyalni így beolvasod stringként és lefuttatod.

Ennyi, jahogy csináljam is meg helyetted? mekkora részesedést kapok? ;] :DD

Má' nem

(#11371) PazsitZ válasza DelArco (#11366) üzenetére


PazsitZ
addikt

Szerintem simán mehetne a dolog sql-ben.
INSERT INTO db5.table (
(SELECT db1.table.f1, db1.table.f2, ... FROM db1.table WHERE db1.table.x = x)
UNION
(SELECT db2.table.f1, db2.table.f2, ... FROM db2.table WHERE db2.table.y = y)
...
ORDER BY RAND()
);

Bár az ORDER BY RAND() elég jó terhelést jelent, hosszasan futhat, de ezt úgyis csak egyszer lövöd el generáláskor.
Ez az insert rendezés mondjuk elhagyható, pl. utólag mondjuk a generált táblához hozzárendelsz egy random értékekkel feltöltött indexelt mezőt és lekérdezéskor az lesz az elsődleges rendezési szempontod, minden lekérdezés esetén.

[ Szerkesztve ]

- http://pazsitz.hu -

(#11372) Sk8erPeter válasza PazsitZ (#11371) üzenetére


Sk8erPeter
nagyúr

Egyetértek. Csak figyelni kell arra, hogy az adott MySQL-usernek legyen jogosultsága írni a másik adatbázisba is.

Sk8erPeter

(#11373) pvt.peter


pvt.peter
őstag

Sziasztok!

Adódott egy problémám PHP -val kapcsolatban :D.
Adott kódban létre lehet hozni különböző HTML elemeket, form, label illetve különböző input fieldek.
A létrehozásuk megy is meg minden, viszont a nevük leellenőrzését szeretném automatizálni, tehát hogy ezek a szabálynak feleljenek meg:
- [A-Z] vagy [a-z] betűvel kezdődjön, utána a következő karakterek kövessék:
- bármennyi [0-9], vagy "-", vagy "_", vagy ":", vagy "."
Ha nem oda való karakter van benne akkor azt automatikusan cserélje ki vmi másra, pl. számra. (Tlképpen a felsorolt szabályok alkotják együttesen a HTML elemek valid name illetve id attribútumait.)
Természetesen tudom, hogy reguláris kifejezéssel kellene megoldani ezt a problémát, de nem működik tökéletesen.
preg_replace illetve preg_match fgvekkel próbálkoztam.

Választ és segítséget előre is köszönöm.

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#11374) DelArco válasza Coyot (#11370) üzenetére


DelArco
aktív tag

Dehogy kell megcsinalnod helyettem. Meg a vegen elrontod nekem :D

Koszonom az sql-es megoldasokat is ki fogom probalni. :R

Youth hides the key to salvation

(#11375) Peter Kiss válasza pvt.peter (#11373) üzenetére


Peter Kiss
senior tag
LOGOUT blog

A múltkor általam mutatt kódban találsz erre egy reguláris kifejezést, ami megoldja ezeknek a nagy részét (kezdőbetűt nem).

(#11376) Gergello


Gergello
addikt

Hogy tudok beolvasni egy távoli helyen lévő fájlt?

Ha:
php 5.2.17
http-n keresztül elérhető
allow_url_fopen OFF
curl_init le van tiltva

(#11377) Sk8erPeter


Sk8erPeter
nagyúr

Hasznos oldal PHP-s függvények próbálgatására:
http://onlinephpfunctions.com/

Egyből kódot is generál a kipróbált függvényből.
Pl. a szóban forgó preg_replace():
http://preg_replace.onlinephpfunctions.com/

Sk8erPeter

(#11378) sonar


sonar
addikt

Hi

Mi lehet a gond az else ággal? Folyton PHP Parse error üzenetet kapok és nem birok rájönni, hogy mi lehet a probléma.

Ha nincs ott simán lefut
<?php for($i=1;$i<=24;$i++){ ?>
<?php if ($i==$ora[0]){ ?>
<?php echo "<option value=".$i." selected=selected>".$i."</option>"; ?>
<?php } ?>
<?php else ?>
<?php { ?>
<?php echo "<option value=".$i.">".$i."</option>"; ?>
<?php } ?>
<?php } ?>

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#11379) sonar válasza sonar (#11378) üzenetére


sonar
addikt

tárgytalan

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#11380) Sk8erPeter válasza sonar (#11378) üzenetére


Sk8erPeter
nagyúr

Minek raksz minden sorba nyitó PHP-taget és zárót?

<?php
for ($i = 1; $i <= 24; $i++) {
if ($i == $ora[0]) {
echo "<option value=" . $i . " selected=selected>" . $i . "</option>";
} else {
echo "<option value=" . $i . ">" . $i . "</option>";
}
}

Egyébként ebben nincs szintaktikai hiba, tehát máshol kell keresned a hibát.
#11379: ha megoldódott, illik közölni, mi volt a hiba oka.

Sk8erPeter

(#11381) pvt.peter válasza Peter Kiss (#11375) üzenetére


pvt.peter
őstag

Igen, az meg is van, ezt most ki is egészítettem, viszont az a baj, hogy minden "rossz" karaktert, tehát ami nem esik ebbe a halmazba: "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM0123456789.-" azt kettő db "_" jelre cseréli ki.
protected function _createClientID($name) {
if (!preg_match("/^[a-zA-Z]$/", $name[0])) {
$name[0] = 'A';
}
$pattern = "/(?:[^qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM0123456789\.-])/";
$replacement = "_";
$subject = $name;
return preg_replace($pattern, $replacement, $subject, -1 );
}

Nem jövök rá, hogy mi a probléma vele.
A tesztelős oldalon is ue a helyzet. [link]

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#11382) Sk8erPeter válasza pvt.peter (#11381) üzenetére


Sk8erPeter
nagyúr

Használd az "u" modifiert, úgy már nem cseréli le kettőre. A patternben meg ez is elég:
/(?:[^A-z\d\.-])/

Példa:
$pattern = '/(?:[^A-z\d\.-])/u';
$replacement = '_';
$subject = 'teniszütő akármi lálálá ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP';
echo preg_replace($pattern, $replacement, $subject, -1);

Eredmény:
tenisz_t__ak_rmi_l_l_l___RV_ZT_R__T_K_RF_R_G_P

Szerk.: magyarázat:
Itt vannak a modifierek: [link]
az említett modifier:
"u (PCRE_UTF8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5."

[ Szerkesztve ]

Sk8erPeter

(#11383) pvt.peter válasza Sk8erPeter (#11382) üzenetére


pvt.peter
őstag

Ilyen modifierekről még nem is hallottam, mindenesetre áttanulmányozom.
Még kezdő vagyok ilyen terén :B
Jó, hogy vannak szakértő emberek, köszönöm a segítséget.

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#11384) Sk8erPeter válasza pvt.peter (#11383) üzenetére


Sk8erPeter
nagyúr

Szívesen!
Az a lényeg, hogy így, az "u" használatával Unicode-karakterekre is illeszkedő patterneket is használhatsz, és nem rontja el az eredményt sem olyan módon, ahogy az imént (duplikáció).

Sk8erPeter

(#11385) sonar válasza Sk8erPeter (#11380) üzenetére


sonar
addikt

Pont az lett a megoldás amit te is irtál.
Kivettem a felesleges tagokat és láss csodát jó lett.

Ez van ha az ember sz@r tutoriálokat olvasgat.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#11386) Sk8erPeter válasza sonar (#11385) üzenetére


Sk8erPeter
nagyúr

Hát az tényleg egy fos tutorial, ha ezt javasolta...

selected=selected
ezt is javítsd ilyenre:
selected="selected"

Sk8erPeter

(#11387) mobal


mobal
MODERÁTOR

Sziasztok!

Itt szenvedek... sehogy nem jut eszembe hogyan is tudnám megoldani, hogy:

- PHP feltöltött fájlok száma

mobal,

Szerk.: $count = count($_FILES['uploaded_files']['name']);

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#11388) Sk8erPeter


Sk8erPeter
nagyúr

Sziasztok!

A PHP memóriazabálását mivel szoktátok mérni?

Én most az XHProf extensiont raktam fel (itt van egy korai (0.10.3) compiled változat Windows-hoz, PHP 5.3-ra, IIS, tehát VC9-verzió, ez működik), azzal méregetem, és pl. ír egy ilyet az egyik Drupalos oldallekérésre:

Total Incl. PeakMemUse (bytes): 16,114,824 bytes

OK, tehát 16 MB-os nagyságrendben kajált, nincs is ezzel gondom, de a szerveren érdekes módon pontosan ugyanez a Drupal rengetegszer kifut a 128 MB (!!) memóriakorlátból, ezért kezdtem el méregetni.
Nem igazán értem, hogy ha eszerint 16 MB körül van, akkor hogyan lehetséges, hogy éles szerveren túllépi a memóriakorlátot.
(Eleinte nem volt ilyen gáz, de most már egy nyamvadt content type létrehozásánál is ezt csinálja, ezért elkezdtem gyanakodni, hogy valamelyik contrib modul nagyon brutálisan leak-el.)
Ráadásul úgy, hogy most localhoston telepítve van a Devel modul, ami úgy van beállítva, hogy most logoljon mindenféle query-t is, pont mérési célból, tehát eléggé zabálja az is a memóriát.
Pedig ha a 128 MB-ot túllépi, akkor ott már valami nagy gáz van....

Ötlet?
Köszi!

[ Szerkesztve ]

Sk8erPeter

(#11389) Speeedfire válasza Sk8erPeter (#11388) üzenetére


Speeedfire
nagyúr

Sz*rul van valami beállítva a szerveren. Szerintem nézz rá/kérdezz rá erre a szolgáltatónál.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#11390) Sk8erPeter válasza Speeedfire (#11389) üzenetére


Sk8erPeter
nagyúr

No de mi lehet szarul beállítva?
Egyébként az ügyfél tárhelye náluk van tárolva.

Egyébként "persze" a phpinfo()-t letiltották:
"Warning: phpinfo() has been disabled for security reasons"
....

Ja, amúgy azt észrevettem, hogy sok esetben pl. egy-egy foreach-ciklusnál száll el (pl. menühierarchia összepakolásánál, vagy ilyesmi; írja ilyenkor a Fatal errornál, hogy hol szállt el a kódban, és sokszor core-kódoknál is írja), pedig ezekkel nincs gond localhoston.
Szóval nem értem.

[ Szerkesztve ]

Sk8erPeter

(#11391) PazsitZ válasza Sk8erPeter (#11388) üzenetére


PazsitZ
addikt

Tipp: localban 1-2 sor van a tábládban a szerveren meg 100-200 ezer.
De ezt így távolról senki nem fogja tudni megmondani neked.
Senki nem tudja mit, mivel, mikor, miért, kérdezel le, futtatsz, iterálsz, sokszorozol, az alkalmazott külső modulokról nem is beszélve.

[ Szerkesztve ]

- http://pazsitz.hu -

(#11392) Speeedfire válasza Sk8erPeter (#11390) üzenetére


Speeedfire
nagyúr

Nem tudom. Bugos php verzió...ezt csak a szolgáltatód tudhatja. :B

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#11393) Sk8erPeter válasza PazsitZ (#11391) üzenetére


Sk8erPeter
nagyúr

Nem, pontosan ugyanazok a táblák és kód van fent mindkét helyen. Nyilván nem tesztelem tök más körülmények között, annak nem sok értelme lenne... :)

Localhoston magasabb a korlát 128 MB-nál, hogy ne tudjon elszállni, de direkt azért monitorozom, hogy első körben megtudjam, valóban ennyit zabál-e.
Az XHProf szerint nem.
Na ez akkor hogy lehet?
Éles szerveren túllépi a 128 MB-ot, localhoston nem.

Sk8erPeter

(#11394) KKope válasza PazsitZ (#11361) üzenetére


KKope
tag

Pazsit,

Igazad van hagytam a submit-et és linkkel próbáltam megoldani:

Csak a torles link részét másoltam ki:

<td><?php echo "<a href=\"inc/teteltorles.php?id=" . $sor['mozgastetel_id'] . "\">Törlés</a>";?></td>

teteltorles.php

<?php
include("inc/connect.php");

mysql_query ("DELETE FROM mozgastetel WHERE mozgastetel_id= $_GET['id']") or die (mysql_error());

?>

Itt már át is adná a paraméter ahogy kell de elszáll az oldal a következő hibával:

Azt hittem végre tovább tudok haladni, de megint állok mint....

(#11395) Speeedfire válasza KKope (#11394) üzenetére


Speeedfire
nagyúr

Nem tudom milyen programot használsz kódolásra, de valami ide-t felrakhatnál pl netbens. Írja is a gondot.
2 hiba is van:
1. A sztingbe akarod fűzni a php value-t.
2. Nincs eszképelve a get id. Ez így egy elég nagy hiba sql részen.

Így valamivel jobb:

<?php
include("inc/connect.php");

mysql_query ("DELETE FROM mozgastetel WHERE mozgastetel_id=". mysql_real_escape_string($_GET['id'])) or die (mysql_error());

?>

pl a biztonság is elég érdekes itt, legalább nézd meg, hogy belépett felhasználó-e, meg egy jogkör sem lenne rossz.

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#11396) KKope válasza Speeedfire (#11395) üzenetére


KKope
tag

Első körben csak azt szeretném elérni, hogy működjön a funkció. Kezdő vagyok még és autodidakta módon próbálom elsajátítania nyelvet.
Próbálok úgy építkezni, hogy tisztában legyek a funkciók működésével és gondoltam a biztonságot utána alakítom ki.

1. javítva
2. javítva

most a következő üzit kapom:

Access denied for user ''@'localhost' (using password: NO)

(#11397) Sk8erPeter válasza KKope (#11396) üzenetére


Sk8erPeter
nagyúr

Akkor a connect.php-dben rossz csatlakozási adatokat adtál meg.

Sk8erPeter

(#11398) KKope válasza Sk8erPeter (#11397) üzenetére


KKope
tag

Az is rendben van mert eddig is azt használtam:(

(#11399) Lacces válasza KKope (#11398) üzenetére


Lacces
őstag

És az nem lehet hiba, hogy ékezetet használsz a jelszóban? Ékezetes jelszó esetén már dobott ilyen hibát nekem...

(#11400) Speeedfire válasza KKope (#11396) üzenetére


Speeedfire
nagyúr

Ahogy Sk8erPeter is írja vagy rossz, vagy valami más miatt nem tud csatlakozni.
Érdemes lenne esetleg egy var_dump-ot ráereszteni, hogy mi a hiba oka.

Miből tanulod a PHP-t?

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.