Avatar billede trajkovski Nybegynder
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
Avatar billede dennismp Nybegynder
28. maj 2004 - 17:24 #1
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];
Avatar billede trajkovski Nybegynder
28. maj 2004 - 17:41 #2
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?
Avatar billede trajkovski Nybegynder
28. maj 2004 - 17:42 #3
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];
}
}
Avatar billede dennismp Nybegynder
28. maj 2004 - 17:52 #4
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
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:02 #5
Øhhhm... Den skriver ikke noget...
Avatar billede dennismp Nybegynder
28. maj 2004 - 18:06 #6
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);
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:06 #7
Men forresten der er heller ikke noget i databasen endnu...
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:08 #8
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
Avatar billede dennismp Nybegynder
28. maj 2004 - 18:08 #9
Det vilel hjælpe en del hvis du smed lidt test-data deri, så vi kan se om det virker.. :-)
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:10 #10
Så skriver den:

<OPTION SELECTED VALUE="vaelg_kategori">Vælg kategori
0<pre></pre><OPTION VALUE="ny_kategori">Ny kategori</SELECT>
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:19 #11
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>
Avatar billede trajkovski Nybegynder
28. maj 2004 - 18:20 #12
Btw... Det var egentlig en meget god ide det med noget test-data ;)
Avatar billede dennismp Nybegynder
28. maj 2004 - 20:53 #13
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)
Avatar billede trajkovski Nybegynder
28. maj 2004 - 23:43 #14
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...
Avatar billede trajkovski Nybegynder
28. maj 2004 - 23:47 #15
Hvor ville jeg dog ønske, jeg selv var kommet på det...
Avatar billede dennismp Nybegynder
28. maj 2004 - 23:56 #16
ret din sql til:
$sql = "select distinct kategori from sag_billeder";
Avatar billede dennismp Nybegynder
28. maj 2004 - 23:56 #17
.. det kan jo smutte for selv den bedst :-)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:44 #18
Ja... Hvis bare jeg var den bedste og kunne bruge den undskyldning :) Det virker perfekt! Hvor mange point vil du ha'? ;)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:46 #19
Hey forresten når nu jeg har dig :) Hvordan kan jeg så få information ud fra en checklist? Ligger den i $_POST?
Avatar billede dennismp Nybegynder
29. maj 2004 - 00:46 #20
Du giver bare hvad du syntes svaret er værd - hvis det er 15 point, så går det jo nok alligevel :)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:48 #21
Men hvordan kan jeg give mere?
Avatar billede dennismp Nybegynder
29. maj 2004 - 00:48 #22
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
}
Avatar billede dennismp Nybegynder
29. maj 2004 - 00:49 #23
Det ved jeg ikke - jeg stille sjældent spørgsmål :)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:50 #24
Hehe... ok... Men så opretter jeg et nyt spg. :)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:52 #25
Du skal have mange tak for hjælpen!!

Kig her: http://eksperten.dk/spm/503861
Avatar billede trajkovski Nybegynder
29. maj 2004 - 00:54 #26
Øhm... Forresten nu var det checklisten jeg mente... Altså hvilken option brugeren har valgt...
Avatar billede dennismp Nybegynder
29. maj 2004 - 00:59 #27
Jeg er ikke sikker på hvad du mener med checkliste ? En dropdown? (vis mig evt htmlkoden)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 01:01 #28
Ja det var det jeg mente... Kaldte den vist lige noget forkert :)
Avatar billede dennismp Nybegynder
29. maj 2004 - 01:04 #29
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.
Avatar billede trajkovski Nybegynder
29. maj 2004 - 01:07 #30
Jamen jamen... Tak! Kan man ikke få dit telefonnummer? Så ringer jeg helt sikkert igen! ;)
Avatar billede trajkovski Nybegynder
29. maj 2004 - 01:08 #31
Jeg havde slet ikke tænkt på, at den jo også havde et navn... Hvor bli'r det dog pludselig nemt... :)
Avatar billede dennismp Nybegynder
29. maj 2004 - 02:18 #32
Hehe, ja der er logik i skidtet :-) De fleste form-elementer virker på samme måde - så det er nemt at huske.
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