Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivin muokkaus (MySql) lomakkeen kautta

Sivun loppuun

mika_jussi [25.04.2005 17:18:54]

#

Hei,

olen nyt kääntänyt ja vääntänyt tätä pätkää, koittanut googlata tieni totuuden lähteille, mutta ei onnaa. Käännyn nyt teidän puoleen.

Lähtötilanne:
Minulla on config-tiedosto, jossa funktiot erikseen jokaista toimintoa varten. Tähän asti minulla on seuraavat toimivat sovellukset: syöttölomake joka lisää rivin taulukkoon, lomake,jolla poistetaan rivi taulukosta sekä lomake, jolla tulostetaan toivottu rivi sivulle.

Hyvin yksinkertaista, mutta enpä saa toimimaan, nimittäin:

Ongelma:

Alla oleva pätkä on yksinkertaistu versio funktiosta, jota haluaisin käyttää halutun, äsken sivulle tulostetun rivin, tietojen muokkaamiseen siten, että jo tallennetut tiedot tulostuvat lomakekenttiin.

Nyt käyttämäni tapa ei varmasti ole kaikista viisain (lomakepohjan tulostaminen funktion kautta). Ja siihenkin kaipaan kommentteja.

Tämä on nyt kesken, en löydä tapaa, jolla saisin submitin liitettyä niin, että muutetut tiedot tallentuvat.

function edit() {
$id=$_POST[id];

if ($id== "") {
$id= $_GET['id'];
$name= $_GET['name'];
$adr = $_GET['adr'];

}
$sql2="select * from table where id='$id'";
$result2=mysql_query($sql2) or die("select fails");
$no=mysql_num_rows($result2);

if ($no==0) {

echo "Hakemaasi tietoa '$name' ei löytynyt ";

} else {
echo "'$id':";

}
while($tulosrivi = mysql_fetch_array($result2)){

echo "Name:";
echo "<input type=text name=newname value=";
echo $tulosrivi['name'];
echo ">";

echo "Address:";
echo "<input type=text name=newadr value=";
echo $tulosrivi['adr'];
echo ">";

echo "<input type=submit name=submit value=save>";
}

$sql = "update table set
name='$newname',adr='$newadr' where name='$name'";

$result = mysql_query($sql) or die("insert fails");

echo "The data has been saved";

}

Kape [25.04.2005 18:46:49]

#

En tiedä tarkotatko tätä?

function edit() {
$id=$_POST[id];

if ($id== "") {
$id= $_GET['id'];
$name= $_GET['name'];
$adr = $_GET['adr'];

}
$sql2="select * from table where id='$id'";
$result2=mysql_query($sql2) or die("select fails");
$no=mysql_num_rows($result2);

if ($no==0) {

echo "Hakemaasi tietoa '$name' ei löytynyt ";

} else {
echo "'$id':";

}
while($tulosrivi = mysql_fetch_array($result2)){

echo "<form action='' method='post'>";
echo "Name:";
echo "<input type=text name=newname value=$tulosrivi['name']";
echo ">";

echo "Address:";
echo "<input type=text name=newadr value=$tulosrivi['adr']";
echo ">";

echo "<input type=submit name=submit value=save>";
echo "</form>";
}

$sql = "update table set
name='$newname',adr='$newadr' where name='$name'";

$result = mysql_query($sql) or die("insert fails");

echo "The data has been saved";

}

mika_jussi [26.04.2005 13:44:37]

#

Hei,

kiitos avusta, Kape, pääsin eteenpäin, mutta en loppuun saakka. Tämä on tilanne: Sivu näyttää olevan ok. Alasvetovalikosta voi valita haluamansa rivin ja se tulostaa lomakkeen sivulle. Kuitenkaan lomakekentät ovat tyhjät, vaikka niissä pitäisi olla rivin tiedot. Lisäksi alapuolelle tulostuu 'insert fails', vaikka mitään tietoja ei ole lähettänyt. Mikä osa tästä nyt puuttuu?

Funktio tässä:

function edit() {
$name=$_POST['id'];


if ($id == "") {
$name = $_GET['id'];
$pop = $_GET['name'];
$terr = $_GET['adr'];
}

$sql2= "select * from table where id='$id'";
$result2= mysql_query($sql2) or die('select fails');
$no=mysql_num_rows($result2);

if ($no==0){

echo "Hakemaasi tietoa '$name' ei löytynyt ";
}

while($tulosrivi = mysql_fetch_array($result2)) {

echo "<form action='' method=post>";

echo "Name:";
echo "<INPUT TYPE=text name=newname value=";
echo $tulosrivi['$name'];
echo ">";

echo "Address:";
echo "<INPUT TYPE=text name=newadr value=";
echo $tulosrivi['$adr'];
echo ">";



echo "<input type=submit name=submit value=Save>";
echo "</form>";

}

$sql = "update table set
name='$newname',adr='$newadr' where name='$name'";

$result = mysql_query($sql) or die('insert fails');

echo "The data has been saved";

}

Tässä sivu, joka käyttää funktiota. (form3.php on lomake, jolla haetaan haluttu rivi)

<?php
	require('inc/config.php');

require('inc/form3.php');

    if ($_SERVER['REQUEST_METHOD'] == "POST") {

    	edit();

    }
?>

Kape [26.04.2005 14:30:45]

#

Näin

function edit() {
$id=$_POST[id];

if ($id== "") {
$id= $_GET['id'];
$name= $_GET['name'];
$adr = $_GET['adr'];

}
$sql2="select * from table where id='$id'";
$result2=mysql_query($sql2) or die("select fails");
$no=mysql_num_rows($result2);

if ($no==0) {

echo "Hakemaasi tietoa '$name' ei löytynyt ";

} else {
echo "'$id':";

}
while($tulosrivi = mysql_fetch_array($result2)){

echo "<form action='?sivu=update' method='post'>";
echo "Name:";
echo "<input type=text name=newname value=$tulosrivi[name]";
echo ">";

echo "Address:";
echo "<input type=text name=newadr value=$tulosrivi[adr]";
echo ">";

echo "<input type=submit name=submit value=save>";
echo "</form>";
}
if ($sivu== "update") {
$sql = "update table set
name='$newname',adr='$newadr' where name='$name'";

$result = mysql_query($sql) or die("insert fails");

echo "The data has been saved";
}
}

mika_jussi [26.04.2005 15:01:02]

#

Kiitos. Tuo auttoi sen verran, että ei enää herjaa 'insert fails' ennen, kun on tehnyt mitään.

En ymmärrä sitä, miksi jo olemassa olevat tiedot eivät tulostu lomakekenttiin.

Jostain syystä nyt näyttää siltä, että tallennus ei myöskään onnistu. Vaikka kentät tulostuivat tyhjinä, koitin täyttää ja tallentaa, mutta silloin tuli taas ilmoitus
"insert fails"


eli jokin ihme juttu tässä nyt edelleen on.

Kape [26.04.2005 15:25:52]

#

mika_jussi kirjoitti:

Kiitos. Tuo auttoi sen verran, että ei enää herjaa 'insert fails' ennen, kun on tehnyt mitään.

En ymmärrä sitä, miksi jo olemassa olevat tiedot eivät tulostu lomakekenttiin.

Jostain syystä nyt näyttää siltä, että tallennus ei myöskään onnistu. Vaikka kentät tulostuivat tyhjinä, koitin täyttää ja tallentaa, mutta silloin tuli taas ilmoitus
"insert fails"


eli jokin ihme juttu tässä nyt edelleen on.

Hmm ehkä vois editoida mut pistetään nyt uus viesti kuitenkin. Onko servus register_globalsit päällä jos ei ole niin kannattaa kokeilla etsiä $_POST['jou']. Sitten onko toi table ton taulun nimi mihin muokataa. En myöskään tiedä tarvitseeko lomakkeissa käytätä hipsuja mutta olen aina käyttäny kannatta sitäkin kokeilla.

echo "<form action='?sivu=update' method='post'>";
echo "Name:";
echo "<input type='text' name='newname' value='$tulosrivi[name]'>";


echo "Address:";
echo "<input type='text' name='newadr' value='$tulosrivi[adr]'>";


echo "<input type='submit' name='submit' value='save'>";
echo "</form>";

mika_jussi [26.04.2005 15:29:17]

#

Pitäisi olla kunnossa nuo kaikki, koska kun vain tulostaa sisällön samoilla muuttujilla, niin ne löytyvät kyllä ihan ok.

Pitää tutkiskella. Olen nyt muokannut tuota tiedostoa niin monta kertaa, ettei enää muista, mitä on koittanut ja mitä ei. Kiitti kuitenkin avusta.

Juice [26.04.2005 19:12:19]

#

Tutkiskelin ja siistin koodia, nyt pitäisi toimia. Kokeile ja kerro.

<?php
function edit() {
    #Eikös tulisi olla näin? Jos ei pelaa, vaihda entiselleen.
$id=$_POST["id"];

    if ($id == "") {
        $id = $_GET['id'];
        $name = $_GET['name'];
        $adr = $_GET['adr'];
    }
    $sql2 = "select * from table where id='".$id."'";
    $result2 = mysql_query($sql2) or die("select fails");
    $no = mysql_num_rows($result2);

    if ($no==0) {
        echo "Hakemaasi tietoa '$name' ei löytynyt ";
    } else {
        echo "'".$id."':";
    }
    while($tulosrivi = mysql_fetch_array($result2)){
        echo "<form action='?sivu=update' method='post'>";
        echo "Name:";
        echo '<input type="text" name="newname" value="'.$tulosrivi[$name]'" />';

        echo "Address:";
        echo '<input type="text" name="newadr" value="'.$tulosrivi[$adr].'" />';

        echo '<input type="submit" name="submit" value="save">';
        echo "</form>";
    }
    if ($sivu == "update") {
        $sql = "update table set name='".$newname."',adr='".$newadr."' where name='".$name."'";

        $result = mysql_query($sql) or die("insert fails");
        echo "The data has been saved";
    }
}
?>

Siistin hieman koodia. Vika lienee tässä kohden:

echo "<input type='text' name='newname' value='$tulosrivi[name]'>";

echo "Address:";
echo "<input type='text' name='newadr' value='$tulosrivi[adr]'>";

Adr ja name ovat muuttujia, siis $ eteen. Lisäksi attribuuttien ympärillä tulee olla lainausmerkit, mutta se ei voi aiheuttaa liiemmälti ongelmia.

mika_jussi [27.04.2005 10:33:33]

#

Moi Juice,

koitin tuota sun koodia. Edellisistä viesteistä oli jäänyt pois tuo $ muuttujien edestä, minulla se koodissa kyllä oli. Nyt koitin tehdä neuvojesi mukaan '".$muuttuja."' -mallilla, mutta se ei auttanut. Herjasi vain. Kun taas poistin nuo '". ympäriltä niin ei herjaa. Lauseessa update jne toimii kyllä.

Eli lopputulos tässä vaiheessa sama kuin äskeisen vaiheen jälkeen = tulostaa tyhjän lomakkeen eikä tallenna. Täytyy tutkiskella lisää, nöyrät kiitokset ajastasi.

mika_jussi [27.04.2005 12:58:53]

#

Uusi vaihe, nyt näkyvät tiedot lomakekentissä, tallennus ei vain toimi. Herjaa "Hakemaasi tietoa '' ei löytynyt, kun yrittää tallentaa. Eli ikään kuin haku-toiminto ja tallennus menisivät sekaisin.

function edit() {
$id=$_POST['id'];
if ($id == "") {
       $id =$_GET['id'];
       $name = $_GET['name'];
       $adr = $_GET['adr'];
}

$sql2="select * from table where id='$id'";
    $result2=mysql_query($sql2) or die("select fails");
    $no=mysql_num_rows($result2);

    if ($no==0) {
  echo "Hakemaasi tietoa '$name' ei löytynyt ";
    } else {
     echo "'$id'";
    }
while($tulosrivi = mysql_fetch_array($result2)){

echo "<form action='?sivu=update' method=post>";
echo "Name:";
echo '<input type="text" name="newname" value=";
echo $tulosrivi['name' ];
echo ">";
echo "Address:";
echo '<input type="text" name="newadr" value=";
echo $tulosrivi['adr' ];
echo ">";
echo "<input type=submit name=submit value=Save>";
echo "</form>";
}

if ($sivu== "update") {
$sql = "update table set name='$newname',adr='$newadr' where name='$name'";
$result = mysql_query($sql) or die('insert fails');

echo "The data has been saved";

}
}

Juice [27.04.2005 19:42:41]

#

Miksi nuo muuten ovat samassa funktiossa(haku ja tallennus)?

mika_jussi [28.04.2005 09:22:47]

#

Niinpä, olen senkin osuutta toimimattomuuteen miettinyt. Koitan erotella, katsotaan sitten, toimiiko paremmin.

mika_jussi [28.04.2005 11:29:57]

#

Nyt eri funktio hakee oikean rivin. En kuitenkaan näe, miten tuota tallennusfunktiota muuttaisi. Pakkohan sen on hakea ne tiedot joka tapauksessa - vai miten voin yhdistää sen siihen toiseen, joka nyt siis vain hakee oikean rivin, ja näyttää tältä

function hae() {

$id=$_POST['id'];

if ($id == "") {
$id = $_GET['id'];
$name = $_GET['name'];
$adr = $_GET['adr'];
}
$sql2="select * from table where id='$id'";
    $result2=mysql_query($sql2) or die("select  fails");
    $no=mysql_num_rows($result2);

    if ($no==0) {

echo "Hakemaasi tietoa '$name' ei löytynyt ";
     } else {
       echo "'$name'";
}
}

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta