Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Invalid argument supplied for foreach() mm

Postades av 2009-01-22 00:08:12 - Sören Monvall, i forum php, Tråden har 16 Kommentarer och lästs av 1458 personer

När jag lägger formuläret som en del i php-filen får jag följande varning
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Kallsok.php on line 20

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Kallsok.php on line 36
Database Output

Såhär ser koden ut fram till sista varningen

<?php
/*Concat Checkbox Values into One string separated by commas for Select*/
foreach($searchitem as $value){
$search=$search.",".$value;
}

/* Remove Leading comma*/
$searchit=substr($search,1);
/*Show the selected fields*/
print "$searchit";
$db="kall300db";
$link = mysql_connect("localhost","root","");
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
$result=mysql_query( "SELECT $searchit FROM kall where Helnamn LIKE '%$where%'" );

$num=mysql_num_rows($result);

Vad gör jag för fel? Rubriken på tabellen skrivs ju ut "Database output"

Lägger jag formuläret för sig och kallar på scriptfilen får jag upp formuläret men inga poster. Int ens rubriken "Database output"
Och att det finns poster som ska motsvara sökbegreppet jag anger är 100!

Jag har Apache 2.2.11(WIN32), php 5.2.8, mysql 5.1.30


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-22 08:32:24 - Per Persson

Varifrån kommer $searchitem?

Tips:
Du kan byta ut

foreach($searchitem as $value){
$search=$search.",".$value;
}

/* Remove Leading comma*/
$searchit=substr($search,1);

mot det kortare
$searchit = implode(',', $searchitem);


Dessutom finns ingen anledning att stoppa in en ensam variabel i en sträng som du gör på raden
print "$searchit";

Det går lika bra med
print $searchit;


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-24 18:02:01 - Sören Monvall

searchitem kommer från formuläret som ser ut såhär

<body>
<form>
<h4>Sök efter:</h4>
<form method="POST" action="Kallsok2.php">
<input type="checkbox" name="searchitem[]" value="Familjnr">Familjenr<br>
<input type="checkbox" name="searchitem[]" value="Helnamn">Namn<br>
<input type="checkbox" name="searchitem[]" value="Födelseår">Födelseår<br>
<br>
Parenteserna ska indikera array där foreach förut skulle ha plockat ut elementen
<h4>Med:</h4>
Namnet: <input type="text" name="where" size="20">
<input type="submit" value="Submit"><input type="reset">
</form> 

Jag satte in implode i stället för foreach som Du föreslog liksom printändringen. Då får jag följande rsultat:
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\Kallsok2.php on line 22

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Kallsok2.php on line 35
Database output -
Dvs först skrivs formuläret ut sedan felmeddelandena och därefter skrivs rubriken "Database output" men inga poster. Jag skriver "fnutt" "komma" 2 ggr i implode som jag fattat det.
Så det blev fel även med implode och på samma ställen.
Verkar ligga någon annanstansmen var?




Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-24 18:57:56 - Per Persson

Jo, jag visste att det inte skulle hjälpa. Det var bara tips för snyggare och effektivare kod.

Får du felmeddelandet när någon av kryssrutorna är ikryssad eller bara när ingen är ikryssad?


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-24 20:23:23 - Sören Monvall

OK IC
men det spelar ingen roll för när jag kallar på sidan får jag direkt felmeddelandena och om jag fyller i en, två eller alla kryssrutorna samt ett sökbegrepp så blir det "lyckligtvis" samma fel!
Jag kör koden i Dreamweaver och där kan jag ju kära kodkoll men allt verkar OK.
Resten av koden kollar om kryssrutorna är ifyllda och skriver ut bara värden för de som är ikryssade.
Så vad göra?


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-24 20:45:41 - Per Persson

Har du register_globals aktiverat på servern? Om inte (eller om du inte vet), pröva att lägga till raden

extract($_POST);

i början av skriptet.


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-24 21:22:13 - Sören Monvall

register_globals = Off
Jag la in
<code>
extract($_POST);
</code>
före implode men inte hjälpte det!


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-24 21:52:43 - Per Persson

Då vill jag att du lägger in dessa rader, kryssar i en eller ett par rutor, skickar formuläret och sedan visar mig vad som har skrivits ut av dem:

echo '<pre>'; 
print_r($_POST); 
echo '</pre>';


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-25 00:42:08 - Sören Monvall

Ja det blev i vart fall något.

Array
(
)


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-25 09:18:40 - Per Persson

Hade du då kryssat i någon kryssruta eller skrivit något i textrutan?


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-25 11:16:36 - Sören Monvall

Jag har gjort alla varianter och dessutom flyttat runt de tre kodraderna i scriptet men ingen förändring. En sak jag upptäckte nu var att i URL så blir det olika beroende på om jag fyller i "Födelseår" elle ej. Så här ser det ut utan födelseår.
<code>
http://localhost/Kallsok2.php?searchitem[]=Familjnr&searchitem[]=Helnamn&where=Rolf
</code>
Med "Födelseår" ikryssat så blir det såhär:
<code>
http://localhost/Kallsok2.php?searchitem%5B%5D=Familjnr&searchitem%5B%5D=Helnamn&searchitem%5B%5D=F%F6delse%E5r&where=Rolf
</code>
Men det är väl så att våra svenska ö och å ställer till det kan jag tro
Den ska ju skriva ut vilka fält som sökts, men det gör den inte heller.


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-25 19:58:47 - Per Persson

