Oon vielä vähän (tai oikeastaan aika paljon) noobi php:ssä, joten voisitteko auttaa?
Miten sais tehtyä lomakkeen (ei lomakkeen käsittely vaan ite lomake) php:llä. Sen pitäs lähettää tiedot "chat.php":lle. Täytettävä kenttä on "$msg" ja sen pitäs saada "$nick":n tiedot "index.php":ltä. Sitten se lähettää molemmat
($msg ja $nick) "chat.php":lle.
Kiitos paljon jos vaivaudutte auttamaan, sillä en ite millään oo saanu toimimaan.
<form action="chat.php" method="get"> <input type="text" id="msg" /> <br /> <input type="text" id="nick" value="<?php echo $nick; ?>" /> <input type="submit" value="Lähetä" /> </form>
Näin kaiketi.
Toimii melkein. muuten ihan ok, mutta siihen $nick:in kenttään ei tuu mitään. se jää tyhjäks vaikka siihen pitäs tulla se index.php:ssä annettu $nick. mikä on väärin? se on tarkotuksella että linkki indexissä on ikkuna.htm:ään.
index.php näyttää tältä:
<form method="post" action="boxi.php" name="nimi"> nimesi: <input name="$nick" type="text" value="" maxlength="30" size="20"><br> <br> <a href="ikkuna.htm"> <input name="submit" type="submit" value="sisään"> </a> </form>
boxi.php näyttää tältä:
<form action="chat.php" method="get"> <input type="text" id="msg" /> <br /> <input type="text" id="$nick" value="<?php echo $nick; ?>" /> <input type="submit" value="Lähetä" /> </form>
Joitakin "käsittämättömiä" juttuja tosta ainakin löytyy.
amaster kirjoitti:
index.php näyttää tältä:
<form method="post" action="boxi.php" name="nimi"> nimesi: <input name="$nick" type="text" value="" maxlength="30" size="20"><br> <br> <a href="ikkuna.htm"> <input name="submit" type="submit" value="sisään"> </a> </form>
Form:sta voit ottaa "name":n pois.
Pitäisi varmaankin olla "<input name="nick"..." ? value:ta et tarvitse sinne, jos se on tyhjä.
Miksi toi "<a href="ikkuna.htm">" on tuolla? ja varsinkin miksi se on keskellä lomaketta?
amaster kirjoitti:
boxi.php näyttää tältä:
<form action="chat.php" method="get"> <input type="text" id="msg" /> <input type="text" id="$nick" value="<?php echo $nick; ?>" /> <input type="submit" value="Lähetä" /> </form>
Plöh. en jaksa enää kertoa virheitä.. / ihmetellä.
samii kirjoitti:
Form:sta voit ottaa "name":n pois.
Ei sitä suinkaan pidä ottaa pois, mikäli sitä jossain vielä tarvitsee (tyylit, javascript). Toki olisi suositeltavaa astua nykyaikaan ja korvata name id:llä
Ihan näin uteliaana kysyn: onko id:llä ja name:lla mitään käytännön eroja, vai toimivatko ne aivan samalla tavalla?
Id on (lähes) kaikilla elementeillä, name taas vain formielementeillä. Id:n voi viitata kätevästi CSS:llä, nameen ei. Id toimii kohdeankkurina (kuten <a name="muuli">), name ei (edit: paitsi tietenkin tuolla a-elementillä)
Mitä nyt näin äkkiseltään tulee mieleen.
Kyllä myös name voi toimia apuna CSS-tyyleissä. Eli jotain tyyliin input[name="butSave"] { background: #ccc; }. Mutta eivät tosiaan toimi IE:llä kuten tuossa yhdessä ketjussakin oli jo puhetta. Tosi harmi sinänsä, sillä noin olisi helppo määrittää eri tyylit esimerkiksi tekstibokseille ja namiskoille (eli input[type="text"] ja input[type="submit"].
Noh... takaisin IE:n seuraavaa versiota odottelemaan.
Tuon sanan "kätevästi" oli tarkotus viitata just tuohon, että id-selektori toimii aina, kun nameen joutuu viittaamaan epäluotettavamman attribuuttiselektorin kautta, mutta oli kieltämättä vähän epäselvä.
samiille, että se <input name="$nick" ... >" oli tarkotuksella "$nick". Name:a en tiennyt korvata id:llä
Saattaa olla, ettei kannata laittaa tuota dollarinmerkkiä muuttujaan, koska se on turha ja voinee aiheuttaa hankaluuksia.
amaster kirjoitti:
samiille, että se <input name="$nick" ... >" oli tarkotuksella "$nick". Name:a en tiennyt korvata id:llä
No jos siinä on "$nick" niin eikö php -muuttujan pitäisi olla silloin "$$nick" ?.. Ja tämä voi tuottaa ongelmia.
PHP-muuttuja on $_GET["$nick"], koska register_globals ei ole varmaankaan päällä. (vai onko se $_GET["\$nick"]... ota dollari pois. Se on turha.)
jaa no kiitos samiille, sillä aattelin että vaikka lisäisin sen $ -merkin jo html osassa nii se pysyis samanlaisena phpssäkin kun se on jo valmiiks siinä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.