Kezdőoldal » Számítástechnika » Weblapkészítés » Undefined index hibám van. Mi...

Undefined index hibám van. Mi a megoldás?

Figyelt kérdés

Ezt a hiba üzenetet kapom:

Notice: Undefined index: muvelet in D:\wamp\www\hogy beolvassa ez a szar\valasz.php on line 11


az említett sorban pedig ez van:


if ($_POST['muvelet'] != "bekuldes")


na már most minden működik, megjelenítődik, ez a hiba üzenet viszont ott van, nem tudom mi lehet a megoldás. Ötletek?


2011. nov. 10. 10:50
1 2
 1/13 anonim ***** válasza:

Ahogy a hiba mondja, nem definiált indexet próbálsz lekérdezni a tömbben. A 'muvelet' indexhez nem tartozik érték. Ennek minden bizonnyal az az oka, hogy a szkriptedben a form ilyen néven küld el egy paramétert de amikor úgy hívod meg a szkriptet, hogy nem lett submit-olva a form (pl. amikor először meghívod), akkor ennek a paraméternek nemcsak hogy nincs értéke, hanem még ismeretlen is a rendszer számára.


A megoldás :

if (isset($_POST['muvelet'])){

if ($_POST['muvelet'] != "bekuldes") {

.

.

.

}


}


Ez megvizsgálja először, hogy létezik-e egyáltalán ilyen változó és csak akkor próbálja az értékét összehasonlítani, ha definiálva van.

2011. nov. 10. 10:55
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:

Beraktam az általad említett kódrészletet, és a hiba üzenet eltünt viszont az ablakok is, amik eddíg ott voltak. Magyarul így nem működik.

Így néz ki a kódom:

<HTML>

<HEAD>

</HEAD>

<BODY>

<?php

//Összeköttetés kiépítése

$ossz=mysql_connect("localhost","root","") or die(mysql_error());

//Adatbázis kiválasztása

mysql_select_db("rocklife",$ossz) or die(mysql_error());


if (isset($_POST['muvelet'])){

if ($_POST['muvelet'] != "bekuldes") {

//Meg kell jeleníteni az űrlapot

//Vane ilyen téma

if (!$_GET['azonosito'])

{

header("Location:forum.php");

exit;

}

//Téma és hozzászólás ellenőrzése

$ellsql="SELECT temaazon,cim FROM hozzaszolastabla,tematabla WHERE

tematabla.azonosito=temaazon AND hozzaszolastabla.azonosito=$_GET[azonosito]";

$elleredmeny=mysql_query($ellsql,$ossz) or die(mysql_error());

if (mysql_num_rows($elleredmeny)<1)

{

header("Location:forum.php");

exit;

}

else

{

//Téma címének és azonosítójának kiolvasása

$temaazon=mysql_result($elleredmeny,0,'temaazon');

$cim=stripslashes(mysql_result($elleredmeny,0,'cim'));

print "<H1><font color=white> Hozzászólás a <B>$cim</B> című témához: </font></H1>";

print "<FORM METHOD=POST ACTION=\"$_SERVER[PHP_SELF]\">";

print "<font color=white>Email cím:</font><BR>";

print "<INPUT TYPE=\"text\" NAME=\"bekuldo\"><BR>";

print "<font color=white>Hozzászólás:</font><BR>";

print "<TEXTAREA NAME=\"szoveg\" ROWS=10 COLS=50></TEXTAREA><BR>";

print "<INPUT TYPE=\"hidden\" NAME=\"muvelet\" VALUE=\"bekuldes\">";

print "<INPUT TYPE=\"hidden\" NAME=\"temaazon\" VALUE=\"$temaazon\">";

print "<INPUT TYPE=\"submit\" VALUE=\"Mehet\"><BR>";

print "</FORM>";

}

}

}

if (isset($_POST['muvelet'])){

if ($_POST['muvelet'] != "bekuldes") {

//A szükséges mezők ki vannaketöltve?

if ((!$_POST['temaazon']) || (!$_POST['szoveg']) || (!$_POST['bekuldo']))

{

header("Location: forum.php");

exit;

}

//Hozzászólás felvétele

$sql="INSERT INTO hozzaszolastabla VALUES('','$_POST[temaazon]','$_POST[szoveg]',now(),'$_POST[bekuldo]')";

mysql_query($sql,$ossz) or die(mysql_error());

//Visszairányítás a hozzászólásokhoz

$link="hozzaszolasok.php?azonosito=$_POST[temaazon]";

header("Location: $link");

exit;

}

}

?>

</BODY>

</HTML>



ha nincs bent a te megoldásod akkor a fent említett hiba üzeneten kívül ott van még a válasz.php felülete és a funkciói is mennek. Így viszont üres oldal, semmiféle jelzés. :/

Ötlet?

2011. nov. 10. 11:11
 3/13 anonim ***** válasza:
Ha jól látom a teljes megjelenítő részed be van téve az if (isset.... igaz ágába, ami értelemszerűen nem fog végrehajtódni akkor, ha nincs értéke a megadott változónak. Az isset igaz értéket ad vissza akkor, ha a paraméterként átadott változó létezik és van értéke, hamisat akkor, ha nem létezik. Amikor először meghívod a szkriptet, akkor hamis értéket ad vissza és az igaz ágába rakott műveletek közül semmi nem kerül végrehajtásra.
2011. nov. 10. 11:20
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
magyarul rossz helyen zártam le az isset utasítást ?
2011. nov. 10. 11:23
 5/13 anonim ***** válasza:
Igen.
2011. nov. 10. 11:28
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:

lezárogattam össze vissza, végül nincs hibaüzenet, megörültem aztán rá mentem a submit gombra majd újra undefined index hiba üzenet ért ebben a sorban:


$ellsql="SELECT temaazon,cim FROM hozzaszolastabla,tematabla WHERE

tematabla.azonosito=temaazon AND hozzaszolastabla.azonosito=$_GET[azonosito]";


ezt a sort nem tudom úgy módosítani... nagy kérés tőlem h megkérlek fabrikáld meg a fentebb beküldött oldlat hogy jó legyen? :$ kezdő vagyok és nem látom át nagyon hogy mi van(a php 24 óra alattból dolgozom)

2011. nov. 10. 11:31
 7/13 anonim ***** válasza:
De miért a $_GET-et használod, ha a formot POST-tal küldöd el?
2011. nov. 10. 11:33
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:

Ja, átnéztem, látom már, ez ilyen vegyes felvágott.


Figyelj, aranyszabály: ha form paramétereket kérdezel le, akkor mielőtt lekérdezed mindig meg kell nézni isset-tel, hogy egyáltalán definiálva vannak-e. Ha nincsenek, akkor le se kérdezd, ha vannak, akkor pedig folytasd a szkriptedet úgy, mintha mi se történt volna.


Ha nagyon nem látod át, hogy mi is ez az egész és mi a lényege, akkor gyors és mocskos megoldás: tegyél egy @-ot a feltétel elé, a @ jel elnyomja a hibaüzenetet és nem fog dobni notice-ot se warning-ot, de hosszabb távon meg kellene értened az isset függyvény működését és használatát, mert egy szkriptet persze ki lehet javítani, de folyton bele fogsz ebbe botlani.


Nem olyan nehéz ez, ha egyszer megérted mi a szerepe.

2011. nov. 10. 11:38
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

@ jelet használtam most. Ez még az első weboldalam. És most OKJ-n webprogramozónak tanulok, de hát a suliban alig tanítanak amit meg tanítanak az c# nyelven. Amit még ennyire sem értek és a php-t hasznosabbnak találom. Csak netről elég nehéz tanulni. Már vagy 70 fórumot átnéztem hiba üzenetek és megoldások után kutatva, volt már session startos hibám, fetch array hibám is. De alig, vagy egyáltalán nem találtam rá megoldást. Végső esetben írtam ki ide. Mert a statisztika azt mutatta nekem hogy alig jönnek ide rendes megoldások.

De a te segítséged igen hasznos volt, nem teremtettél le, hogy menjek fórumhoz és segítőkész is voltál. Köszönöm szépen a segítséget, és örök hálám. :)

2011. nov. 10. 13:43
 10/13 anonim ***** válasza:

Én is ki szoktam osztani azt aki sültgalambot vár, egy aki azt se tudja, hogy mi az a php , csak egy "fasza kis weboldalt" akar csinálni annak nem lehet segíteni. Te látható módon értesz hozzá valamennyire és tudod mit akarsz elérni, csak megakadtál, szóval nem volt ok haragudni rád.


A @ nem a legjobb megoldás, szimplán elnyom minden hibát, azt is ami esetleg fontos lenne. Akkor érdemes használni ha az adott műveletnél nem akarsz hibaüzenetet látni de később a kódodban lekezeled a hibát. Ennek ellenére persze sokan használják úgy mint te. Majd ha időd és kedved engedi nézz rá az isset-re.


Örülök, hogy segíthettem, ha elakadsz írj nyugodtan akár magánban is, látom hogy megvan benned a szándék és csinálod is amennyire bírod, az ilyet nagyon tisztelem.

2011. nov. 10. 14:00
Hasznos számodra ez a válasz?
1 2

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!