Åh... nu ser jag... Du har två form-märken:
<code>
<form>
<h4>Sök efter:</h4>
<form method="POST" action="Kallsok2.php">
</code>

Det är det första som används. Eftersom method inte är angivet på det, används GET.

Plocka alltså bort det första form-märket.


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-25 22:39:29 - Sören Monvall

Ja tänk man inte såg det! Men det första ska vara kvar och sen tar jag bort det andra så det står såhär
<code>
<title>Sök efter Kallbor</title>
</head>
<body>
<form>
<h4>Sök efter:</h4>
<method="POST" action="Kallsok2.php">
<input type="checkbox" name="searchitem[]" value="Familjnr">Familjenr<br>
<input type="checkbox" name="searchitem[]" value="Helnamn">Namn<br>
<input type="checkbox" name="searchitem[]" value="Födelseår">Födelseår<br>
</code>
Jag lät det kodsnuttar du velat lägga till tidigare ligga kvar och då blir resultatet detta när jag kryssar i två rutor, men ingen utskrift av "Rolfar":
<code>
Sök efter:
Familjenr
Namn
Födelseår

Med:
Namnet: Familjnr,Helnamn
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Kallsok2.php on line 38

Array
(
[searchitem] => Array
(
[0] => Familjnr
[1] => Helnamn
)

[where] => Rolf
)

Databasutskrift - Array
</code>
Tar jag sedan bort kodsnuttarna får jag tillbaka båda warningarna såhär:
<code>
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\Kallsok2.php on line 23

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Kallsok2.php on line 38
Databasutskrift -
</code>
Nu verkar i vart fall arryen innehålla de värden jag ger den men jag lyckas inte få ut dom.


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-26 05:09:33 - Per Persson

Så här kan du ju för fan inte ha det:
<code>
<form>
<h4>Sök efter:</h4>
<method="POST" action="Kallsok2.php">
</code>
Det finns inget godkänt element som heter "method". Attributet method skall ligga inne i form-taggen.


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-26 18:12:51 - Sören Monvall

Som jag skrev förut så fungerade det inte med att ta bort första "FORM" men däremot med det andra vilket ju verkade konstigt precis som du skriver. Nu har jag startat om allt och plockat bort första form och då ser det ut som om arrayen fungerar och den skriver ut mina sökbegrepp och svaret blir detta med två kryssrutor ifyllda. Det blir lika med en också förutom att då står det naturligtvis bara en uppgift:

<code>
Familjnr,Helnamn
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Kallsok2.php on line 37

Array
(
[searchitem] => Array
(
[0] => Familjnr
[1] => Helnamn
)

[where] => Rolf
)

Databasutskrift - Array
</code>
Jag har kollat igenom om stor/liten bokstav blivit fel men inte. Tar jag bort ditt tillägg om array-utskrift så skriver den ändå
Databasutskrift - Array
Missar jag något i själva printen?
<code>
$num=mysql_num_rows($result);

mysql_close();

print "<b><center>Databasutskrift - $searchitem</center></b><br><br>";
print "<table cellpadding=2 cellspacing=0 border=1>";
</code>
Vi har ju konstaterat att det finns ngt i arrayen.


Svara

Sv: Invalid argument supplied for foreach() mm

Postades av 2009-01-26 23:08:04 - Per Persson

<b>print "<b><center>Databasutskrift - $searchitem</center></b><br><br>";</b>

$searchitem är en array och då skriver PHP bara ut "Array" när man använder print eller echo.



För att få information om vad som går fel i databasfrågan, ändra
<code>$result=mysql_query( "SELECT $searchit FROM kall where Helnamn LIKE '%$where%'" ); </code>
till
<code>
$sql = "SELECT $searchit FROM kall where Helnamn LIKE '%$where%'";
$result=mysql_query( $sql ) or die(mysql_error() . '<pre>' . $sql . '</pre>');
</code>


Svara

Sv:Invalid argument supplied for foreach() mm

Postades av 2009-01-26 23:59:38 - Sören Monvall

PUUUHHH!!!!
Tack för all hjälp.
Även detta sista löste sig när jag gick igenom koden och upptäckte att jag hade utelämnat ett "E" i "Familjenr" i formuläret.
Nu fungerar det ypperligt.
Det var alltså fler felaktigheter:
<code>
foreach-----blev implod----
extract($_POST)----som man tydli8gen inte ska använda hur som helst
form-------dubblerad
print av söksträngen förbättrad
felstavning i formuläret
</code>

Tack än en gång för din välvilja att hjälpa en pensionär som inte kodat sedan RGPII:s dagar, kanske du inte ens känner till detta språk för IBM-maskiner såsom S38. Men en sak ska man vara klar över.
GE ALDRIG UPP!
Kolla sedan på en problemställning som inte är ett kodproblem utan ett mer generellt som jag ska lägga in senare och rör SELECT upprepad. Ha det!


Svara

Nyligen

  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 876
27 965
271 771
500
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies