Avatar billede korfits Nybegynder
29. april 2007 - 14:47 Der er 37 kommentarer og
1 løsning

Navneliste i php

Er der en som ligger inde med (eller kan lave en) phpfil hvor folk skal skrive navn og stilling, hvoreftr det bliver listet, eventuelt i samme fil, eller en ny.

tak
Avatar billede jakobdo Ekspert
29. april 2007 - 18:56 #1
Kan du selv kode php?
Hvis du ønsker dette lavet som en opgave, bør du flytte din tråd til programmeringsopgaver.
Ellers kan jeg komme med nogle hints og så kan du selv kode noget.
Avatar billede korfits Nybegynder
30. april 2007 - 18:23 #2
Jeg er ikke super hård i PHP. Er det svært at lave?
Avatar billede Slettet bruger
30. april 2007 - 18:29 #3
Nej det er ikke så svært at lave, men tager lidt tid hvis du ikke er så meget inde i det med database osv.
Du skal jo også selv lærer noget af det, frem for bare at ha' en færdig kode, du ikke helt forstår.

Så jeg ville nok få hjælp af jakobdo til at lave det, frem for du får det lavet.
Avatar billede jakobdo Ekspert
30. april 2007 - 18:42 #4
Du kan starte med at lave en form, som indeholder de felter du gerne vil gemme senere hen.
Avatar billede korfits Nybegynder
30. april 2007 - 19:43 #5
<form id="form1" name="form1" method="post" action="">
  <label>
  <input name="navn" type="text" id="navn" />
  </label>
  <br />
  <p><label>
    <input name="tillidspost" type="text" id="tillidspost" />
  </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Tilf&oslash;j" />
    </label>
  </p>
</form>
Avatar billede korfits Nybegynder
30. april 2007 - 19:43 #6
Sådan?
Avatar billede jakobdo Ekspert
30. april 2007 - 19:54 #7
F.eks. ja!
Så skal du lige rette action i toppen.
Nu ved jeg ikke hvad du har kaldt filen med din form.
Men hvis vi siger den hedder: form.html
Så kan du skrive: action="data.php"
og herefter oprette filen: data.php og starte med at skrive:
<?php
echo '<pre>';
print_r($_POST);
echo '<pre>';
?>

Så vil du se, at når du skriver noget data og trykker tilføj, så vises det på "side2".
Avatar billede korfits Nybegynder
30. april 2007 - 20:08 #8
Det virker. Men den gemmer kun en indtastning. Hvordan får jeg den til at sætte tingene op efter hinanden?
Avatar billede jakobdo Ekspert
30. april 2007 - 20:26 #9
Nej nej!
Det er kun en test!
Så skal vi have designet en database/tabel, som vi kan gemme i.
Du vil kune gemme navn og tillidspost?
Så vil jeg evt. anbefale at du opretter en tabel ved navn: NAVNE
og bruge 3 felter.

id - int - unsigned - auto_increment - primary key
navn - varchar(50)
tillidspost - varchar(50)

og så burde det være den tabel.
Avatar billede korfits Nybegynder
30. april 2007 - 20:52 #10
Okay, den er nu oprettet.
Avatar billede jakobdo Ekspert
30. april 2007 - 20:58 #11
Så tilføjer du dette kode i toppen af data.php:

$host = 'DIN_MYSQL_HOST';
$user = 'DIN_MYSQL_BRUGER';
$pass = 'DIT_MYSQL_KODEORD';
$db  = 'DIT_MYSQL_DATABASE_NAVN';

$link = mysql_connect($host, $user, $pass);
if (!$link)
{
    die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($db, $link);
if (!$db_selected)
{
    die ("Can't use $db : " . mysql_error());
}

husk at indsæt dine korrekte data i toppen...
Avatar billede windcape Praktikant
30. april 2007 - 21:01 #12
simpel udgave:

$data = unserialize(file_get_contents('data.dat'));
$data[] = array('navn'=>$_POST['navn'],'tillidspost'=>$_POST['tilldspost']);
file_put_contents('data.dat',serialize($data));

lidt nemmere end en database hvis det er simpelt :-)
Avatar billede jakobdo Ekspert
30. april 2007 - 21:06 #13
Korfits: Til info, så kræver windcape's version php5.
Avatar billede korfits Nybegynder
30. april 2007 - 21:12 #14
Skal jeg beholde det første?
Avatar billede windcape Praktikant
30. april 2007 - 21:12 #15
tjah, så kan man jo bare tilføje

<?php

if(!function_exists('file_put_contents')) {
    define('FILE_APPEND', 1);
    function file_put_contents($filename,$contents) {
        function file_put_contents($n, $d, $flag = false) {
            $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
            $f = @fopen($n, $mode);
            if ($f === false) {
                return 0;
            } else {
                if (is_array($d)) $d = implode($d);
                $bytes_written = fwrite($f, $d);
                fclose($f);
                return $bytes_written;
            }
        }
    }
}

?>
Avatar billede windcape Praktikant
30. april 2007 - 21:13 #16
ups, rodet lidt kode sammen

<?php

if(!function_exists('file_put_contents')) {
    define('FILE_APPEND', 1);
    function file_put_contents($n, $d, $flag = false) {
        $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
        $f = @fopen($n, $mode);
        if ($f === false) {
            return 0;
        } else {
            if (is_array($d)) $d = implode($d);
            $bytes_written = fwrite($f, $d);
            fclose($f);
            return $bytes_written;
        }
    }
}

?>
Avatar billede korfits Nybegynder
30. april 2007 - 21:15 #17
Hvor skal det ind henne?
Avatar billede jakobdo Ekspert
30. april 2007 - 21:18 #18
Korfits: Min løsning var ved at ende op med du kodede op mod en database.
Den løsning windcape kommer med, er skrivning til at flad fil.
Så enten skal du bruge min kode, eller også skal du bruge windcape, det er ikke bare copi/paste også virker det sammen.
Avatar billede korfits Nybegynder
30. april 2007 - 21:35 #19
Sorry. Jeg roded jeres indlæg sammen, så ikke I var to som skrev.

Kan du ikke skrive næste step jakob?
Avatar billede jakobdo Ekspert
30. april 2007 - 21:46 #20
Fik du mysql_connect og mysql_select_db til at virke?
Avatar billede korfits Nybegynder
30. april 2007 - 21:57 #21
Det tror jeg ikke. Den giver ihverfald ikke noget tegn på det.

Skulle jeg lade det første tekst du skrev stå?

Hvad skulle den komme frem med hvis det virker?
Avatar billede jakobdo Ekspert
30. april 2007 - 22:02 #22
Lad mig se din fulde kode til data.php
husk lige at ret brugernavn og kodeord. (hvis du har skrevet dem)
Avatar billede korfits Nybegynder
30. april 2007 - 22:11 #23
<?php

$host = 'localhost';
$user = '_';
$pass = '-';
$db  = '_';

$link = mysql_connect($host, $user, $pass);
if (!$link)
{
    die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($db, $link);
if (!$db_selected)
{
    die ("Can't use $db : " . mysql_error());
}

?>
Avatar billede korfits Nybegynder
30. april 2007 - 22:12 #24
Skulle jeg medtge det du skrev til at starte med?

Gør jeg det er der intet som ændrer sig i forhold til før.
Avatar billede jakobdo Ekspert
30. april 2007 - 22:20 #25
Nej, så skal vi have kontakt til databasen, og det har vi så nu!
Test denne kode:

<?php

$host = 'localhost';
$user = '_';
$pass = '-';
$db  = '_';

$link = mysql_connect($host, $user, $pass);
if (!$link)
{
    die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($db, $link);
if (!$db_selected)
{
    die ("Can't use $db : " . mysql_error());
}

function safe_query($var)
{
    if(get_magic_quotes_gpc())
    {
        $var = stripslashes($var);
    }

    if(!is_numeric($var))
    {
        $var = "'". mysql_real_escape_string($var) ."'";
    }

    return $var;
}

$navn = safe_query($_POST['navn']);
$tillidspost = safe_query($_POST['tillidspost']);

mysql_query("INSERT INTO navne(id,navn,tillidspost) VALUES('',$navn,$tillidspost);");
if(mysql_affected_rows()==1)
{
    echo 'Dit navn er nu gemt';
}

?>
Avatar billede korfits Nybegynder
30. april 2007 - 22:33 #26
Blank side. Er der forskel på store og små bogstaver i databasen?
Avatar billede korfits Nybegynder
30. april 2007 - 22:35 #27
Nu virker det. Den kommer frem med at navnet er gemt:)
Avatar billede korfits Nybegynder
30. april 2007 - 22:36 #28
Så skal jeg bare have hjælp med at kalde det frem på en side.
Avatar billede jakobdo Ekspert
01. maj 2007 - 08:10 #29
Den fil du har nu, som hedder data.php, den kunne du evt. omdøbe til:
gemdata.php (husk så også at rette action="gemdata.php" i <form...>

Du kan bruge følgende kode til at vise data: (kald den f.eks. visdata.php)

<?php

$host = 'localhost';
$user = '_';
$pass = '-';
$db  = '_';

$link = mysql_connect($host, $user, $pass);
if (!$link)
{
    die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($db, $link);
if (!$db_selected)
{
    die ("Can't use $db : " . mysql_error());
}

$query = mysql_query("SELECT navn,tillidspost FROM navne ORDER BY navn;");
if(mysql_num_rows($query)>1)
{
    while($row = mysql_fetch_assoc($query))
    {
        echo $row['navn'] . ' - ' . $row['tillidspost'] . '<br />';
    }
}
else
{
    echo 'Intet gemt i vores tabel<br />';
}

?>
Avatar billede korfits Nybegynder
01. maj 2007 - 08:54 #30
Hvis jeg så går til visdata.php siger den der ingen data er i gemt.
Avatar billede jakobdo Ekspert
01. maj 2007 - 11:30 #31
Og du har rettet user, pass, db?
Prøv også at ret linien:

$query = mysql_query("SELECT navn,tillidspost FROM navne ORDER BY navn;");
til:
$query = mysql_query("SELECT navn,tillidspost FROM navne ORDER BY navn;") or die(mysql_error());
Avatar billede korfits Nybegynder
01. maj 2007 - 16:48 #32
Jeg fandt fejlen. Det var igen det med de store og små bogstaver.

Tusind tak for hjælpen. Poster du lige et svar?
Avatar billede jakobdo Ekspert
01. maj 2007 - 17:50 #33
Svar!
Avatar billede jakobdo Ekspert
22. august 2007 - 20:38 #34
Takker for point.
Avatar billede Slettet bruger
24. august 2007 - 13:05 #35
Skulle
mysql_num_rows($query)>1

ikke rettes til

mysql_num_rows($query)>=1


Så den tjekker op mod over eller lig med 1?
Avatar billede jakobdo Ekspert
24. august 2007 - 15:31 #36
Eller bare > 0
Avatar billede Slettet bruger
24. august 2007 - 16:49 #37
Ja det var nok mere korrekt, den havde jeg så ikke selv lige tænkt over :P
Før du skrev det.
Avatar billede jakobdo Ekspert
24. august 2007 - 17:58 #38
:o)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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