Kezdőoldal » Számítástechnika » Programozás » Egyszerű helyzet, de miért ad...

Ragua kérdése:

Egyszerű helyzet, de miért ad hibát?

Figyelt kérdés

Sziasztok!

Lett egy pici gondom, eddig egész jól haladtam, viszont gondoltam a későbbi munkám könnyítése miatt megírtam az első functionom. A function működik, a hiba maradt...


Ez a kód:

<?php

function nincs_adat($x){

if(empty($x)){

$x="Nincs adat";

return $x;

break;

}

else{

return $x;

}

}


$file = fopen("animelista.txt","r") or exit("Nem lehet megnitni a fájlt!");

echo('<a href="animeleltar.php">Vissza.</a><br />');

while(!feof($file)) {

$sor = fgets($file);

$tomb = explode(", ", $sor);

$sortomb= array();


for($i=0;$i<count($tomb);$i++){

$sortomb[$i] = $tomb[$i];

}


$mentesiido = nincs_adat($sortomb[4]);

print $sortomb[0].", ".$sortomb[1].", ".$sortomb[2].", ".$sortomb[3].", ".$mentesiido;

echo("<br />");

}



echo('<a href="animeleltar.php">Vissza.</a>');

fclose($file);



?>

A proglémám az, hogy functionba elküldöm a nemlétező változót, és kiadja a hibaüzenetet, ugyanakkor beírja a változóba azt amit szeretnék hogy bent legyen. Ezt hogy tudnám megoldani?

(kezdő programozó vagyok, nagyon kezdő)

Internetre ez nem kerülne fel, ez csak nekem készül itthonra.



2017. máj. 9. 09:39
1 2 3
 11/21 A kérdező kommentje:
Hibajelzés eltűnt, köszi :)
2017. máj. 9. 10:43
 12/21 anonim ***** válasza:

Csak hogy értsd: azért nem működött neked, mert a függvénynek értékként adtad át a változót. Azaz, ha nem volt definiálva, akkor már a függvénynek sem tudott mit átadni. Ha az & jelet használod, akkor pointerként adod át a paramétert, azaz nem másolja az értéket, hanem közvetlen a változót adja át, így pedig már működik az isset, hiszen nem kell paraméterátadáskor másolni a nem definiált változót.

Így is lehet, de nem igazán jó megoldás.

Ha azt akarod, hogy csak azok az értékek jelenjenek meg, amik definiálva vannnak, sokkal egyszerűbb így:


foreach($tomb as $value) {

print $value.", ";

}


Mellesleg azt sem értem, minek vágod fel a sort vesszők mentén, ha utána ugyanúgy vesszőkkel írod ki?

2017. máj. 9. 11:04
Hasznos számodra ez a válasz?
 13/21 A kérdező kommentje:

A vesszők átmenetileg lettek beletéve, már át van az javítva | jelre. Jelenleg ez még egyáltalán nincs kiforrva, folyamatosan módosítgatom, viszont a php tudásom nagyon kevés. Ez miatt használom pl az if-nek is a hosszabb verzióját, mert azt jelenleg jobban átlátom. Ez a későbbiekben valószínűleg változni fog, viszont jelenleg nekem még így a jobb.

azért akartam functionban ellenőrizni az issetet, mivel lesz majd egy másik php oldal, ahol összegyűjtöm a functionokat, és az oldalak elején majd csak be kell szúrkodni őket. A jelenlegi meg azért "kell", hogy egyrészt gyakoroljak, másrészt meg ezt máshol is fogom alkalmazni (a maszekprogramomon belül), és így egyszerűbb lesz használni, minthogy minden értéknél mindig kiírni (legalábbis most így gondolom).

Jelenleg a txt-ben van Cím, rész, hossz, és módosítási idő oszlop, viszont a módosítási idő nincs mindegyiknél, így ezekhez kellett odaírnia a proginak, hogy "Nincs adat".

És jelenleg azért szedtem szét így szavakra, mert a következő dolog majd egy kereső lesz ezekben, ami csak max a név és cím oszlopban keres, ugyanakkor ki tud írni mindent.

Jelenleg már a kereső részével szenvedek, de majd megoldom valahogy. :)

2017. máj. 9. 12:11
 14/21 anonim ***** válasza:
Felejtsd el a txt fájlokban való keresgélést. Tedd az egészet egy adatbázisba, ezerszer egyszerűbb vele a munka!
2017. máj. 9. 13:49
Hasznos számodra ez a válasz?
 15/21 A kérdező kommentje:
tudom hogy egyszerűbb, SQL-ben megy a sorrendbe rakás is, meg a keresés is. Az valamivel jobban is megy, viszont azért álltam neki ilyennek, mert ez nem megy, így ezt gyakorlom. Ha már ráérzek kicsit, akkor majd előveszek egy másik részleget, ami nem megy, és megoldok valamit olyanban (pl: OOP).
2017. máj. 9. 14:27
 16/21 Drone007 ***** válasza:

Azért az elég szégyen, hogy lassan egy napja senki nem tudja megírni mitől dob hibát a függvényed. Bár #6 elég közel járt hozzá, sőt rá is vezethetett volna, ha okos vagy ;)

A sortomb[4] nem létezik, ezért a függvénynek sem adhatod át. Ezt futásidőben ellenőrizd:

$mentesiido = (isset($sortomb[4]) ? $sortomb[4] : "Nincs adat");


Emellett a $sortomb változónak nincs sok értelme, nyugodtan használhatod a $tomb-öt, vagy legalább használhatod így a ciklus helyett:

$sortomb = $tomb;


Ha már fájlban tárolsz adatokat, akkor egyszerűbb lenne csv-ben feldolgozni, vagy xml-ben azokhoz a php kínál beépített parsereket.

Pl: [link]

2017. máj. 10. 06:32
Hasznos számodra ez a válasz?
 17/21 Djjjozsiiiii ***** válasza:

good luck!



$adat=file("animelista.txt" ,FILE_IGNORE_NEW_LINES );

foreach($adat AS $sor){


$sortomb=explode("," , $sor);

$mentesiido = empty($sortomb[4])?' nincs adat ': $sortomb[4] ;

echo $sortomb[0].", ".$sortomb[1].", ".$sortomb[2].", ".$sortomb[3].", ".$mentesiido ."<br />";


}

2017. máj. 11. 16:50
Hasznos számodra ez a válasz?
 18/21 Djjjozsiiiii ***** válasza:

Még egy kicsit egyszerűbben:

$adat = file("animelista.txt" , FILE_IGNORE_NEW_LINES);

foreach($adat AS $sor) {

$sortomb = explode("," , $sor);

$sortomb[4] = empty($sortomb[4])?' nincs adat ': $sortomb[4] ;

echo implode(", " , $sortomb) . "<br />";

}

2017. máj. 11. 21:42
Hasznos számodra ez a válasz?
 19/21 A kérdező kommentje:

Drone007

Azt tudom, hogy a $sortomb[4] nincs mindig definiálva, a jelenlegi példában az egy mentési időt tartalmaz, ami a date() paranccsal rendeli hozzá az időt. Ezt amit írtál

($mentesiido = (isset($sortomb[4]) ? $sortomb[4] : "Nincs adat"); )

szeretném kiváltani egy függvénnyel, hogy ne adjon hibát. Ezt jelenleg el tudtam érni, a fent említett módszerrel.

Azért kell nekem rá a függvény, mert ugyanazokat a sorokat nem akarok sokszor ismételni, hiába ilyen rövid.

2017. máj. 14. 13:42
 20/21 Drone007 ***** válasza:

Kedves kérdező, ahogy írtam nem hívhatsz meg egy függvényt egy nem létező változóval. Először validálnod kell a változót, mert különben még a hívási periódus előtt elhasal a program.

Vagyis: az átadott változó validálását nem teheted a függvénybe, mert ha nem létezik akkor nem is adhatod át a függvénynek.

Bocs, de ennél szájbarágósabban már nem tudom leírni :)

2017. máj. 14. 20:57
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!