I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Jeg har disse sætinger, men de to første if sætninger virker ikke.. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .........
if ($_SESSION['soeger']=='tidligere fer') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%' "); } if ($_SESSION['soeger']=='kommende fer') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%' "); }
if ($_SESSION['soeger']=='') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%'"); }
$taeller=0; while ($row = mysql_fetch_array($query)) { $taeller++; }
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...
Fortæller at det er ugyldigt argurment.. og som jeg læser det er -- at det mangler en Array til sidste.. du kaldet en Tæller frem som du har sat til at være 0 OG SKAL tælle op med tæller ++ -- den argument er vist ugyldigt.. for det skrives :
Hvis du sætter den stump kode i linjen i if sætningen kan man få vist hvor det opstå fejlen.. Altså du sætter den lille stump kode - efter den første if sætningen -- for at se hvis det er der hvor der gå galt.. If -- Or die og viser dig så den fejl..
For en let genkendelig fejlmeddelelse er det somregel en fordel at fejlsøge lige efter stedet, hvor det går galt. F.eks:
if ($_SESSION['soeger']=='tidligere fer') { $sql = "SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%' "; $query = mysql_query($sql) or die ($sql."<br>\r\n".mysql_error()); }
- men som sagt vil jeg mene, der er langt større problemer med koden. Alene slutningen er rent overkill. I stedet for at bladre resultatet igennem og inkremere en tæller, kan du få samme resultat betydeligt mere effektivt med: $tæller = mysql_num_rows($query);
- men selve query'en virker også ekstremt ineffektiv. Er det f.eks. nødvendigt at hente samtlige felter fra begge tabeller? Og er det virkelig nødvendigt med 4 (FIRE...!) dobbelte wildcard-søgninger - hvoraf den ene ovenikøbet bygger på en RegExp?
Som sagt, har jeg svært ved at forestille mig et væsentligt mere ineffektivt kald til en MySQL-DB - og koden får mig til at frygte, du heller ikke har indekseret tabellerne ... men det er selvfølgelig kun et gæt =)
I de to linjer sætter han en tæller til 0 - og løber derefter recordset'et igennem, mens han for række tæller tælleren én op. Det er der absolut intet 'dødeligt' i! Som sagt kan det dog gøres nemmere med: $taeller = mysql_num_rows($sql);
Dit eget ændringsforslag er vist helt ude i hampen! Jeg har i hvertfald aldrig hørt om en 'while/else ting' i PHP ... har du? ;o)
ole ved godt koden nok ikke er optimeret helt... Men det skulle jo virke uanset , og kan ikke se hvorfor ,mit ikke skulle virke.. det virker som sagt når : $_SESSION['soeger']==''
Ok Olebole :-) Har du ikke hørt While / else?? :-) Koder hører man jo ikke om -- man læser dem!
hoejgaard - jeg håber du få det afklaret. Jeg kom blot med de betragtninger jeg mener kan undersøges -- og som Olebole mener er ude i rampen.. som eksempel nævner jeg i starten efter hans kritik uden mening - at du kunne bruge en check :or die(mysql_error()); så du kan få en præcisering af fejlen i din IF sætningen. Så vil jeg kigge nærmere på Array sagde jeg i min første kommentar og connections. OLEBOLe er god til at kritisere alle forslag men han fremkommer ikke selv med noget særlige konstruktiv andet end at vi andre skal føles som idioter der ikke kan tænke. :-) Olebole har vist nogen private Frustrationer der skal udløses.. jeg er den der er gået! Ha -- Pøj pøj!
victor tak for dine forslag, men kan ikke lige gennemskue dem. Denne virker jo:
if ($_SESSION['soeger']=='') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%'"); }
Så der er jo ikke noget galt med tælleren.. Det er de 2 andre forespørgsler der er problemet...
if ($_SESSION['soeger']=='tidligere fer') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%' "); } if ($_SESSION['soeger']=='kommende fer') { $query = mysql_query("SELECT medlemmer.*, fer.* FROM medlemmer, fer WHERE medlemmer.brugernavn = fer.brugernavn && medlemmer.koen LIKE '%$_SESSION[koen]%' && fer.maal LIKE '%$_SESSION[maal]%' && fer.soegerfer LIKE '%$_SESSION[soegerfer]%' && medlemmer.brugernavn LIKE '%".preg_replace("/[_]/","\\\\_",$_SESSION['brugernavn'])."%' "); }
Hi :-) Hoejgaard - Jeg synes at det er dig den der skal give sig selv Points. Tænkt at tidligere skulle skrives med stort T. Det er da herligt at du fik det til at virke!
victor22 >> "Koder hører man jo ikke om -- man læser dem!" >> Så undrer det mig, du ikke var i stand til at læse hoejgaards kode - og ligefrem kaldte den dødelig.
Derudover undrer det mig også, hvad det mere præcist er i mit forslag til kode, du ikke finder konstruktivt?
Til sidst må jeg korrigere dig lidt: Jeg kritiserer absolut ikke alle forslag ... kun de, der er grund til at kritisere =)
Måske, du skal undlade at søge på de fire felter - det er ikke altid godt at gøre det, man gerne ville.
Jeg kender ikke din applikation i enkeltheder, så jeg kan ikke foreslå andre løsninger eller et andet design. Jeg kan kun konstatere, at søgningen er _ekstremt_ ineffektiv, og at de fleste kodere ville være villig til at begå mord for at undgå den søgning =)
Vores opgave er at forsøge at løse dine kodemæssige problemer. Din opgave i projektet er derefter at vælge én eller flere, der bør have points. Hvem synes _du_, skal have points? =)
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.