Avatar billede biodk Nybegynder
05. januar 2004 - 17:44 Der er 27 kommentarer og
2 løsninger

Hjælp til hentning/sletning af tekst fra database

Hejhej

Jeg er igang med en 3dchat. Jeg har lavet noget funktion med talebobler. Idéen er at når man skriver ska den sende et "timestamp" med, og så den talebobbel der ryger ud skal jo kun vise den sidst skrevne og samtidig ska den skjules efter x antal tid. Håber i ka hjælpe mig lidt med det. Lige nu lister den bare brugerens tekst i taleboblen fra databasen.
Avatar billede krydset Nybegynder
05. januar 2004 - 17:50 #1
Det med at den kun skal vise nogle stykker og resten skal forsvinde det gøres på den her måde
$besked = mysql_query("SELECT * FROM tabel LIMIT 0,10");
Hvor tallet 10 bestemmer hvor mange der skal vises af gangen ;)
Avatar billede krydset Nybegynder
05. januar 2004 - 17:52 #2
Så skal du ikke slette eller videre så viser den kun de 10, man kan udbygge det med
$besked = mysql_query("SELECT * FROM tabel LIMIT 0,10 ORDER BY id desc");
så viser den de sidste først og bliver sorteret efter id
Avatar billede krydset Nybegynder
05. januar 2004 - 17:53 #3
Håber du kan bruge det og det var det du ledte efter
Avatar billede biodk Nybegynder
05. januar 2004 - 17:56 #4
krydset, det er perfekt.. leger lige med det senere. Men hva så, man skriver og så eks. går der 5 sek. så ska teksten jo forsvinde fra skærmen. Altså.. Så hvis man ikk skriver skal den ik vise noget. Så man netop ik går rundt med sin sidste besked i flere timer, hvis man ik skriver.
Avatar billede krydset Nybegynder
05. januar 2004 - 17:57 #5
nu ser jeg osse lige der står hentning fra db et lille script som vil udskrive 10 beskeder af gangen sorterert efter id, som listet nedaf vil se sådan her ud


$besked = mysql_query("SELECT * FROM tabel LIMIT 0,10 ORDER BY id desc") or die(mysql_error());
while($row = mysql_fetch_array()) {
  echo "$row[besked]<br />";
}
Avatar billede krydset Nybegynder
05. januar 2004 - 18:04 #6
Jeg ved ikke om du skal lave den funktion i php da den kun bliver afviklet på servern, måske kan den laves bedre i javascript ved ikke :-O er ikke så meget inde i det med time funktionerne endnu, men der kommer måske en med et bud på det
Avatar billede biodk Nybegynder
05. januar 2004 - 18:13 #7
krdyset, ja okay venter lige til flere folk skriver, men du får i hvert fald noget for dit så snart det er gået op. Men tjek her:

$migchat = $db->SendSQL("SELECT * FROM chat WHERE hvem='".$_SESSION["brugernavn"]."' LIMIT 0,1 ORDER BY beskednr desc");

og så har jeg i databasen en der hedder beskednr. hva er det galt i den linje?
Avatar billede nak-m Nybegynder
05. januar 2004 - 18:15 #8
Du kunne jo evt. sætte en tidsbegrænsning i din mysql_query; på den måde forsvinder teksten helt automatisk når din chat opdaterer - hvis den altså er for gammel :)
Avatar billede biodk Nybegynder
05. januar 2004 - 18:16 #9
nak-m jeg kører med hjælp fra noget mysql query dok.

så min sætning vil eks hedde..

$migchat = $db->SendSQL("SELECT *.....

hvordan sætter jeg tidsbegrænsning der ?
Avatar billede krydset Nybegynder
05. januar 2004 - 20:04 #10
$migchat = $db->SendSQL("SELECT * FROM chat WHERE hvem='$_SESSION[brugernavn]' LIMIT 0,1 ORDER BY beskednr desc");
Avatar billede biodk Nybegynder
05. januar 2004 - 21:31 #11
krydset gir samme fejl ->

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/home/steffen/public_html/include/db.php4 on line 52

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/steffen/public_html/include/db.php4 on line 53


Og linje 52 - 53 er fuldstændig irrelevante..
Avatar billede krydset Nybegynder
05. januar 2004 - 21:40 #12
Det er fordi den ikke får noget data prøv at tilrette den her mysql til dit eget

$besked = mysql_query("SELECT * FROM tabel LIMIT 0,10 ORDER BY id desc") or die
Avatar billede biodk Nybegynder
05. januar 2004 - 21:56 #13
krydset, er du sikker på det limit er korrekt? For selvom jeg eks gør såen her:

$migchat = mysql_query("SELECT * FROM chat WHERE hvem='".$_SESSION["brugernavn"]."' LIMIT 0,1 ORDER BY beskednr desc");

så kommer der heller ik noget ud. Ingen fejl, men den viser ik noget tekst
Avatar billede krydset Nybegynder
05. januar 2004 - 22:12 #14
$besked = mysql_query("SELECT * FROM table order by id desc LIMIT 20") or die(mysql_error());

Prøv det ret den til med dit eget det er en jeg bruger kan godt se den jeg skrev var lidt forkert
Avatar billede biodk Nybegynder
05. januar 2004 - 22:44 #15
sådan.. nu kører det.. nu mangler jeg bare lige så beskeden fjerner syg fra skærmen, hvis man ik skriver noget nyt.. nogle forslag?
Avatar billede krydset Nybegynder
05. januar 2004 - 23:03 #16
håbe ham med time dimsen kommer :-D
Avatar billede nak-m Nybegynder
06. januar 2004 - 07:08 #17
Hov hov er det mig i kalder navne ;)
Det skulle gerne være såre simpelt, fx:

$besked = mysql_query("SELECT * FROM table WHERE tid >= (DATE_SUB(NOW(), INTERVAL 10 SECOND)) order by id desc LIMIT 20") or die(mysql_error());

Så skal du bare have en kolonne, der hedder 'tid', hvori du bare smider en NOW(). Så skulle den gerne gå væk efter 10 sekunder :)
Avatar billede krydset Nybegynder
06. januar 2004 - 10:26 #18
Det var skønt nak-m jeg sidder osse og skal bruge noget tids funktion så nu har jeg lidt at gå ud fra ;)
Avatar billede biodk Nybegynder
06. januar 2004 - 15:16 #19
nak-m, det lyder perfekt, men du må lige hjælpe mig lidt.

Den tid i db hvordan ska den oprettes, bare alm. med varchar? Og hvordan siger du jeg ska smække "Now()" ind? Har aldrig brugt Now før nemlig... Er stadig ny i php sproget :)
Avatar billede biodk Nybegynder
06. januar 2004 - 15:27 #20
krydset - efter at haev siddet og testet en del, mangler der meget lidt.

lige nu tager den fra "beskednr" som er auto increment. Dvs. alle der skriver får samme id rækkefølge. Hver bruger skal jo have deres egen rækkefølge hvis du forstår ? Forslag krydset?
Avatar billede krydset Nybegynder
06. januar 2004 - 16:26 #21
hvis den er autoincrement skulle alle ikke få samme id så skulle id´et gerne stige hvergang der kommer en ny besked
Avatar billede biodk Nybegynder
06. januar 2004 - 22:49 #22
krydset.. ja men.. folk skal kunne se hvad hinanden skriver.. førhen brugte jeg denne kode til at bestemme

$hamchat = $db->SendSQL("SELECT * FROM chat order by beskednr desc LIMIT 1");

men jeg fortæller ik hvilken bruger den ska tage ud fra. og det er svært da det ik kun er en selv, men alle andre i samme rum. dvs. ville være bedre hvis hver bruger havde deres egen id optælling, eller man kunne gøre det på en anderledes måde?
Avatar billede biodk Nybegynder
07. januar 2004 - 16:06 #23
come on. hjælp mig :)
Avatar billede krydset Nybegynder
07. januar 2004 - 18:26 #24
Så skal du jo lave en tabel for hver modtager det er avancerets stof, og så meget inde i php er jeg ikke :-S
Avatar billede biodk Nybegynder
07. januar 2004 - 18:32 #25
krydset, kan man slet ik bruge noget WHERE hvem = etellerandet?

Men det er jo svært at definere hvem hvem er ..
Har leget lidt med
    for($i=0;$i<count($felt);$i++)
men ka ik få det til at stemme ? forslag?
Avatar billede krydset Nybegynder
07. januar 2004 - 18:49 #26
Prøv og sæt dig og tegn det på et papir så ser det mere logisk ud
Avatar billede biodk Nybegynder
08. januar 2004 - 14:48 #27
krydset det er faktisk simpelt nok, jeg ka vise dig et eksempel hvis det er? har du msn/icq ?
Avatar billede biodk Nybegynder
08. januar 2004 - 15:00 #28
det er ligemeget, har fået det til at virke.. jada :) - så mangler vi bare den der nak-m foreslog.. Krydset, forstod du det?
Avatar billede biodk Nybegynder
08. januar 2004 - 20:44 #29
jeg tager resten herfra.. mig og krydset deler points.. tak for hjælpen guys
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