Wabby Skrevet 11. august 2007 Skrevet 11. august 2007 (endret) Hei, skal skrive ut en liste med nummer, melding og dato. Dette går fint i seg selv. Men når jeg prøvde å lage en sjekk som sjekker om nummer er i kontaktlista mi og bytte ut nummer med navn så kødder den. Den innerste loopen blir kun kjørt engang. har lest litt rundt på dette, men kan ikke si at jeg blir helt klok. Håper dere kan hjelpe meg litt.. echo "<table valign=\"top\" width='400'><tr valign=\"top\" align='center'>"; echo "<td>Til</td><td width=\"200\">Melding</td><td >Tidspunkt</td></tr>"; while($row = mysql_fetch_array($result)) { echo "<tr align='center'><td>"; while($rowc = mysql_fetch_array($rescontact)) { if($rowc['contactnumber'] == $row['til']){ echo $rowc['contactname']; } else{ echo $row['til']; } } echo "</td>"; echo "<td >".$row['melding']."</td>"; echo "<td>".$row['sendt']."</td>"; } echo "</tr>"; echo "</table>"; Endret 14. august 2007 av Wabby
kikkazz Skrevet 11. august 2007 Skrevet 11. august 2007 Det finnes egentlig to løsninger på dette som jeg kan komme på farta: Den ene er å hente ut alle konktene fra $rowc ut i et array. Noe slik PHP while($rowc= mysql_fetch_array($rescontact)) { $brukere[$rowc['contactnumber']] = $rowc['contactname']; } echo "<table valign="top" width='400'><tr valign="top" align='center'>"; echo "<td>Til</td><td width="200">Melding</td><td >Tidspunkt</td></tr>"; while($row = mysql_fetch_array($result)) { echo "<tr align='center'><td>"; echo $brukere[$'row['til']]; echo "</td>"; echo "<td >".$row['melding']."</td>"; echo "<td>".$row['sendt']."</td>"; } echo "</tr>"; echo "</table>"; Utestet. Men tror det skal fungere. Den andre blir å kjøre en JOIN i spørringen. Er ikke helt stabil på dette. Men er garantert noen andre her som kan hjelpe deg med det
ZoRaC Skrevet 11. august 2007 Skrevet 11. august 2007 www.php.net/in_array i stedet for å sjekke med "if". Noe sånt: PHP while($row = mysql_fetch_array($result)) {$tlfNr[] = $row['til']; } while($rowc = mysql_fetch_array($rescontact)) { if(in_array($rowc['contactnumber'], $tlfNr){ echo $rowc['contactname']; } else{ echo $row['til']; } }
Runar0 Skrevet 11. august 2007 Skrevet 11. august 2007 (endret) Hah såg på film mest eg skreiv. To stykken før meg Kvar blir $rescontact og $result definert? Hugs at første gang du looper $rescontact så tømmer du den og neste gang er blir den ikkje loopa. Ein bedre løsing er å loope $rescontact før du looper $result, og putte alle nummra i ein array ($contacts). Og så gjør du if(array_key_exists($row['til'], $contacts)) echo $contacts[$row['til']]; Endret 11. august 2007 av Runar0
Wabby Skrevet 12. august 2007 Forfatter Skrevet 12. august 2007 Takk takk Brukte den du la ut kickazz, måtte bare modifisere den litt slik at den returnerte nummer også dersom den ikke fikk hit mot telefonkatalogen.
Crowly Skrevet 14. august 2007 Skrevet 14. august 2007 Dette er ikke en optimal løsning med tanke på ressursbruk. Kan du ikke løse dette med kun en sql spørring mot flere tabeller samtidig ? F.eks noe slikt vil være en bedre løsning, men blir litt vanskelig å si noe konkret uten av jeg vet noe om tabell definisjonene dine og hvordan informasjonene blir lagret. SELECT t1.melding, t1.dato, t2.navn FROM meld_tabell t1, bruker_tab t2 WHERE t1.id = t2.fid
Wabby Skrevet 14. august 2007 Forfatter Skrevet 14. august 2007 (endret) problemet der med din spørring er at den ville kun hentet ut de SMSene som var sendt til folk som jeg hadde lagret i Contacts. Saken er at den skal hente ut hele lista og dersom nummeret eksisterer i Contacts så skal den erstattes med navn. eks: Jan Teigen - bla bla bla - 12.08.07 - 14:35 997733231 - hei hei bla - 12.08.07 - 14:22 Per Christian Foss - hest er best - 12.08.07 - 14:12 47474747 - mer blabla - 11.08.07 - 11:42 Men vil jo tro at den blir tung i det lange løp. Allerede nå så henter den opp 150 SMS i historikken. Slik er koden nå: while($rowc= mysql_fetch_array($rescontact)) { $brukere[$rowc['contactnumber']] = $rowc['contactname']; } while($row = mysql_fetch_array($result)) { echo "<tr align='center'><td>"; if ($brukere[$row['til']] == null or $brukere[$row['til']] == ''){ echo $row[til]; } else{ echo $brukere[$row['til']]; } echo "</td>"; echo "<td >".$row['melding']."</td>"; $tid = $row['sendt']; echo "<td>".$row['sendt']."</td>"; } SQL'en Select smsnr,fra,til,melding,date_FORMAT(sendt, '%e %M %Y - %H:%i:%s') as sendt FROM sms where fra like '$username' order by smsnr desc Select * FROM mycontacts where contactowner like '$username' Endret 14. august 2007 av Wabby
Crowly Skrevet 14. august 2007 Skrevet 14. august 2007 (endret) Da tror jeg du bør se på hvordan du lagrer informasjonen, og kanskje vurdere om ikke du må endre litt på strukturen i databasen din slik at du ikke har en haug med unødvendigeoppslag, spesielt hvis du skal lagre mange forekomster. Hvis du finner ut at du bør gjøre noen endringer, så kan denne artikelen kanskje være greit å ta en titt på: Database Normalization And Design Techniques Hvilket felter i har du i mycontacts tabellen. (Og bruk kun SELECT * FROM ... når du trenger absolutt alle feltene, hvis ikke så spesifiser kun de du trenger.) Du kan gjøre en hel haug med sql og subqueries o.l, men dette er ikke det jeg kan mest om (enda?), så jeg tror det skal være mulig å optimalisere koden din. Endret 14. august 2007 av crowly
Wabby Skrevet 14. august 2007 Forfatter Skrevet 14. august 2007 (endret) Jeg kan egentlig gjøre det så enkelt at jeg lager en kolonne til i SMS der jeg har contactname, og kjøre en isnull(contactname,smsnr) om det finnes i mysql da. Jeg er egentlig en MS SQL mann Det jeg jobber daglig med. Siden er i utgangspunktet brukt for å lære meg litt PHP og ting blir laget sånn litt etter litt... Oi nå vil jeg lage en sms side... humm... kanskje lagre SMSene og ja, nå vil jeg også lage en SMShistory side. hummm... nå er jeg lei av å skrive nummerene, nå lager jeg contactliste. siden blir liksom laget ettersom jeg gidder, og da blir det rot Endret 14. august 2007 av Wabby
Crowly Skrevet 14. august 2007 Skrevet 14. august 2007 (endret) og kjøre en isnull(contactname,smsnr) om det finnes i mysql da. ser slikt ut ISNULL(expr) Jeg er egentlig en MS SQL mann Det jeg jobber daglig med. Da burde jo dette være ganske grei skuring for deg ... er mest kjent med Oracle Forms/SQL og Pl/Sql selv, så overgangen til PHP var ikke så veldig vanskelig, da det storsett bare er syntax'en som er forskjellig. siden blir liksom laget ettersom jeg gidder, og da blir det rot Er en kjedelig jobb, men man bør jo ta seg tid til å rydde opp i gamle synder. Men det kommer vel også litt ann på hvor ofte systemet blir brukt, hva slags system det blir kjørt på og hvor mye annet som evt blir kjørt på samme system samtidig. Er ikke sikkert at kode optimalisering trenger å være så høyt prioritert, men det skader ikke å venne seg til å kode skikkelig med en gang, så man ikke legger til stygge uvaner. Endret 14. august 2007 av crowly
Wabby Skrevet 14. august 2007 Forfatter Skrevet 14. august 2007 ja, da får jeg gjøre det den dagen netbox sine servere bruker for lang tid på spørringene ... *lat*
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå