[mysql+php] wat doe ik fout

Pagina: 1
Acties:

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik heb een databeesje gevuld met adres gegevens. Met php wil ik een simpel adressen boekje maken.
address.php, add.php en remove.php heb ik alwerkende. Alleen krijg ik het niet voorelkaar om edit.php aan de praat te krijgen :(
Als ik edit.php opvraag dan zegt hij dat ik geen naam heb opgegeven, das goed. Als ik zeg edit.php?name=Diederik dan krijg ik keurig de edit form te zien met de data erin van Diederik. Maar als ik iets wil weizigen en om submit klik zegt hij geen naam opgegeven...

Wie ziet wat ik na een 1,5 uur prutsen nog niet zie?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
if ($name) {

    if ($submit) {


    
echo "<html><head>
    <meta http-equiv=\"Refresh\" content=\"5; URL=address.php\">
    </head><body>";

    $db = mysql_connect("localhost", "root");
    mysql_select_db("adress",$db);
    $sql = "update adress set firstname='$firstname', lastname='$lastname', email='$email', phone='$phone', mobile='$mobile', adress'$address', zip='$zip', city='$city' where firstname=$name";

    $result = mysql_query($sql);

    echo "Informatie van " . $firstname . " " . $lastname . " is gewijzigd in de database";
    echo "<br>Je wordt in 5 sec terug gebracht naar het adresboek.";

    } // end if submit
    else{
 

    $db = mysql_connect("localhost", "root");

    mysql_select_db("adress",$db);

    $sql = "select * from adress where firstname='$name'";

    $result = mysql_query($sql);
    $myrow = mysql_fetch_array($result);



    // display form
    ?>
    

    <form method="post" action="<?php echo $PHP_SELF?>">
    <table>
        
<tr><td>Voornaam:</td><td><input type="Text" name="firstname" value="<?php echo $myrow["firstname"] ?>" ></td></td>
        
<tr><td>Achternaam:</td><td><input type="Text" name="lastname" value="<?php echo $myrow["lastname"] ?>" ></td></td>
        
<tr><td>Adres:</td><td><input type="Text" name="address" value="<?php echo $myrow["adress"] ?>" ></td></td>
        
<tr><td>Postcode:</td><td><input type="Text" name="zip" value="<?php echo $myrow["zip"] ?>" ></td></td>
        
<tr><td>Plaats:</td><td><input type="Text" name="city" value="<?php echo $myrow["city"] ?>" ></td></td>
        
<tr><td>Telefoon nummer:</td><td><input type="Text" name="phone" value="<?php echo $myrow["phone"] ?>" ></td></td>
        <tr><td>Mobiel nummer:</td><td><input type="Text" name="mobile" value="<?php echo $myrow["mobile"] ?>" ></td></td>
        
<tr><td>Email:</td><td><input type="Text" name="email" value="<?php echo $myrow["email"] ?>" ></td></td>         <tr><td>&amp;nbsp</td><td><input type="Submit" name="submit" value="Wijzig">
</td></td>     </table>

    </form>

    
  <?php


} // end else submit.

} // end if name
else {


echo "<html><head><meta http-equiv=\"Refresh\" content=\"5; URL=address.php\"></head><body>";
echo "Geen naam opgegeven, je wordt terug gebracht naar het adresboek.";
echo "</body></html>";
} // end else name

?>

</body>
</html>
?>

...


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:18

TheDane

1.618

je post 't formulier zonder $name variabele;
in plaats daarvan heb je een input type=text name="firstname"

maak daar maar eens name van en dan werkt 't wel denk ik

Verwijderd

doe bovenaan eens
if( $name || $firstname )
of doe in je form
<INPUT TYPE=HIDDEN name="name" VALUE="$name">

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
<INPUT TYPE=HIDDEN name="name" VALUE="$name">

toegevoegd in het form, als ik nu iets wijzig dan kom ik indd op de pagina van de wijzigingen zijn doorgevoerd, alleen hij heeft de data toch niet weggeschreven in de database.

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
PHP:
1
2
3
<?
where firstname=$name
?>

moet zijn
PHP:
1
2
3
<?
where firstname='$name'
?>

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Op woensdag 23 januari 2002 21:38 schreef RdeTuinman het volgende:
PHP:
1
2
3
<?
where firstname=$name
?>

moet zijn
PHP:
1
2
3
<?
where firstname='$name'
?>
Maakt geen verschil. hij zet de nieuwe gegevens niet weg.

[edit]
zie nu zelf ook een foutje:
adress'$address' -> adress='$address'
Maar ook dat heeft geen effect.

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Tweede poging :)
PHP:
1
2
3
<?
mysql_query($sql);
?>

Maak hier voor de zekerheid van:
PHP:
1
2
3
<?
mysql_query($sql) or die(mysql_error());
?>

Dan weet je zeker of je query gelukt is, en druk hem anders ook nog even af.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 23 januari 2002 21:41 schreef Haranaka het volgende:
Maakt geen verschil. hij zet de nieuwe gegevens niet weg.
was wel fout iig :)
(maar dat zie je pas als de rest klopt :) )

Doet iets met Cloud (MS/IBM)


Verwijderd

adress'$address'
zet daar eens een = tussen ;)

Je database zou ik anders indelen, zoals je het er nu hebt staan kun je nooit 2 mensen met dezelfde naam er in zetten, of je kunt slechts de 1e daarvan wijzigen. (immers, stel 2 jansens in de database dan zal jouw query gewoon de 1e selecteren)

Het is netter om die tabel een nummer mee te geven per record.

Overigens is het wel handig om een eventuele fout van je query af te vangen onder vermelding van een nette foutmelding.

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Op woensdag 23 januari 2002 21:47 schreef RdeTuinman het volgende:
Tweede poging :)
PHP:
1
2
3
<?
mysql_query($sql);
?>

Maak hier voor de zekerheid van:
PHP:
1
2
3
<?
mysql_query($sql) or die(mysql_error());
?>

Dan weet je zeker of je query gelukt is, en druk hem anders ook nog even af.
Nee hij geeft geen error dan.

Maar ik heb die where statement in de update regel eens handmatig aangepast en ipv '$name' heb ik er 'Diederik' van maak dan voert hij wel die weizigingen door in de database :?

Maar wat is er dan fout met die $name ?


[edit]
Op woensdag 23 januari 2002 21:52 schreef hezik het volgende:

[..]

zet daar eens een = tussen ;)

Je database zou ik anders indelen, zoals je het er nu hebt staan kun je nooit 2 mensen met dezelfde naam er in zetten, of je kunt slechts de 1e daarvan wijzigen. (immers, stel 2 jansens in de database dan zal jouw query gewoon de 1e selecteren)

Het is netter om die tabel een nummer mee te geven per record.

Overigens is het wel handig om een eventuele fout van je query af te vangen onder vermelding van een nette foutmelding.
Die = had ik zelf al gevonden :)
Ja gaande weg was ik er ook achter gekomen dat ik op deze manier een probleem krijg met 2 de dezelfde namen. Ik wuo eerst het zo hebben werken, daarna die extra kolom in de database erbij...

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Dat kun je dus zien door je query af te drukken.
PHP:
1
2
3
4
<?
$sql ="...";
echo $sql;
?>

Dan zie je wat er voor $name wordt ingevuld en kun je daaruit conclusies trekken, ;)

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
echo $sql:
update adress set [...] where firstname='$name'

Das dus niet goed...

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Dus de hele variabele $name is niet bekend...

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Maar later in kent hij $name wel, anders krijg ik niet de info van de persoon in mijn edit form te zien.

$sql = "select * from adress where firstname='$name'";

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Post je code eens zoals het nu is, want ik krijg sterk het vermoeden dat je precies dit er in hebt gezet:
code:
1
<INPUT TYPE=HIDDEN name="name" VALUE="$name">

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?
if ($name) {

    if ($submit) {


    
echo "<html><head>
//    <meta http-equiv=\"Refresh\" content=\"5; URL=address.php\">
    </head><body>";

    $db = mysql_connect("localhost", "root");
    mysql_select_db("adress",$db);
    $sql = "update adress set firstname='$firstname',lastname='$lastname',email='$email',phone='$phone',mobile='$mobile',adress='$address',zip='$zip',city='$city' where firstname='$name'";

    $result = mysql_query($sql) or die(mysql_error());
//    $result = mysql_query($sql);
echo $sql . "<br>";
    echo "Informatie van " . $firstname . " " . $lastname . " is gewijzigd in de database";
    echo "<br>Je wordt in 5 sec terug gebracht naar het adresboek.";

    } // end if submit
    else{
 

    $db = mysql_connect("localhost", "root");

    mysql_select_db("adress",$db);

    $sql = "select * from adress where firstname='$name'";

    $result = mysql_query($sql);
    $myrow = mysql_fetch_array($result);



    // display form
    ?>
    

    <form method="post" action="<?php echo $PHP_SELF?>">
    <table>
        <input type=hidden name="name" value="$name">
        
<tr><td>Voornaam:</td><td><input type="Text" name="firstname" value="<?php echo $myrow["firstname"] ?>" ></td></td>
        
<tr><td>Achternaam:</td><td><input type="Text" name="lastname" value="<?php echo $myrow["lastname"] ?>" ></td></td>
        
<tr><td>Adres:</td><td><input type="Text" name="address" value="<?php echo $myrow["adress"] ?>" ></td></td>
        
<tr><td>Postcode:</td><td><input type="Text" name="zip" value="<?php echo $myrow["zip"] ?>" ></td></td>
        
<tr><td>Plaats:</td><td><input type="Text" name="city" value="<?php echo $myrow["city"] ?>" ></td></td>
        
<tr><td>Telefoon nummer:</td><td><input type="Text" name="phone" value="<?php echo $myrow["phone"] ?>" ></td></td>
        <tr><td>Mobiel nummer:</td><td><input type="Text" name="mobile" value="<?php echo $myrow["mobile"] ?>" ></td></td>
        
<tr><td>Email:</td><td><input type="Text" name="email" value="<?php echo $myrow["email"] ?>" ></td></td>         <tr><td>&amp;nbsp</td><td><input type="Submit" name="submit" value="Wijzig">
</td></td>     </table>

    </form>

    
  <?php


} // end else submit.

} // end if name
else {


echo "<html><head><meta http-equiv=\"Refresh\" content=\"5; URL=address.php\"></head><body>";
echo "Geen naam opgegeven, je wordt terug gebracht naar het adresboek.";
echo "</body></html>";
} // end else name

?>

</body>
</html>
?>

...


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op woensdag 23 januari 2002 22:15 schreef RdeTuinman het volgende:
Post je code eens zoals het nu is, want ik krijg sterk het vermoeden dat je precies dit er in hebt gezet:
code:
1
<INPUT TYPE=HIDDEN name="name" VALUE="$name">
en jawel!!!!!!!
PHP:
1
2
3
<?
<input type=hidden name="name" value="$name">
?>

Begrijp je wat je hier doet? Hier ken je dus aan de variabele 'name' de waarde '$name'. Je typt hier in HTML dus die $name wordt niet geparst.

Dus:
PHP:
1
2
3
<?
<input type=hidden name="name" value="<?=$name?>">
?>

Of als je dit niet begrijpt:
PHP:
1
2
3
<?
<input type=hidden name="name" value="<?php echo $name;?>">
?>

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Thnks, dat was hem!
* Haranaka :)

...

Pagina: 1