Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 13:00 Der er 29 kommentarer og
1 løsning

Flere sider, og store og små ignorering!?

HEj!

JEg vil gerne have at der på mit mailsystem, skal ignoreres for store og små bogstaver når man skal logge ind og sende post til hinanden, men kan ikke gennemskue hvordan det skal gøres!

Samtidig vil jeg gerne om nogen vil hjælpe med at få lavet sådan at ens indbox kun viser 10 mails ad gangen på en side!, men hvordan gør jeg det! Så på side to skal de næste 10 vises, og der kommer problemet.
Kan jo fint skrive LIMIT 10,
Men hvad så når jeg kommer til anden side, hvordan viser jeg så de næste, man kan da ikke bare skrive LIMIT 10,20?
eler hvad?
HAr ikke lige testet det først, da jeg alligevel skulle stille det andet spørgsmål!
Avatar billede dennismp Nybegynder
29. juni 2004 - 13:03 #1
store og små bogstaver kan klares ved at man siger, at man konsekvent konverterer til små bogstaver altid. (i php strtolower(), i mysql tolower())

Side 1 LIMIT 0,10 (eller bare LIMIT 10)
Side 2 LIMIT 10,10
Side 3 LIMIT 20,10

jeg plejer at bruge

LIMIT ($sidetal-1)*$antal,$antal

hvor sidetal er 1,2,3.. osv.. og antal er hvor mange der vises pr. side.
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 13:07 #2
Det med store og små, de må gerne kunne lave brugernanve der har store og små, men det skal ignoreres når der sendes post osv. Under alle brugere skal den vise med store og små, gør den det i det tilfælde?

LIMIT 10,10
Skriver du det fordi at den tager fra 10, og så 10 op efter altså til 20?

Det med sidetal mener du så

www.blabla.dk/bla.php?sidetal=2
Avatar billede dennismp Nybegynder
29. juni 2004 - 13:13 #3
Du kan jo sagents sammenligne hvor du bruger lower-case af username, og så bare bruge username direkte når du skal vise det..

Ellers vis lidt kode - hvor du sender beskeder afsted

LIMIT 10,10: ja

Sidetal: ja

LIMIT;

fx

if( isset($_GET['sidetal']) )
  $sidetal = intval($_GET['sidetal']);
else
  $sidetal = 1;

$antal = 10;
$limit_fra = ($sidetal-1)*$antal;

$sql = "... LIMIT $limit_fra, $antal";

.. og evt også tjek om $sidetal er større end 0, og mindre end det totale antal sidetal.
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 13:17 #4
hvad så når jeg opretter bruger, så skal den så bare sættes til lowercase, så man ikke kan oprette to brugere med en forskel som
hej
hEj

Eller hvad?
Avatar billede dennismp Nybegynder
29. juni 2004 - 13:24 #5
Så vidt jeg kan se, så er mysql ligeglad med store og små bogstaver - kan bare ikke finde det i dokumentationen :(

SELECT email
FROM `c_block_email`
WHERE email = 'EN@EMAIL.DK' LIMIT 0 , 30

resultatet: en@email.dk
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 13:29 #6
ok :)

Til det med sidetal kan jeg vel spørge if resultat af mysql_fetch_array = 0 så echo "Der er ikke så mange mails"

HVad på siden hvor den skal vide hvor mange sidetal den skal lave?

Den skal jo ikke lave 10 sider hvis 2 er nok. HVad gøre man ved det?
Avatar billede dennismp Nybegynder
29. juni 2004 - 13:59 #7
SELECT count(*) FROM ..

nu ved du hvor mange beskeder.. Så laver du bare

$antalsider = ceil($totalbeskeder / $antal);

ceil runder op (så 2,3 bliver til 3)
Avatar billede dennismp Nybegynder
29. juni 2004 - 14:01 #8
når du har $antalsider så er det jo bare en lille if

Jeg plejer at sige, at alt under 1, så sætter vi sideantal til 1. Alt over $sideantal - så viser vi bare $sideantal

if( $sidetal < 1 )
  $sidetal = 1;
elseif( $sidetal > $antalsider )
  $sidetal = $antalsider;
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 14:08 #9
13 >> HVad skal $antal være, og $totalbeskeder er vel SELECT!?

$antalsider i 14, hvad skal det være?
Hvad viser den så?

hvad med elseif( $sideantal > $antalsider )
$sidetal == 1
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 14:08 #10
ups kun 1 =
Avatar billede dennismp Nybegynder
29. juni 2004 - 14:15 #11
$antal, er bare antallet af rækker du vil vise pr side.
$totalbeskeder er antallet af rækker ialt der skal vises (fx 50 rækker, fordelt på 5 sider, 10 rækker på hver side).

i "14": $antalsider er det vi beregner, som vist i "13". $antalsider er hvor mange sider vi skal bruge, for at vise alle rækkerne. (hvis vi tager eksemplet fra før, så er antal sider 5).

Din elseif er også fin. Spørgsmålet er, hvad vil du vise når man vil side 200 og der er kun 2. Vil du se den første side, eller den sidste side. Mit forslag er den sidste side, dit forslag er den første side. Hvad der er bedst er vist en smagssag. Alternativ kan du jo lave en fejlmeddelelse.
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 14:24 #12
ok dit forslag er bedre.

er dette rigtigt

$totalbeskeder = "SELECT ' FROM mail blablabla......"
$antal = 10

>> 13

Prøv lige at vise et eksempel på mit!


<?


session_start();
include("sider.php");
$ses = $_SESSION['navn'];
$sess = $_SESSION['status'];

echo "<P align=center><FONT face=InkPotFitCaps size=6>Indbakke</font></p>";
include("menu.php");
echo "<hr>";

include("xxxxx.php");
$query = mysql_query("SELECT * FROM mail WHERE mailtil = '$ses' ORDER BY id DESC");
echo "<table border=0>";

if ( $sess != 'login' ) {
    print(" <script language='javascript'>
        location.href='login.php';
        </script>");
        }

while($row = mysql_fetch_array($query)) {

if ( $row['slettil'] == 'ja' ) {
}else{

echo "<tr><td width=\"160px\">Fra:&nbsp&nbsp<a href=mail.php?id=".$row[id].">".$row[mailfra]."</a></TD><td width=\"160px\">Emne:&nbsp&nbsp".$row[emne]."</TD><td width=\"200px\">Dato:&nbsp&nbsp".$row[dato]."&nbsp&nbsp&nbsp&nbsp&nbspKl:&nbsp&nbsp".$row[tid]."</td></TR>";

}
}
echo "</TABLE>"

?>
Avatar billede dennismp Nybegynder
29. juni 2004 - 14:28 #13
Mangler du ikke noget LIMIT, sidetal osv? Eller er det her jeg skal træde til? :)
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 14:38 #14
Dette er min fil, så må du gerne prøve at lave om i den så det virker!
Avatar billede dennismp Nybegynder
29. juni 2004 - 14:44 #15
Så må du lige bære over med parse-errors og den slags :)

<?php
session_start();
include("sider.php");
$ses = $_SESSION['navn'];
$sess = $_SESSION['status'];

echo "<P align=center><FONT face=InkPotFitCaps size=6>Indbakke</font></p>";
include("menu.php");
echo "<hr>";

include("xxxxx.php");

// Antal beskeder pr side
$antal = 10;

// Antal beskeder
$query = mysql_query("SELECT count(*) FROM mail WHERE mailtil = '$ses' ORDER BY id DESC");
$antalbeskeder = mysql_query($query,0,0);

// Antal sider
$antalsider = ceil($antalbeskeder / $antal);

// Aktuel side
if( isset($_GET['sidetal']) ) {
  $sidetal = $_GET['sidetal'];
  if( $sidetal < 1 )
    $sidetal = 1;
  elseif( $sidetal > $antalsider )
    $sidetal = $antalsider;
}
else {
  $sidetal = 1;
}

// databasemagi :)
$limit_fra = ($sidetal-1)*$antal;
$query = mysql_query("SELECT * FROM mail WHERE mailtil = '$ses' ORDER BY id DESC LIMIT $limit_fra,$antal");

echo "<table border=0>";

if ( $sess != 'login' ) {
    print(" <script language='javascript'>
        location.href='login.php';
        </script>");
        }

while($row = mysql_fetch_array($query)) {

if ( $row['slettil'] == 'ja' ) {
}else{

echo "<tr><td width=\"160px\">Fra:&nbsp&nbsp<a href=mail.php?id=".$row[id].">".$row[mailfra]."</a></TD><td width=\"160px\">Emne:&nbsp&nbsp".$row[emne]."</TD><td width=\"200px\">Dato:&nbsp&nbsp".$row[dato]."&nbsp&nbsp&nbsp&nbsp&nbspKl:&nbsp&nbsp".$row[tid]."</td></TR>";

}
}
echo "</TABLE>"

// lav sidetals-ting

for($i=1;$i<=$antalsider;$i++) {
  if( $i == $sidetal ) {
    print "<b>$sidetal</b> ";
  }
  else {
    print '<a href="ditscript.php?sidetal='.$i.'">'.$i.'</a> ';
  }
}
?>
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:10 #16
HVad er parse error.
?
Avatar billede dennismp Nybegynder
29. juni 2004 - 15:13 #17
når du får en fejlmeddelelse.. fx når man glemmer en ";" :)
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:20 #18
Der er fejl i dette, men hvad er det, kan ikke finde ud af det!
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:21 #19
for($i=1;$i<=$antalsider;$i++) {
  if( $i == $sidetal ) {
    print "<b>$sidetal</b> ";
  }
  else {
    print '<a href="ditscript.php?sidetal='.$i.'">'.$i.'</a> ';
  }
}
Avatar billede dennismp Nybegynder
29. juni 2004 - 15:23 #20
i  14:44:18

mangler der et semikolon i linjen;
echo "</TABLE>"

prøv at tilføje det.

ps: jeg tager snart afsted til sjælland - så jeg er nok ikke aktiv mere idag om 10-15 mins, bare så du ikke sidder og venter forgæves :)
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:26 #21
den viser ikke mine mails
Avatar billede dennismp Nybegynder
29. juni 2004 - 15:27 #22
prøv at tilføje:

print "SELECT * FROM mail WHERE mailtil = '$ses' ORDER BY id DESC LIMIT $limit_fra,$antal";

hvad skriver den så?
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:28 #23
sorry havde glemt at filen jo ikke hedder xxx.php
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:29 #24
JEg går nu, prøver lidt selv, tilføjer evt. andet spørgsmål!
Avatar billede hmmhelpinghmm Nybegynder
29. juni 2004 - 15:30 #25
Du kan jo svare hvis jeg får det til at virke!
SVAR*
Avatar billede dennismp Nybegynder
29. juni 2004 - 15:38 #26
Ok, held og lykke med koderiet.
Avatar billede hmmhelpinghmm Nybegynder
30. juni 2004 - 00:24 #27
Nu fik jeg det med LIMIT til at virke, så kigger jeg på det andet i morgen!
Avatar billede hmmhelpinghmm Nybegynder
30. juni 2004 - 00:27 #28
UPS I DAG
Avatar billede hmmhelpinghmm Nybegynder
03. juli 2004 - 19:37 #29
Hvordan gør man bogstaver store, gør små sådan, men kan ikke gøre store:

<?

$t = "HEJz@";
echo $t;
echo "<br>";
$t = strtolower($t);
echo $t;
echo "<br>";
$t = strtohigh($t);
echo $t;

?>
Avatar billede hmmhelpinghmm Nybegynder
03. juli 2004 - 19:39 #30
Nå fandt svar på www.php.net

Tak dennismp.
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