28. maj 2004 - 17:19
Der er
31 kommentarer og 1 løsning
Fejl ved brug af extract()
Hej Jeg er igang med en renovering af et billedscript, jeg har lavet. Koden ser således ud: <? require("mysql/mysql-funktioner.php"); $sql = "select kategori from sag_billeder"; $antal_kategorier = "select kategori, count(*) as antal_kategorier from sag_billeder GROUP BY kategori ASC"; aabn_forbindelse_og_vaelgdb(); $optaelling = sql_spoerg_og_faa_svar($antal_kategorier); $resultat = sql_spoerg_og_faa_svar($sql); luk_forbindelse(); extract($optaelling[0]); if ($antal_kategorier>0){ for ($antal=0;$antal<$antal_kategorier;$antal++){ print "<OPTION VALUE=".$kategori[$antal].">".$kategori[$antal]; } } ?> Dette giver følgende fejl: Warning: extract(): First argument should be an array in /hsphere/local/home/nicolai/sag.niconet.dk/billeder/antal.php on line 28 Linie 28 er sjovt nok extract($optaelling[0]);. Jeg kan ikke rigtigt forstå, hvad den brokker sig sådan over... Håber der er en der hjælpe... M.V.H. Nicolai
Annonceindlæg fra Partnertekst
prøv med: $sql = "select kategori, 'dummy' from sag_billeder"; så tror jeg det virker.. bedre er nok at skrive (istedet for extract($optaelling[0]); ): $kategori = $optaelling[0];
Ok nu brokker den sig ikke, men nu kommer min løkke vel ikke til at virke, sådan at den viser alle de kategorier der er?
Altså hvis koden bare ser sådan her ud: //$sql = "select kategori from sag_billeder"; $sql = "select kategori, 'dummy' from sag_billeder"; $antal_kategorier = "select kategori, count(*) as antal_kategorier from sag_billeder GROUP BY kategori ASC"; aabn_forbindelse_og_vaelgdb(); $optaelling = sql_spoerg_og_faa_svar($antal_kategorier); $resultat = sql_spoerg_og_faa_svar($sql); luk_forbindelse(); //$kategori = array($resultat); //extract($optaelling[0]); $kategori = $optaelling[0]; if ($antal_kategorier>0){ for ($antal=0;$antal<$antal_kategorier;$antal++){ print "<OPTION VALUE=".$kategori[$antal].">".$kategori[$antal]; } }
prøv at tilføje print "<pre>"; print_r($resultat); print "</pre>"; fx. i bunden at scriptet (bare det er efter det sted hvor der står: $resultat = sql_spoerg_og_faa_svar($sql); ). Paste outputtet her
Øhhhm... Den skriver ikke noget...
har du overhovedet nogle rækker i sag_billeder? prøv (efter aabn_forbindelse_og_vaelgdb(); ) $res =mysql_query("SELECT count(1) FROM sag_billeder") or die(mysql_error()); print mysql_result($res,0,0);
Men forresten der er heller ikke noget i databasen endnu...
Jo der er nogle rækker men der er ingen information: id int(11) Nej auto_increment kategori varchar(255) Ja NULL billednavn varchar(255) Ja NULL tid datetime Ja NULL bruger varchar(255) Ja NULL kommentar longtext Ja NULL
Det vilel hjælpe en del hvis du smed lidt test-data deri, så vi kan se om det virker.. :-)
Så skriver den: <OPTION SELECTED VALUE="vaelg_kategori">Vælg kategori 0<pre></pre><OPTION VALUE="ny_kategori">Ny kategori</SELECT>
Så nu har jeg proppet noget ind i den og den skriver nu følgende: <OPTION SELECTED VALUE="vaelg_kategori">Vælg kategori 3<pre>Array ( [0] => Array ( [0] => Roskilde Festival [kategori] => Roskilde Festival [1] => dummy [dummy] => dummy ) [1] => Array ( [0] => Roskilde Festival [kategori] => Roskilde Festival [1] => dummy [dummy] => dummy ) [2] => Array ( [0] => Missekatte [kategori] => Missekatte [1] => dummy [dummy] => dummy ) ) </pre><OPTION VALUE="ny_kategori">Ny kategori</SELECT>
Btw... Det var egentlig en meget god ide det med noget test-data ;)
prøv dette: <? require("mysql/mysql-funktioner.php"); $sql = "select kategori from sag_billeder"; aabn_forbindelse_og_vaelgdb(); $resultat = sql_spoerg_og_faa_svar($sql); luk_forbindelse(); for ($antal=0;$antal<count($resultat);$antal++){ extract($resultat[$antal]); print "<OPTION VALUE=".$kategori.">".$kategori; } ?> er det dette resultat du ønsker? (hvis det altså virker) hvis ikke; hvad vil du gerne have at koden laver (har lidt svært at ved at se det)
Det virker efter hensigten :) Bortset fra at den ikke skal vise kategorien igen, hvis den er den samme. F.eks. skal den ikke vise Roskilde Festival 2 gange, da det jo er samme kategori...
Hvor ville jeg dog ønske, jeg selv var kommet på det...
ret din sql til: $sql = "select distinct kategori from sag_billeder";
.. det kan jo smutte for selv den bedst :-)
Ja... Hvis bare jeg var den bedste og kunne bruge den undskyldning :) Det virker perfekt! Hvor mange point vil du ha'? ;)
Hey forresten når nu jeg har dig :) Hvordan kan jeg så få information ud fra en checklist? Ligger den i $_POST?
Du giver bare hvad du syntes svaret er værd - hvis det er 15 point, så går det jo nok alligevel :)
Men hvordan kan jeg give mere?
ja, hvis form'en har method="post". Hvis du ikke angiver nogen value for din checkbox, så er den bare "on", ellers er den, den værdi du angiver i value. if( isset($_POST['checkbox']) && $_POST['checkbox'] == 'on' ) { gør noget }
Det ved jeg ikke - jeg stille sjældent spørgsmål :)
Hehe... ok... Men så opretter jeg et nyt spg. :)
Øhm... Forresten nu var det checklisten jeg mente... Altså hvilken option brugeren har valgt...
Jeg er ikke sikker på hvad du mener med checkliste ? En dropdown? (vis mig evt htmlkoden)
Ja det var det jeg mente... Kaldte den vist lige noget forkert :)
det er på samme måde. fx <form method="post" ....> <select name="by"> <option value="4200">Slagelse</option> <option value="9000">Aalborg</option> </select> </form> hentes ved $_POST['by']; hvis Slagelse vælges, vil $_POST['by'] være 4200.
Jamen jamen... Tak! Kan man ikke få dit telefonnummer? Så ringer jeg helt sikkert igen! ;)
Jeg havde slet ikke tænkt på, at den jo også havde et navn... Hvor bli'r det dog pludselig nemt... :)
Hehe, ja der er logik i skidtet :-) De fleste form-elementer virker på samme måde - så det er nemt at huske.
Vi tilbyder markedets bedste kurser inden for webudvikling