Avatar billede sanded001 Juniormester
02. oktober 2010 - 00:43 Der er 13 kommentarer og
1 løsning

Fejl i en sikker simpel linje for php hajer.

Hej alle.

Jeg er ret nybegynder i php faget og igang med en bog, som tager udgangspunkt i php og mysql.

problemet ligger i den kode jeg skriver af fra bogen - hvilket der så ikke burde være problemer i men det er der :/

http://sanded.dk/php/mymenu.php


--------------
    <p> <input type=\"submit\" name=\"submit\"
    value=\"add entry\"></p>
    </form>;
   
} else if ($_POST[op] == "add"){
   
    if (($_POST[f_name] == "") || ($_POST[l_name] =="" )) {
        header ("location: addentry.php");
        exit;
-----------------
fejlen ligger i denne linje ::::
} else if ($_POST[op] == "add"){

og jeg har prøvet alt muligt, men den siger bare at der er fejl i linje 69.

Ligger fejlen i evt manglende database jeg ikke har fået lavet eller i selve linjen?

----------

og sidder i og keder jer, så gerne skriv fif ned - og lære en n00b php.

pft :)
Avatar billede Rebjorn Nybegynder
02. oktober 2010 - 00:53 #1
Hvad siger den fejlen er?
Avatar billede sanded001 Juniormester
02. oktober 2010 - 00:55 #2
Parse error: syntax error, unexpected T_STRING in /customers/sanded.dk/sanded.dk/httpd.www/php/addentry.php on line 69
Avatar billede Rebjorn Nybegynder
02. oktober 2010 - 01:03 #3
Må jeg få hele koden på pastebin? Kigger på det imorgen så :)
Avatar billede ksoren Nybegynder
02. oktober 2010 - 01:33 #4
et par ting

$_POST[navn] skal skrives $_POST['navn'] eller $_POST["navn"]

ellers skal php gætte hvad du mener. navn uden noget omkring er en constant. Kig på www.php.net

if(x){
}else if(y){
}

er faktisk

if(x){
}else{
  if{y}{
  }
}

php har en særlig syntaks for sådanne konstruktioner:

if(x){
}elseif(y){
}

altså uden mellemrum
Avatar billede sanded001 Juniormester
02. oktober 2010 - 09:08 #5
<?
if ($_POST[op] != "add")
{
    $display_block = "<h1> add an entry</h1>
    <form method=\"post\"
    action=\"$_SERVER[PHP_SELF]\">
    <p><strong> First / Last names:</strong><br>
    <input type=\"text\" name=\"f_name\" size=30
    maxlength=75>
    <input type=\"text\" name=\"l_name\" size=30
    maxlength=75>
   
    <p> <strong> address:</strong><br>
    <input type=\"text\" name=\"address\" size=30
   
    <p> <strong> city/state/zip:</strong><br>
    <input type=\"text\" name=\"city\" size=30
    <input type=\"text\" name=\"state\" size=30
    <input type=\"text\" name=\"zipcode\" size=30
   
   
    <p><strong> address type:</strong><br>
    <input type=\"radio\" name=\"add_type\" value=\"home\" checked> home
    <input type=\"radio\" name=\"add_type\" value=\"work\"> work
    <input type=\"radio\" name=\"add_type\" value=\"other\"> other
   
   
   
   
    <p><strong> telephone number:</strong><br>
    <input type=\"text\" name=\"tel_number\" size=30 maxlength=25>
    <input type=\"radio\" name=\"tel_type\" value=\"home\" checked> home
    <input type=\"radio\" name=\"tel_type\" value=\"work\"> work
    <input type=\"radio\" name=\"tel_type\" value=\"other\"> other
   
   
   
   
   
    <p><strong> fax number:</strong><br>
    <input type=\"text\" name=\"fax_number\" size=30 maxlength=25>
    <input type=\"radio\" name=\"fax_type\" value=\"home\" checked> home
    <input type=\"radio\" name=\"fax_type\" value=\"work\"> work
    <input type=\"radio\" name=\"fax_type\" value=\"other\"> other
   
   
   
   
   
    <p><strong> email address:</strong><br>
    <input type=\"text\" name=\"email_address\" size=30 maxlength=150>
    <input type=\"radio\" name=\"email_type\" value=\"home\" checked> home
    <input type=\"radio\" name=\"email_type\" value=\"work\"> work
    <input type=\"radio\" name=\"email_type\" value=\"other\"> other
   
   
   
   
   
    <p><strong> personal note:</strong><br>
    <textarea name=\"note\" cols=35 rows=5 wrap=virtual>
    </textarea>
    <input type=\"hidden\" name=\"op\" value=\"add\">
   
    <p> <input type=\"submit\" name=\"submit\"
    value=\"add entry\"></p>
    </form>;
   
} else if ($_POST[op] == "add"){
   
    if (($_POST[f_name] == "") || ($_POST[l_name] =="" )) {
        header ("location: addentry.php");
        exit;
}
       
       
        $connect = mysql_connect ("", "", "")
        or die (mysql_error());
        mysql_select_db("sanded_dk",$connect) or die (mysql_error());
       
       
        $add_master = "insert info master_name
        values ('', now(),now(), '$_POST[f_name]',
                                        '$_POST[l_name]')";
        mysql_query($add_master) or die (mysql_error());
       
       
        $master_id = mysql_insert_id();
       
        if (($_POST[address]) || ($_POST[city])
                                        ($_POST[state]) || ($_POST[zipcode])) {
           
            $add_address = "insert into address values
            ('', $master_id, now(), now(),
                                        '$_POST[address]', ' $_POST[city]',
                                        '$_POST[state]', ' $_POST[zipcode]',
                                        '$_POST[add_type]') ";
            mysql_query ($add_address) or die (mysql_error());
        }
       
        if ($_POST[tel_number]) {
           
            $add_tel = "insert into telephone values
            ('', $master_id, now(), now(),
                                        '$_POST[tel_number]', '$_POST[tel_type]')";
            mysql_query($add_tel) or die (mysql_error());
        }
       
                if ($_POST[fax_number]) {
           
            $add_fax = "insert into fax values
            ('', $master_id, now(), now(),
                                        '$_POST[fax_number]', '$_POST[fax_type]')";
            mysql_query($add_fax) or die (mysql_error());
                }
               
                        if ($_POST[email]) {
           
            $add_email = "insert into email values
            ('', $master_id, now(), now(),
                                        '$_POST[email]', '$_POST[email_type]')";
            mysql_query($add_email) or die (mysql_error());
                        }
                       
                                if ($_POST[note]) {
           
            $add_note = "insert into personal_notes values
            ('', $master_id, now(), now(),
                                        '$_POST[note]')";
            mysql_query($add_note) or die (mysql_error());
                                }
                               
                                $display_block = "<h1> entry added </h1>
                                <p> your entry has been added. would you like to
                                <a href=\"addentry.php\"> add another </a>?</p>";
}
?>
<html>
<head>
<title> add an entry </title>
</head>
<body>
<? print $display_block; ?>
</body>
</html>
Avatar billede sanded001 Juniormester
02. oktober 2010 - 09:10 #6
Ved desværre ikke hvad postbin er, så poster den bare her.

Ja sorry, men somsagt så er jeg ret grøn i dette gejl. men håber på at lære det.
Avatar billede Slettet bruger
02. oktober 2010 - 09:15 #7
Jeg tror bare du mangler et par gåseøjne efter   </form>;
Så snart jeg kommer i nærheden af en computer skal jeg nok tage den igennem en syntaks-highlighter og tjekke efter.
Avatar billede Slettet bruger
02. oktober 2010 - 09:36 #8
Jeg, der har vi fejlen.

Dette her er en pastebin: http://pastebin.com/fF8ECtRs
Avatar billede sanded001 Juniormester
02. oktober 2010 - 11:39 #9
Ja det løste fejlen.

Hvorfor sætter man " øjne? hvad står det for?

og hvorfor sætter man ' ? hvad står det for?

Pt sætter jeg dem bare, fordi jeg skal, har ingen anelse om hvorfor jeg sætter dem :/

og nu er der en fejl på linje 91. suk

Parse error: syntax error, unexpected '(' in /customers/sanded.dk/sanded.dk/httpd.www/php/addentry.php on line 91

Hvordan kan der være fejl i et script - når jeg skriver direkte af efter en bog :S ... udover den er af lidt ældre dato self :P
Avatar billede sanded001 Juniormester
02. oktober 2010 - 11:39 #10
PS - sætter meget stor pris på hjælpen.
Avatar billede Slettet bruger
02. oktober 2010 - 12:01 #11
Både apostroffer (') og gåseøjne (") bruges til at benævne et stykke tekst, en såkaldt streng. Forskellen på de to er at PHP leder efter variabler mellem gåseøjne, og udskifter disse med deres værdier. Dette gør PHP ikke mellem apostroffer. For at give et eksempel:

$tekst = 'Bar'

echo 'Foo $tekst'; //Skriver "Foo $tekst"
echo "Foo $tekst"; // Skriver "Foo Bar"


Fejlen på linje 91 er at du i et if statement har glemt at inkludere en logisk operator mellem to variabler:

if (($_POST[address]) || ($_POST[city])
  ($_POST[state]) || ($_POST[zipcode])) {


skulle nok være

if (($_POST[address]) || ($_POST[city]) ||
  ($_POST[state]) || ($_POST[zipcode])) {
Avatar billede sanded001 Juniormester
02. oktober 2010 - 13:27 #12
du havde sku ret igen.

Kanon med din viden :D

Jeg begynder at forstå det så småt, men langvej endnu tror jeg.

Men smid et svar :D - jeg kommer helt sikkert igen, for PHP er sku ganske fun :) så det skal læres.
Avatar billede sanded001 Juniormester
02. oktober 2010 - 13:52 #13
btw.

hvad er pastebin ? jeg synes det ligner den kode jeg selv har skrevet? bliver ens fejl highlighted eller noget? :))
Avatar billede Slettet bruger
02. oktober 2010 - 20:03 #14
Pastebin er et sted hvor man lægger sin kode, så andre kan kigge på den og rette i den. Man lægger bare koden ind på siden, vælger hvilken type kode (PHP i vores tilfælde) og så viser den selv syntaksen (inklusiv fejl). Det er bare at smide et link :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester