Avatar billede Frederik Nybegynder
13. februar 2006 - 13:18 Der er 32 kommentarer og
1 løsning

Alfabetisk orden.

Hej.

Kan man lave et PHP-Script hvor man indtaster f.eks. Navn og Efternavn, derefter skal de sendes til en MySQL database hvor man så man hente dem ud fra så de bliver vist i alfabetisk orden.
På forhånd tak. :)

- Frederik
Avatar billede jaw Nybegynder
13. februar 2006 - 13:19 #1
Det kan du sagtens, det gør du i dit udtræk:

SELECT feltnavn FROM tabelnavn ORDER BY feltnavn ASC
så er de alfabetisk sorteret.
Avatar billede jaw Nybegynder
13. februar 2006 - 13:21 #2
Hvis det så er fornavn efternavn, vil det nok være (sortering efter efternavn først og dernæst fornavn):
SELECT fornavn, efternavn FROM tabelnavn ORDER BY efternavn, fornavn
Avatar billede Frederik Nybegynder
13. februar 2006 - 13:27 #3
øøhmm.. kan du give et eksembel med kode til udtræk?? Er ikke så stærk i PHP endnu.

- Frederik
Avatar billede jaw Nybegynder
13. februar 2006 - 13:29 #4
Tjoh:

<?
//connect her
$query = mysql_query("SELECT fornavn, efternavn FROM tabelnavn ORDER BY fornavn, efternavn") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo $row['efternavn'] . " " . $row['fornavn']."<br />";
}
?>
Avatar billede Frederik Nybegynder
13. februar 2006 - 13:45 #5
Ville det her så virke?

Opret.php:
<html><head></head><body>
<form action="opret-ok.php" method="post">
Navn: <input type="text" name="brugernavn"><br>
Efternavn: <input type="text" name="password"><br>
<input type="submit" name="opret" value="Opret">
</form></body></html>

opret-ok.php:
<?php
require("config.php");
$opret = &$HTTP_POST_VARS['opret'];
if(empty($opret)) {
  ?>
  <br><a href="opret.php">Opret navn</a>
  <?php
  } else {

$fornavn = &$HTTP_POST_VARS['fornavn'];
$efternavn = &$HTTP_POST_VARS['efternavn'];

if(empty($fornavn) OR empty($efternavn)) {
    echo 'Et af felterne er tomme';}   
    else {
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);
mysql_query("insert into navneliste (fornavn, efternavn) values ('$fornavn', '$efternavn')")
or die(mysql_error());
print "$fornavn $efternavn er nu tilføjet.";
?>
<a href="vis.php">navneliste</a>
<?php
}
}
}
?>

Vis.php:
<?
require("connect.php");
$query = mysql_query("SELECT fornavn, efternavn FROM navneliste ORDER BY fornavn, efternavn") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo $row['efternavn'] . " " . $row['fornavn']."<br />";
}
?>
Avatar billede jaw Nybegynder
13. februar 2006 - 13:47 #6
Det er nok nemmere at teste det end at bede mig overskue det hele i hovedet, men i første omgang skal du nok kalde dine felter fornavn og efternavn istedet for brugernavn og password :)
Avatar billede Frederik Nybegynder
13. februar 2006 - 14:00 #7
Jeg får denne fejl meddelelse:

Parse error: syntax error, unexpected '}' in C:\Programmer\xampp\htdocs\iky\alfa\opret-ok.php on line 26
Avatar billede jaw Nybegynder
13. februar 2006 - 14:25 #8
Tror du har en } for meget til sidst.
Avatar billede Frederik Nybegynder
13. februar 2006 - 14:49 #9
Nu kan jeg godt oprette et navn, men når jeg vil have det vist får jeg en ny fejl meddelelse:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Programmer\xampp\htdocs\iky\alfa\vis.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Programmer\xampp\htdocs\iky\alfa\vis.php on line 3
Access denied for user 'ODBC'@'localhost' (using password: NO)
Avatar billede jaw Nybegynder
13. februar 2006 - 14:51 #10
Du connecter forkert til databasen.
Avatar billede Frederik Nybegynder
13. februar 2006 - 16:46 #11
Min kode til at connecte til databasen er:

<?php
$mysql_host = "localhost";
$mysql_user = "username";
$mysql_pw = "password";
$mysql_db = "database";
?>


Har udfyldt de forskellige punkter så de passer til min database.. Hvad gør jeg forkert?
Avatar billede jaw Nybegynder
13. februar 2006 - 16:48 #12
Der er umiddelbart ikke noget password, så det skal bare være $mysql_pw = "";
Avatar billede Frederik Nybegynder
13. februar 2006 - 20:54 #13
Får stadig denne fejl:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Programmer\xampp\htdocs\iky\alfa\vis.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Programmer\xampp\htdocs\iky\alfa\vis.php on line 3
Access denied for user 'ODBC'@'localhost' (using password: NO)
Avatar billede Frederik Nybegynder
14. februar 2006 - 19:26 #14
Min SQL ser således ud:

CREATE TABLE `navneliste(1)` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`fornavn` VARCHAR( 16 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL ,
`efternavn` VARCHAR( 16 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL
) TYPE = MYISAM ;

Er der noget i det jeg gør forkert?
Avatar billede jaw Nybegynder
14. februar 2006 - 19:27 #15
Det er stadig din connection det går galt med. Prøv at oprette et nyt helt tomt dokument med indholdet:

<?
mysql_connect("host", "brugernavn", "adgangskode") or die(mysql_error());
mysql_select_db("databasenavn") or die(mysql_error());
?>

Og paste hvilken fejlmeddelelse du får.
Avatar billede Frederik Nybegynder
14. februar 2006 - 19:32 #16
Får en blank side, altså ingen fejl.
Avatar billede jaw Nybegynder
14. februar 2006 - 19:33 #17
Så sker der noget ved din connect i den anden fil. Enten bliver variablerne ikke rigtigt sat (kan testes ved at echo dem f.eks.) eller også bliver selve connecten ikke gennmført.
Avatar billede Frederik Nybegynder
14. februar 2006 - 19:38 #18
hvordan kan jeg så gøre det med det script du skrev tidligere?

<?
require("connect.php");
$query = mysql_query("SELECT fornavn, efternavn FROM navneliste ORDER BY fornavn, efternavn") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo $row['efternavn'] . " " . $row['fornavn']."<br />";
}
?>
Avatar billede jaw Nybegynder
14. februar 2006 - 19:44 #19
Det er jo fordi du mangler selve connecten, du sætter så vidt jeg kan se kun variablerne:

<?
require("connect.php");
mysql_connect($mysql_host, $mysql_user, $mysql_pw) or die(mysql_error());
mysql_select_db($mysql_db) or die(mysql_error());
$query = mysql_query("SELECT fornavn, efternavn FROM navneliste ORDER BY fornavn, efternavn") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo $row['efternavn'] . " " . $row['fornavn']."<br />";
}
?>
Avatar billede Frederik Nybegynder
14. februar 2006 - 19:53 #20
require("connect.php");

er det ikke ikke til at connecte med?

Når jeg har tilføjet mit connect i connect.php..
Avatar billede jaw Nybegynder
14. februar 2006 - 19:54 #21
Jo, hvis du tilføjer det til connect.php bør det have samme virkning, men det kan jeg bare ikke se du har.
Avatar billede Frederik Nybegynder
14. februar 2006 - 20:02 #22
I filen connect.php har jeg dette tilføjet:

<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_pw = "***";
$mysql_db = "***";
?>

Har udfyldt pw og db med mine oplysninger.
Noget jeg gør galt?
Avatar billede jaw Nybegynder
14. februar 2006 - 20:03 #23
Du mangler de 2 vigtigste linier:
mysql_connect($mysql_host, $mysql_user, $mysql_pw) or die(mysql_error());
mysql_select_db($mysql_db) or die(mysql_error());

Ellers sker der ikke det fjerneste. Det du gør er bare at definere nogle variabler der indeholder dine connect-informationer.
Avatar billede Frederik Nybegynder
14. februar 2006 - 20:09 #24
Nu virker det, men det er som om den soterer dem forkert, hvis man f.eks. tilføjer fornavn a og efternavn z kommer den til at stå øverst.. og den bytter om på fornavn og efternavn.?
Avatar billede jaw Nybegynder
14. februar 2006 - 20:11 #25
Ja, eksemplet er lavet ud fra at du sorterer efter efternavn først og dernæst undersorterer efter fornavn. Det må du jo bare skifte om på så.
Avatar billede Frederik Nybegynder
14. februar 2006 - 20:14 #26
Okay :) Du skal have mange tak :)
Smider du et svar?
Nu var det jo dig der kom med det afgørende ;)


- Frederik
Avatar billede jaw Nybegynder
14. februar 2006 - 20:19 #27
Selv tak :)

Sig til hvis du får problemer med at få det som du vil have det, men der skal jo også være lidt du selv kan filosofere over :)
Avatar billede Frederik Nybegynder
14. februar 2006 - 20:32 #28
Nu er jeg irriterende igen :P

tænkte på, kan man sotere dem efter hvornår de er blevet oprettet i databasen? f.eks.

<?
require("connect.php");
$query = mysql_query("SELECT fornavn, efternavn FROM navneliste ORDER BY fornavn, efternavn, id") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo $row['id'] . " " . $row['efternavn'] . " " . $row['fornavn']."<br />";
}
?>
Avatar billede jaw Nybegynder
14. februar 2006 - 20:36 #29
Det kan du godt, hvis du har et felt med tidspunktet for oprettelse.
Avatar billede Frederik Nybegynder
14. februar 2006 - 21:33 #30
Okay :)
Hmm.. hvis nu jeg gerne vil have dem ind i en tabel, hvor skal jeg så placerer koden henne???

f.eks.

<html>

<head>
<title>test</title>
</head>

<body>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%">
    <p align="center">Fornavn</td>
    <td width="50%">
    <p align="center">Efternavn</td>
  </tr>
  <tr>
    <td width="50%">Her skal de indtastede fornavne være</td>
    <td width="50%">Her skal de indtastede efternavne være</td>
  </tr>
</table>

</body>

</html>
Avatar billede cyberjelle Nybegynder
14. februar 2006 - 21:46 #31
<tr>
    <td width="50%">Her skal de indtastede fornavne være</td>
    <td width="50%">Her skal de indtastede efternavne være</td>
  </tr>
skiftes ud med:

while ($row = mysql_fetch_array($query)) {
  extract($row);
echo "<tr>\n";
echo "<td width=\"50%\">".$fornavn."</td>\n";
echo "<td width=\"50%\">".$efternavn."</td>\n";
echo "</tr>\n";

Men husk at du først skal hente værdierne fra databasen, som du gør i det kode du postede sidst.
Avatar billede jaw Nybegynder
14. februar 2006 - 21:47 #32
Sådan f.eks.:

<html>

<head>
<title>test</title>
</head>

<body>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%">
    <p align="center">Fornavn</td>
    <td width="50%">
    <p align="center">Efternavn</td>
  </tr>
<?
require("connect.php");
$query = mysql_query("SELECT fornavn, efternavn FROM navneliste ORDER BY fornavn, efternavn, id") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo"
  <tr>
    <td width=\"50%\">".$row['fornavn']."</td>
    <td width=\"50%\">".$row['efternavn']."</td>
  </tr>
  ";
}
?>
</table>

</body>

</html>
Avatar billede Frederik Nybegynder
14. februar 2006 - 22:43 #33
Jeg takker mange gage for de geniale svar :D


- Frederik
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