Avatar billede tech2001 Nybegynder
12. marts 2006 - 16:45 Der er 57 kommentarer og
1 løsning

hvad betyder dette (let)

Hej lige en hurtig en hvad betyder

Column count doesn't match value count at row 1

det kommer frem efter jeg prøver at adde noget info til en bruger.

?

// Christian <- phpnewbie
Avatar billede jakobdo Ekspert
12. marts 2006 - 16:54 #1
Du prøver at indsætte 4 ting i en tabel med kun 3 felter.
Prøv lige at smid din sql herind?
Avatar billede johan.o Nybegynder
12. marts 2006 - 16:54 #2
Tja, ud fra den mængde af information du stiller til rådighed kan jeg kun fortælle at det drejer sig om en uoverenstemmelse mellem antallet af column's og value's. Men hvis du nu viser os noget af den kode der giver fejlen kan vi sikkert bedre hjælpe :)

Mvh. Johan
Avatar billede johan.o Nybegynder
12. marts 2006 - 16:55 #3
jakobdo--> :) hvordan søren ved du at det er 4 ting ????? :)

Mvh. Johan
Avatar billede jakobdo Ekspert
12. marts 2006 - 16:57 #4
Det ved jeg heller ikke! (det var bare for at give et eksempel) :o)
Avatar billede johan.o Nybegynder
12. marts 2006 - 17:04 #5
Ahh ok :)
Avatar billede tech2001 Nybegynder
12. marts 2006 - 17:11 #6
databasen :
# Struktur dump for tabellen `master_name`
#

CREATE TABLE `master_name` (
  `id` int(11) NOT NULL auto_increment,
  `f_name` varchar(31) NOT NULL default '',
  `l_name` varchar(31) NOT NULL default '',
  `address` varchar(63) NOT NULL default '',
  `postnr` varchar(6) NOT NULL default '',
  `postby` varchar(25) NOT NULL default '',
  `tel_number` varchar(25) NOT NULL default '',
  `fax_number` varchar(25) NOT NULL default '',
  `cvr_number` varchar(25) NOT NULL default '',
  `email` varchar(150) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;

#
# Data dump for tabellen `master_name`
#
Avatar billede jakobdo Ekspert
12. marts 2006 - 17:12 #7
Nej, den query du skyder af og som giver fejlen: Column count doesn't match value count at row 1
Avatar billede tech2001 Nybegynder
12. marts 2006 - 17:13 #8
og addinfo filen

<?php
if (($_POST[op] != "add") || ($_GET[id] != "")) {
    //har ikke set formular - så vis den
    $display_block = "<h1>Tilføj data til eksisterende kunde </h1>
    <form method=\"post\" action=\"$_SERVER[PHP_SELF]\">";
   
    if ($_GET[id] != "") {
    // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxxx", "xxxxx") or die(mysql_error());
    mysql_select_db("xxxxxxx",$conn) or die(mysql_error());
   
    //hent for- og efternavn
    $get_names = "select concat_ws(', ', f_name, l_name) as
        display_name from master_name where id = $_GET[id]";
    $get_names_res = mysql_query($get_names)
        or die(mysql_error());
    $get_names_res = mysql_query($get_names) or die(mysql_error()."<br>SELECT f_name, l_names from master_name: ".$get_names);
    if(mysql_num_rows($get_names_res) == 1) {
        $display_name = mysql_result($get_names_res,0, 'display_name');
        }
    }
    if ($display_name != "") {
        $display_block .= "<h2>Tilføjelse til
        <strong>$display_name</strong>:</h2>";
    } else {
        $display_block .= "<h2>
        <p><strong>For-/efternavn:</strong><br>
        <input type=\"test\" name=\"f_name\" size=30 maxlength=75>
        <input type=\"test\" name=\"l_name\" size=30 maxlength=75></h2>";
    }
    $display_block .= "<h2><strong>Adresse:</strong></h2>
    <h2><input type=\"text\" name=\"address\" size=30 maxlength=63></h2>
   
    <h2><strong>Postnr. og by:</strong></h2>
    <h2><input type=\"text\" name=\"postnr\" size=4 maxlength=6>
    <input type=\"text\" name=\"postby\" size=30 maxlength=25></h2>
   

   
    <h2><strong>Telefonnr.:</strong><br>
    <input type=\"text\" name=\"tel_number\" size=8
    maxlenght=25>

       
    <h2><strong>Faxnr.:</strong><br>
    <input type=\"text\" name=\"fax_number\" size=8
    maxlenght=25>

       
    <h2><strong>Email-adresse:</strong><br>
    <input type=\"text\" name=\"email\" size=30
    maxlenght=150>

       
    <h2><strong>CVRnr.:</strong><br>
    <input type=\"text\" name=\"cvr_number\" size=8
    maxlenght=25></h2>
   
    <input type=\"hidden\" name=\"op\" value=\"add\">
    <input type=\"hidden\" name=\"id\" value=\"$_GET[id]\">
   
    <p><input type=\"submit\" name=\"submit\"
    value=\"Tilføj kunde\"></p>
    </form>";
   
} else if ($_POST[op] == "add") {
    //føj til tabeller - tjek krævede felter
    if ((($_POST[f_name] == "") || ($_POST[l_name] == "")) &&
        ($_POST[id] == "")) {
        header("Location: addentry.php");
        exit;
        }
       
        // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxxx", "xxxxxx") or die(mysql_error());
    mysql_select_db("xxxxxx",$conn) or die(mysql_error());
   
    if ($_POST[id] == "") {
        // føj til master_name-tabellen
    $add_master = "insert into master_name values ('', '$_POST[f_name]', '$_POST[l_name]')";
    mysql_query($add_master) or die(mysql_error());
   
    // hent master_id til brug i andre tabeller
    $id = mysql_insert_id();
} else {
    $id = $_POST[id];
}
    if (($_POST[address]) || ($_POST[postnr])) {
        //evt. føj til address-tabellen
        $add_address = "insert into address values ('', $id, '$_POST[address]', '$_POST[postnr]', '$_POST[postby]') ";
        mysql_query($add_address) or die(mysql_error());
    }
   
    if ($_POST[tel_number]) {
    //evt. føj til telephone-tabellen
    $add_tel = "insert into tel_number values ('', $id, '$_POST[tel_number]')";
    mysql_query($add_tel) or die(mysql_error());
    }
   
    if ($_POST[fax_number]) {
    //evt. føj til fax-tabellen
    $add_fax = "insert into fax_number values ('', $id, '$_POST[fax_number]')";
    mysql_query($add_fax) or die(mysql_error());
    }
   
    if ($_POST[email]) {
    //evt. føj til email-tabellen
    $add_email = "insert into email values ('', $id, '$_POST[email]')";
    mysql_query($add_email) or die(mysql_error());
    }
   
    if ($_POST[cvr_number]) {
    //evt. føj til cvr-tabellen
    $add_cvr = "insert into cvr values ('', $id, '$_POST[cvr_number]')";
    mysql_query($add_cvr) or die(mysql_error());
    }
   
    $display_block = "<h1>Statusmelding for tilføjning af data ved eksisterende kunde</h1>
    <h2>Der er tilføjet data vedr. <strong>$get_names</strong></h2>
    <h2><a href=\"addinfo.php?master_id=$_POST[sel_id]\">tilføj flere data til samme kunde</a></h2>
    <h2><a href=\"adressemenu.htm\">tilbage til menu</a></h2>
    <h2><a href=\"selentry.php\">få vist kundens data fra kundedatabasen</a></h2>";
}
?>
<html>
<head>
<title>Add an entry</title>
<link href="ve style.css" rel="stylesheet">
</head>
<body>
<? print $display_block; ?>
</body></html>
Avatar billede tech2001 Nybegynder
12. marts 2006 - 17:14 #9
jeg aner ikke hvad der er skyld i fejlen ?
Avatar billede jakobdo Ekspert
12. marts 2006 - 17:16 #10
Du har mange mysql_error(), kunne du evt tilføje:
or die("1: " . mysql_error());
or die("2: " . mysql_error());
osv på dem?

(det gør det hurtigere at debugge)
Avatar billede johan.o Nybegynder
12. marts 2006 - 17:22 #11
Hm, du har en data base der hedder 'master_name'. Den indeholder 10 felter.

Når du prøver at lave en insert, som her :

        // føj til master_name-tabellen
    $add_master = "insert into master_name values ('', '$_POST[f_name]', '$_POST[l_name]')";
    mysql_query($add_master) or die(mysql_error());

mener jeg at du skal have alle 10 felter repræsenteret...altså sådan her :

        // føj til master_name-tabellen
    $add_master = "insert into master_name values ('', '$_POST[f_name]', '$_POST[l_name]','','','','','','','')";
    mysql_query($add_master) or die(mysql_error());

Efterfølgende prøver du at skrive til en masse forskellige tabeller med indhold som det ser ud til du har i master_name tabellen, men det er måske rigtigt nok ?

Mvh. Johan
Avatar billede tech2001 Nybegynder
12. marts 2006 - 19:32 #12
Du har ret johan,
jeg skriver til en masse tabeller som ikke er der,
er rettet nu, men nu når jeg forsøger at opdatere en bruger så bliver de oprettet i stedet for at rette den eksisterende brugers info ?

(smid os lige et svar johan) :)
Avatar billede spaceus Nybegynder
12. marts 2006 - 19:37 #13
du skal bruge update ellers laver du jo en ny insert... eller fjerne den først og så insert igen
Avatar billede tech2001 Nybegynder
12. marts 2006 - 19:42 #14
spaceus ja havde på fornemmelsen at det er noget med update men hvordan er koden ?

somsagt er lidt ny til det her :)
Avatar billede tech2001 Nybegynder
12. marts 2006 - 19:44 #15
må være noget i still med det her ?
   
$update_master = "UPDATE master_name values ('', '$_POST[f_name]', '$_POST[l_name]', '','','','','','','')";
    mysql_query($update_master) or die(mysql_error());
Avatar billede spaceus Nybegynder
12. marts 2006 - 19:47 #16
$add_master = "update master_name values ('', '$_POST[f_name]', '$_POST[l_name]','','','','','','','') where fName = '$_POST[f_name]'"; //evt også på lName
    mysql_query($add_master) or die(mysql_error());
Avatar billede tech2001 Nybegynder
12. marts 2006 - 20:26 #17
hm det virker sq ikke :/ ?
Avatar billede johan.o Nybegynder
12. marts 2006 - 22:59 #18
Når du vil lave en INSERT kombineret med VALUES skal du skrive ligeså mange værdier i VALUES som der findes i den tabel du vil insert'e i. Der er også andre måder at lave en INSERT men endnu vigtigere så er UPDATE syntaksen anderledes. Hvis f.eks. du kun ønsker at update f_name i tabellen master_name kan det gøres sådan her :

$upd="UPDATE master_name SET f_name='".$_POST['f_name']."' WHERE id='2'";

hvis du nu vil update både f_name og l_name for alle rækker med postnr=1200 kan det gøres sådan her :

$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."' WHERE postnr='1200'";

Prøv selv at rette din kode til. Hvis det ikke vil som du vil så spørger du bare igen :)

Mvh. Johan
Avatar billede johan.o Nybegynder
12. marts 2006 - 23:06 #19
Og så bør det nævnes at du i forbindelse med database operationer kombineret med brugerinput _altid_ skal lave en validering af inputet før du bruger det i dine SQL sætninger, og hvis ikke du kender den allerede så prøv at læse om mysql_real_escape_string på php.net

Mvh. Johan
Avatar billede tech2001 Nybegynder
12. marts 2006 - 23:22 #20
hvorfor er det du skriver WHERE postnr='1200' ? det skal ik være WHERE 'f_name', 'l_name', ?

kan se når jeg bruger $upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."' WHERE postnr='1200'";

så skriver den at brugeren er blevet updateret men når jeg så tjekker så er der ikke sket noget ?
Avatar billede johan.o Nybegynder
12. marts 2006 - 23:31 #21
Dette eksempel,

UPDATE a SET k='1' WHERE b='2' læses som,

Opdater tabellen a, sæt kollonen k lig 1 for alle rækker hvor b er lig 2

Så det der kommer efter WHERE fortæller hvilke rækker i tabellen der skal opdateres.

Det der kommer efter SET fortæller hvilke felter i rækkerne der skal opdateres og til hvilke værdier.

Når den skriver at brugeren er opdateret er det sikkert fordi du blot checker om sql operationen blev udført. I din tabel er der sikkert ingen rækker der har et postnummer på 1200. Så php udfører sql operationen men den opdaterer bare ingen rækker.

Så i denne forbindelse vil det også være en god ide at du kigger lidt på mysql_affected_rows()

Læser du på php.net ?

Mvh. Johan
Avatar billede tech2001 Nybegynder
13. marts 2006 - 00:08 #22
læser så meget som muligt forstår bare ik halvdelen af hvad jeg læser :/

min db seer således ud
# Struktur dump for tabellen `master_name`
#

CREATE TABLE `master_name` (
  `id` int(11) NOT NULL auto_increment,
  `f_name` varchar(31) NOT NULL default '',
  `l_name` varchar(31) NOT NULL default '',
  `address` varchar(63) NOT NULL default '',
  `postnr` varchar(6) NOT NULL default '',
  `postby` varchar(25) NOT NULL default '',
  `tel_number` varchar(25) NOT NULL default '',
  `fax_number` varchar(25) NOT NULL default '',
  `cvr_number` varchar(25) NOT NULL default '',
  `email` varchar(150) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;

#
# Data dump for tabellen `master_name`
#

vil det ikke sige at det er felt 2og3 den skal opdatere
forstår sq ik rigtig ?
Avatar billede johan.o Nybegynder
13. marts 2006 - 08:51 #23
He he, ja det er et paradoks her, som alle andre steder, at jo mere man ved om emnet, jo nemmere er det at forstå manualen :), men fat mod det kommer stille og roligt.

Lad os sige at du har en tabel der hedder brugere. I denne tabel er der disse tre kollonner : id, navn og alder.

I tabellen er der to rækker som disse :

id : 0, navn : ib, alder : 30
id : 1, navn : bo, alder : 14

Hvis du så vil opdatere f.eks. ib's alder til 40 kan det gøres således :

$upd="UPDATE brugere SET alder='40' WHERE navn='ib'";

En INSERT kunne se således ud :

$ins="INSERT INTO brugere VALUES('','jan','26')"; og jeg mener også den kan se således ud :

$ins="INSERT INTO bruere SET navn='jan', alder='26'";

mysql_affected_rows() virker som en funktion til at tælle hvor mange rækker blev berørt af den sidst udførte sql operation. F.eks.:

mysql_query("UPDATE brugere SET alder='2' WHERE id='0'");
if(mysql_affected_rows()==1) {
echo "Vi ændrede en række !"; }
else {
echo "Oups enten ændrede vi ingen rækker, eller også flere end 1"; }

Hjælper det ? - Hvis ikke må du nok prøve at beskrive nærmere hvad det er du ikke forstår :)

Mvh. Johan
Avatar billede tech2001 Nybegynder
13. marts 2006 - 16:55 #24
nu ved jeg jo ikke med sikkerhed hvilken bruger der skal opdateres, da der er en liste med brugere, derfor kan jeg da ikke skrive f.eks ib under navn og hvilken alder han skal havde ? der må være noget andet man skriver. ?
Avatar billede spaceus Nybegynder
13. marts 2006 - 17:03 #25
så prøv med $_GET[id] hvis det er den der er lig din primær nøgle
Avatar billede tech2001 Nybegynder
13. marts 2006 - 17:36 #26
id er min primær nøgle men hvordan skal koden se ud ?
Avatar billede johan.o Nybegynder
13. marts 2006 - 18:11 #27
$upd="UPDATE master_name SET f_name='".$_POST['f_name']."' WHERE id='".$_GET['id']."'";

Dette opdatere f_name feltet, hvis du vil opdatere flere felter skal du blot tilføje dem adskilt med et komma.

$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', osv osv

Mvh. Johan
Avatar billede tech2001 Nybegynder
13. marts 2006 - 19:07 #28
min kode ser nu således ud og virker stadig ikke kan du fortælle mig hvad der er galdt ?

<?php
if (($_POST[op] != "add") || ($_GET[id] != "")) {
    //har ikke set formular - så vis den
    $display_block = "<h1>Tilføj data til eksisterende kunde </h1>
    <form method=\"post\" action=\"$_SERVER[PHP_SELF]\">";
   
    if ($_GET[id] != "") {
    // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "web20", "061284") or die(mysql_error());
    mysql_select_db("usr_web20_1",$conn) or die(mysql_error());
   
    //hent for- og efternavn
    $get_names = "select concat_ws(', ', f_name, l_name) as
        display_name from master_name where id = $_GET[id]";
    $get_names_res = mysql_query($get_names)
        or die(mysql_error());
    $get_names_res = mysql_query($get_names) or die(mysql_error()."<br>SELECT f_name, l_names from master_name: ".$get_names);
    if(mysql_num_rows($get_names_res) == 1) {
        $display_name = mysql_result($get_names_res,0, 'display_name');
        }
    }
    if ($display_name != "") {
        $display_block .= "<h2>Tilføjelse til
        <strong>$display_name</strong>:</h2>";
    } else {
        $display_block .= "<h2>
        <p><strong>For-/efternavn:</strong><br>
        <input type=\"test\" name=\"f_name\" size=30 maxlength=75>
        <input type=\"test\" name=\"l_name\" size=30 maxlength=75></h2>";
    }
    $display_block .= "<h2><strong>Adresse:</strong></h2>
    <h2><input type=\"text\" name=\"address\" size=30 maxlength=63></h2>
   
    <h2><strong>Postnr. og by:</strong></h2>
    <h2><input type=\"text\" name=\"postnr\" size=4 maxlength=6>
    <input type=\"text\" name=\"postby\" size=30 maxlength=25></h2>
   

   
    <h2><strong>Telefonnr.:</strong><br>
    <input type=\"text\" name=\"tel_number\" size=8
    maxlenght=25>

       
    <h2><strong>Faxnr.:</strong><br>
    <input type=\"text\" name=\"fax_number\" size=8
    maxlenght=25>

       
    <h2><strong>Email-adresse:</strong><br>
    <input type=\"text\" name=\"email\" size=30
    maxlenght=150>

       
    <h2><strong>CVRnr.:</strong><br>
    <input type=\"text\" name=\"cvr_number\" size=8
    maxlenght=25></h2>
   
    <input type=\"hidden\" name=\"op\" value=\"add\">
    <input type=\"hidden\" name=\"id\" value=\"$_GET[id]\">
   
    <p><input type=\"submit\" name=\"submit\"
    value=\"Tilføj kunde\"></p>
    </form>";
   
} else if ($_POST[op] == "add") {
    //føj til tabeller - tjek krævede felter
    if ((($_POST[f_name] == "") || ($_POST[l_name] == "")) &&
        ($_POST[id] == "")) {
        header("Location: addentry.php");
        exit;
        }
       
        // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "web20", "061284") or die(mysql_error());
    mysql_select_db("usr_web20_1",$conn) or die(mysql_error());
   
    if ($_POST[id] == "") {
        // føj til master_name-tabellen
$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', address='".$_POST['address']."', postnr='".$_POST['postnr']."', postby='".$_POST['postby']."', tel_number='".$_POST['tel_number']."',  fax_number='".$_POST['fax_number']."', cvr_number='".$_POST['cvr_number']."', email='".$_POST['email']."' WHERE id='".$_GET['id']."'";
    mysql_query($upd) or die(mysql_error());
    }

   
    $display_block = "<h1>Statusmelding for tilføjning af data ved eksisterende kunde</h1>
    <h2>Der er tilføjet data vedr. <strong>$get_names</strong></h2>
    <h2><a href=\"addinfo.php?master_id=$_POST[sel_id]\">tilføj flere data til samme kunde</a></h2>
    <h2><a href=\"adressemenu.htm\">tilbage til menu</a></h2>
    <h2><a href=\"selentry.php\">få vist kundens data fra kundedatabasen</a></h2>";
}
?>
<html>
<head>
<title>Add an entry</title>
<link href="ve style.css" rel="stylesheet">
</head>
<body>
<? print $display_block; ?>
</body></html>
Avatar billede spaceus Nybegynder
13. marts 2006 - 20:18 #29
hvad er fejlbeskeden
Avatar billede tech2001 Nybegynder
13. marts 2006 - 22:35 #30
der ikke nogen fejl besked den hopper bare til addentry siden altså den side man adder en bruger på
Avatar billede johan.o Nybegynder
14. marts 2006 - 15:03 #31
Hm, du har både $_GET['id'] og $_POST['id'] er det med vilje ?

Kan du ikke prøve at beskrive forløbet der ikke virker ? Du har ovenstående kode gemt som en fil. Hvordan kalder du den fil og evt. med hvilke attributer ?

Mvh. Johan
Avatar billede johan.o Nybegynder
14. marts 2006 - 15:08 #32
Hm (igen) nu fandt jeg denne linje i bunden :

<a href=\"addinfo.php?master_id=$_POST[sel_id]\">tilføj flere data til samme kunde</a>

Hvis det er den måde du kalder ovenstående kode så skal du jo checke om $_GET['master_id'] er sat og ikke $_GET['id'].

Mvh. Johan
Avatar billede tech2001 Nybegynder
14. marts 2006 - 19:40 #33
hm er ikke sikker på hvordan jeg kan beskrive hvad der sker mere end hvad jeg har gjort men du kan jo selv se her
http://web-builders.dk/test/database/adressemenu.htm

sådan noget som add en bruger, vælg en bruger og slet en bruger virker fint det er bare den sidste med opdatere en bruger den er gal med :/
Avatar billede johan.o Nybegynder
14. marts 2006 - 22:17 #34
I den side der hedder selentry.php har du et link til en side der hedder addinfo.php?master_id=1

Hvis du nu lader det link hedde addinfo.php?id=1 hvad sker der så ?

Mvh. Johan
Avatar billede johan.o Nybegynder
14. marts 2006 - 22:32 #35
Jeg tror jeg begynder at forstå hvordan det er meningen det skal virke...tror :)

Når du opdatere kunden i din tabel bruger du ikke en GET variabel istedet sender du id nummeret via din form, derfor skal du ændre din sql update til dette :

$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', address='".$_POST['address']."', postnr='".$_POST['postnr']."', postby='".$_POST['postby']."', tel_number='".$_POST['tel_number']."',  fax_number='".$_POST['fax_number']."', cvr_number='".$_POST['cvr_number']."', email='".$_POST['email']."' WHERE id='".$_POST['id']."'";

Eneste ændring er efter WHERE.....

Derudover bør du tilføje to input felter til din form, nemlig f_name og l_name da de ikke sendes på nuværende tidspunkt.

Derudover bør du også ændre linket i bunden til addinfo.php?id=$_POST['id']

Mvh. Johan
Avatar billede tech2001 Nybegynder
14. marts 2006 - 23:36 #36
hm nu for jeg meldingen Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /srv/www/htdocs/web20/html/test/database/addinfo.php on line 87
og det er nemlig addinfo.php?id=$_POST['id'] ???
Avatar billede tech2001 Nybegynder
14. marts 2006 - 23:43 #37
I den side der hedder selentry.php har du et link til en side der hedder addinfo.php?master_id=1

Hvis du nu lader det link hedde addinfo.php?id=1 hvad sker der så ?

Mvh. Johan


linket kommer jo af at man har valgt den kun hvis der var ex. 10 kunder og man tog kunde 7 så ville den jo være addinfo.php?id=7
???
Avatar billede tech2001 Nybegynder
14. marts 2006 - 23:46 #38
prøver lige igen :)
linket kommer af den kunde man har valgt ex. der er 10 kunder man vælger kunde 4 så bliver det til addinfo.php?id=4 ?? (godt og grundig syg og på hoste medicin:) eller ???
Avatar billede johan.o Nybegynder
15. marts 2006 - 08:56 #39
Sidste linje i ovenstående kode tror jeg skal se således ud :

$display_block = "<h1>Statusmelding for tilføjning af data ved eksisterende kunde</h1>
    <h2>Der er tilføjet data vedr. <strong>$get_names</strong></h2>
    <h2><a href=\"addinfo.php?master_id=".$_POST['id']."\">tilføj flere data til samme kunde</a></h2>
    <h2><a href=\"adressemenu.htm\">tilbage til menu</a></h2>
    <h2><a href=\"selentry.php\">få vist kundens data fra kundedatabasen</a></h2>";

Med hensyn til linket i selentry.php så er det selvfølgelig ikke meningen at du skal skrive 1 tallet fast, det der er humlen er at du skal ændre addinfo.php?master_id= til addinfo.php?id=

Mvh. Johan
Avatar billede johan.o Nybegynder
15. marts 2006 - 08:58 #40
Avatar billede tech2001 Nybegynder
15. marts 2006 - 18:11 #41
hm ja kan se det stadig "fungere" som før bortset fra at man ikke kan rette på f_name og l_name men det har nok noget at gøre med de input felter du snakkede om før men kan se når jeg vil rette ex. adressen eller fax nr så virker det stadig ik :/ ?
Avatar billede johan.o Nybegynder
15. marts 2006 - 19:00 #42
Har du ændret din update sql sætning som jeg foreslog ?

Mvh. Johan
Avatar billede tech2001 Nybegynder
17. marts 2006 - 15:29 #43
ja til sådan ikke ???

$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', address='".$_POST['address']."', postnr='".$_POST['postnr']."', postby='".$_POST['postby']."', tel_number='".$_POST['tel_number']."',  fax_number='".$_POST['fax_number']."', cvr_number='".$_POST['cvr_number']."', email='".$_POST['email']."' WHERE id='".$_POST['id']."'";
Avatar billede johan.o Nybegynder
18. marts 2006 - 10:55 #44
Ja, den update er vist i orden men har du ikke en if før den som ser sådan ud :

if($_POST['id']=="") --> så udfør update.....

det giver jo ingen mening da du kun kan udføre updaten hvis du kender id'en :)

Mvh. Johan
Avatar billede tech2001 Nybegynder
18. marts 2006 - 15:40 #45
jaaaah nu begynder det at virke :) men når jeg f.eks laver data'en om så laver den automatisk f og l name om til "," ??
Avatar billede tech2001 Nybegynder
18. marts 2006 - 15:43 #46
argh kan se jeg også mangler et stykke kode som gør at f.eks hvis jeg kun vil rette tlf nr og det så kun er det jeg skriver i feltet og lader de andre felter stå tomme så sletter den resten af data'erne ?
Avatar billede johan.o Nybegynder
18. marts 2006 - 15:48 #47
he he, ja der er et par mangler hist og pist :), skriv hvis du behøver hjælp til de ting du nævner.

Mvh. Johan
Avatar billede tech2001 Nybegynder
20. marts 2006 - 19:24 #48
tja jeg kunne nu godt bruge et stykke kode der gør såen at når jeg kun vil rette 1 ting så bliver der kun rettet en ting istedet for at alle felter bliver slettet når man ik skriver noget i dem ?
men sys da du har været til en stor hjælp så sys da lige du skal ha lidt extra points for det :) tryk på linket neden under :)
Avatar billede tech2001 Nybegynder
20. marts 2006 - 19:25 #49
Avatar billede johan.o Nybegynder
02. april 2006 - 12:33 #50
Jeg har været lidt væk fra exp.dk - Hvor langt er du kommet ? Har du stadig brug for hjælp til dette ?

Mvh. Johan
Avatar billede tech2001 Nybegynder
02. april 2006 - 18:20 #51
ja det har jeg.
er ikke rigtig kommet længre da jeg lige syntes at jeg sq ha en pause ^^ da det nogen gange lige kan blive en tand for meget :)
Avatar billede johan.o Nybegynder
02. april 2006 - 19:00 #52
Okay, så post den kode du har nu og forklar hvad du vil have hjælp til.

Mvh. Johan
Avatar billede tech2001 Nybegynder
03. april 2006 - 13:38 #53
koden seer således ud :

<?php
if (($_POST[op] != "add") || ($_GET[id] != "")) {
    //har ikke set formular - så vis den
    $display_block = "<h1>Tilføj data til eksisterende kunde </h1>
    <form method=\"post\" action=\"$_SERVER[PHP_SELF]\">";
   
    if ($_GET[id] != "") {
    // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());
    mysql_select_db("xxxxx",$conn) or die(mysql_error());
   
    //hent for- og efternavn
    $get_names = "select concat_ws(', ', f_name, l_name) as
        display_name from master_name where id = $_GET[id]";
    $get_names_res = mysql_query($get_names)
        or die(mysql_error());
    $get_names_res = mysql_query($get_names) or die(mysql_error()."<br>SELECT f_name, l_names from master_name: ".$get_names);
    if(mysql_num_rows($get_names_res) == 1) {
        $display_name = mysql_result($get_names_res,0, 'display_name');
        }
    }
    if ($display_name != "") {
        $display_block .= "<h2>Tilføjelse til
        <strong>$display_name</strong>:</h2>";
    } else {
        $display_block .= "<h2>
        <p><strong>For-/efternavn:</strong><br>
        <input type=\"text\" name=\"f_name\" size=30 maxlength=75>
        <input type=\"text\" name=\"l_name\" size=30 maxlength=75></h2>";
    }
    $display_block .= "<h2><strong>Adresse:</strong></h2>
    <h2><input type=\"text\" name=\"address\" size=30 maxlength=63></h2>
   
    <h2><strong>Postnr. og by:</strong></h2>
    <h2><input type=\"text\" name=\"postnr\" size=4 maxlength=6>
    <input type=\"text\" name=\"postby\" size=30 maxlength=25></h2>
   

   
    <h2><strong>Telefonnr.:</strong><br>
    <input type=\"text\" name=\"tel_number\" size=8
    maxlenght=25>

       
    <h2><strong>Faxnr.:</strong><br>
    <input type=\"text\" name=\"fax_number\" size=8
    maxlenght=25>

       
    <h2><strong>Email-adresse:</strong><br>
    <input type=\"text\" name=\"email\" size=30
    maxlenght=150>

       
    <h2><strong>CVRnr.:</strong><br>
    <input type=\"text\" name=\"cvr_number\" size=8
    maxlenght=25></h2>
   
    <input type=\"hidden\" name=\"op\" value=\"add\">
    <input type=\"hidden\" name=\"id\" value=\"$_GET[id]\">
   
    <p><input type=\"submit\" name=\"submit\"
    value=\"Tilføj kunde\"></p>
    </form>";
   
} else if ($_POST[op] == "add") {
    //føj til tabeller - tjek krævede felter
    if ((($_POST[f_name] == "") || ($_POST[l_name] == "")) &&
        ($_POST[id] == "")) {
        header("Location: addentry.php");
        exit;
        }
       
        // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxxx", "xxxxxx") or die(mysql_error());
    mysql_select_db("xxxxxx",$conn) or die(mysql_error());
   
{
        // føj til master_name-tabellen
$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', address='".$_POST['address']."', postnr='".$_POST['postnr']."', postby='".$_POST['postby']."', tel_number='".$_POST['tel_number']."',  fax_number='".$_POST['fax_number']."', cvr_number='".$_POST['cvr_number']."', email='".$_POST['email']."' WHERE id='".$_POST['id']."'";
    mysql_query($upd) or die(mysql_error());
    }

   
$display_block = "<h1>Statusmelding for tilføjning af data ved eksisterende kunde</h1>
    <h2>Der er tilføjet data vedr. <strong>$get_names</strong></h2>
    <h2><a href=\"addinfo.php?master_id=".$_POST['id']."\">tilføj flere data til samme kunde</a></h2>
    <h2><a href=\"adressemenu.htm\">tilbage til menu</a></h2>
    <h2><a href=\"selentry.php\">få vist kundens data fra kundedatabasen</a></h2>";
}
?>


Det jeg så mangler, er et stykke kode der gør såen, at når jeg kun vil rette 1 ting så bliver der kun rettet en ting, istedet for at alle felter bliver slettet når man ik skriver noget i dem. ?

// Christian
Avatar billede johan.o Nybegynder
04. april 2006 - 11:34 #54
<?php
if (($_POST[op] != "add") || ($_GET[id] != "")) {
    //har ikke set formular - så vis den
    $display_block = "<h1>Tilføj data til eksisterende kunde </h1>
    <form method=\"post\" action=\"$_SERVER[PHP_SELF]\">";
 
    if ($_GET[id] != "") {
    // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());
    mysql_select_db("xxxxx",$conn) or die(mysql_error());
 
    //hent info om kunde
    $get_names = "select * from master_name where id = $_GET[id]";
    $get_names_res = mysql_query($get_names)
        or die(mysql_error());
    $get_names_res = mysql_query($get_names) or die(mysql_error()."<br>SELECT f_name, l_names from master_name: ".$get_names);
    if(mysql_num_rows($get_names_res) == 1) {
        $get_names_row = mysql_fetch_assoc($get_names_res);
        }
    }
    if ($get_names_row['f_name'] != "") {
        $display_block .= "<h2>Tilføjelse til
        <strong>".$get_names_row['f_name'].", ".$get_names_row['l_name']."</strong>:</h2>
        <input type='hidden' name='f_name' value='".$get_names_row['f_name']."'>
        <input type='hidden' name='l_name' value='".$get_names_row['l_name']."'>";
    } else {
        $display_block .= "<h2>
        <p><strong>For-/efternavn:</strong><br>
        <input type=\"text\" name=\"f_name\" size=30 maxlength=75>
        <input type=\"text\" name=\"l_name\" size=30 maxlength=75></h2>";
    }
    $display_block .= "<h2><strong>Adresse:</strong></h2>
    <h2><input type=\"text\" name=\"address\" value='".$get_names_row['adress']."' size=30 maxlength=63></h2>
 
    <h2><strong>Postnr. og by:</strong></h2>
    <h2><input type=\"text\" name=\"postnr\" value='".$get_names_row['postnr']."' size=4 maxlength=6>
    <input type=\"text\" name=\"postby\" value='".$get_names_row['postby']."' size=30 maxlength=25></h2>
 

 
    <h2><strong>Telefonnr.:</strong><br>
    <input type=\"text\" name=\"tel_number\" value='".$get_names_row['tel_number']."' size=8
    maxlenght=25>

     
    <h2><strong>Faxnr.:</strong><br>
    <input type=\"text\" name=\"fax_number\" value='".$get_names_row['fax_number']."' size=8
    maxlenght=25>

     
    <h2><strong>Email-adresse:</strong><br>
    <input type=\"text\" name=\"email\" value='".$get_names_row['email']."' size=30
    maxlenght=150>

     
    <h2><strong>CVRnr.:</strong><br>
    <input type=\"text\" name=\"cvr_number\" value='".$get_names_row['cvr_number']."' size=8
    maxlenght=25></h2>
 
    <input type=\"hidden\" name=\"op\" value=\"add\">
    <input type=\"hidden\" name=\"id\" value=\"$_GET[id]\">
 
    <p><input type=\"submit\" name=\"submit\"
    value=\"Tilføj kunde\"></p>
    </form>";
 
} else if ($_POST[op] == "add") {
    //føj til tabeller - tjek krævede felter
    if ((($_POST[f_name] == "") || ($_POST[l_name] == "")) &&
        ($_POST[id] == "")) {
        header("Location: addentry.php");
        exit;
        }
     
        // etabler forbindelse til databasen
    $conn = mysql_connect("localhost", "xxxx", "xxxxxx") or die(mysql_error());
    mysql_select_db("xxxxxx",$conn) or die(mysql_error());
 
{
        // føj til master_name-tabellen
$upd="UPDATE master_name SET f_name='".$_POST['f_name']."', l_name='".$_POST['l_name']."', address='".$_POST['address']."', postnr='".$_POST['postnr']."', postby='".$_POST['postby']."', tel_number='".$_POST['tel_number']."',  fax_number='".$_POST['fax_number']."', cvr_number='".$_POST['cvr_number']."', email='".$_POST['email']."' WHERE id='".$_POST['id']."'";
    mysql_query($upd) or die(mysql_error());
    }

 
$display_block = "<h1>Statusmelding for tilføjning af data ved eksisterende kunde</h1>
    <h2>Der er tilføjet data vedr. <strong>$get_names</strong></h2>
    <h2><a href=\"addinfo.php?master_id=".$_POST['id']."\">tilføj flere data til samme kunde</a></h2>
    <h2><a href=\"adressemenu.htm\">tilbage til menu</a></h2>
    <h2><a href=\"selentry.php\">få vist kundens data fra kundedatabasen</a></h2>";
}
?>

Jeg syntes der mangler lidt til at sende output men det har du sikkert lavet. Jeg har naturligvis ikke kunne teste det men lad mig høre resultatet.

Mvh. Johan
Avatar billede tech2001 Nybegynder
07. april 2006 - 17:54 #55
jammen det er jo lækkert :) det fungere bortset fra at du havde glemt et "d" ved address    }
    $display_block .= "<h2><strong>Adresse:</strong></h2>
    <h2><input type=\"text\" name=\"address\" value='".$get_names_row['ad_D_ress']."' size=30 maxlength=63></h2>

hehe men super lækkert :) smid da lige et svar både her og http://www.eksperten.dk/spm/696727 :) <- må man sige at være velfortjent

lige en hurtig ting begriber simpelthen ik hvor du f.eks har fået den extra kode fra du har vel selv lavet den, men hvordan, bruger du et værktøj?, eller er det noget du har mellem ørende lad høre :)

Mvh. Christian
Avatar billede johan.o Nybegynder
07. april 2006 - 18:17 #56
He he....jamen det er noget jeg har mellem ørene, for at bruge dine ord :) Jeg bruger ikke umiddelbart noget værktøj, bortset fra notepad som jeg skriver i. Men læser flittigt på php.net og msdn.microsoft.com/library

Det er lækkert at det fungere så her kommer et svar...smider også et det andet sted.

Mvh. Johan
Avatar billede tech2001 Nybegynder
07. april 2006 - 19:45 #57
heh altid rart at vide at jeg ikke snyder mig selv ved at læse på sagerne. :) takker for denne gang.
Avatar billede johan.o Nybegynder
07. april 2006 - 20:44 #58
Tak for points :)
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