/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
in_array giver "Wrong datatype"-warning
Fra : Stig Sørensen


Dato : 06-02-08 09:06

Hej gruppe.

Har følgende funktion der skal tjekke om noget er korrekt eller ej:


function tjek_brugergarage()
{
global $bruger_id;
global $id;

// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Tjekker ejerskab mellem
bruger ID og garage ID! ////////////////////////////////// \\
$tjek_garage = mysql_query("SELECT * from punbb_users, phpbb_garage
WHERE punbb_users.id = '$bruger_id' AND phpbb_garage.member_id =
'$bruger_id' AND phpbb_garage.id = '$id'");
   while($row = mysql_fetch_assoc($tjek_garage))
   {
      $tjek[] = $row['id'];
   }
   if (!in_array("$id", $tjek))
   {
      global $stop;
      $stop = 1;
   }
}


Hvor jeg så her gør brug af ovenstående funktion:

function edit_garage()
{
global $id;
global $bruger_id;
global $stop;
tjek_brugergarage();
   if ($stop == "1")
   {
   echo "Der er sket en fejl! Dette er ikke din Garage.";
   } else {
[snip - kode]


Hvis jeg i URL'en ændre &id= til at være et tal, som ikke tilhører mit
bruger_id kommer den rigtige fejlmeddelelse frem "Der er sket en fejl!
Dette er ikke din Garage." - men ovenover også:
"Warning: in_array() [function.in-array]: Wrong datatype for second
argument in...."

Har kigget manualen igennem, er mit second argument ikke et gyldt
array, siden den beklager sig? (if (!in_array("$id", $tjek)))


Mvh
Stig Sørensen

 
 
Bertel Lund Hansen (06-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 06-02-08 17:22

Stig Sørensen skrev:

>    while($row = mysql_fetch_assoc($tjek_garage))
>    {
>       $tjek[] = $row['id'];
>    }
>    if (!in_array("$id", $tjek))
>    {
>       global $stop;
>       $stop = 1;
>    }

Jeg vil ikke påstå at jeg kan overskue din kode, men det kunne se
ud som om $tjek kun initialiseres under gunstige omstændigheder,
og så kan den ikke optræde som array når der er fejl.

Prøv at skrive

   $tjek = array();

før while.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Stig Sørensen (06-02-2008)
Kommentar
Fra : Stig Sørensen


Dato : 06-02-08 12:39

On 6 Feb., 17:22, Bertel Lund Hansen <unosp...@lundhansen.dk> wrote:

> Jeg vil ikke påstå at jeg kan overskue din kode,

Beklager, men jeg er nybegynder.
Kan du evt. anbefale nogle online tutorials der lærer en nybegynder,
at komme videre og skrive pænere kode?


> men det kunne se
> ud som om $tjek kun initialiseres under gunstige omstændigheder,
> og så kan den ikke optræde som array når der er fejl.
>
> Prøv at skrive
>
>         $tjek = array();
>
> før while.

Takker.

Det hjalp på problemet med $tjek = array($id);

Mvh
Stig

t.vang (06-02-2008)
Kommentar
Fra : t.vang


Dato : 06-02-08 21:30

Stig Sørensen wrote:
> On 6 Feb., 17:22, Bertel Lund Hansen <unosp...@lundhansen.dk> wrote:
>
>> Jeg vil ikke påstå at jeg kan overskue din kode,
>
> Beklager, men jeg er nybegynder.
> Kan du evt. anbefale nogle online tutorials der lærer en nybegynder,
> at komme videre og skrive pænere kode?
>
>
>> men det kunne se
>> ud som om $tjek kun initialiseres under gunstige omstændigheder,
>> og så kan den ikke optræde som array når der er fejl.
>>
>> Prøv at skrive
>>
>> $tjek = array();
>>
>> før while.
>
> Takker.
>
> Det hjalp på problemet med $tjek = array($id);
>
> Mvh
> Stig
Du skal ikke skrive $id.. kun, som Bertel skrev, følgende:
$tjek = array();

På din måde, vil position 0 i dit array være lig med $id (hvad den så
end har af værdi...)

Tutorials kan du finde her (google søgning):
http://www.google.dk/search?hl=da&q=php+tutorials+array&meta=

Eventuelt rafinér søgningen lidt, hvis der er noget bestemt du vil vide
mere om.. Generelt finder du de bedste informationer på php.net - Også
selvom det er skrevet meget "manual agtigt".. :)

t.vang

N/A (06-02-2008)
Kommentar
Fra : N/A


Dato : 06-02-08 21:30



Stig Sørensen (06-02-2008)
Kommentar
Fra : Stig Sørensen


Dato : 06-02-08 13:58

On 6 Feb., 21:29, "t.vang" <dsl254...@vip.cybercity.dk> wrote:

> Du skal ikke skrive $id.. kun, som Bertel skrev, følgende:
>       $tjek = array();
>
> På din måde, vil position 0 i dit array være lig med $id (hvad den så
> end har af værdi...)

Men det får den til at fejle selvom den burde være true?


Bertel Lund Hansen (07-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 07-02-08 14:37

Stig Sørensen skrev:

> Men det får den til at fejle selvom den burde være true?

Det er forkert at initialisere $tjek som andet end et tomt array.
Hvis der dukker en fejl op, skal årsagen til den søges et andet
sted.

Men det er noget af en mundfuld for en nybegynder at arbejde med
både PHP og MySQL på én gang.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste