Du skal så overveje om du vil sende dyreart og varenavn med fra side 1 eller om du på side 2 vil lave sådan at du trække alle info ud om produkterne (hvis id'er du jo har) og så opretter ny rækker i din tabel.
ok, det forstår jeg, men jeg vil gerne "ordne" det hele på en side, så udtrækket er p.t i en form som så udskriver måske 10 linier. Ideen er at udfra udtrækket som før nævnt, skal brugeren indtaste vægt på den enkelte enhed (varenavn), og måske kun i nogle af vægtfelterne, herefter skal "han" trykke på ok og formen/værdierne bliver smidt i hver sin tabel med nyt id, således at der kan arbejdes videre med værdierne
INSERT INTO <table> VALUES (<field1>,<field2>),(<field1>,<field2>)..... Men den skal jo være afhængig af hvormange linier der bliver skrevet ud i min query, så hvordan får jeg den til at regne ud hvormange (<field1>,<field2>)der er brug for ?
Jeg bokser stadig med mit problemos? Det er fordi indput feltet´s name er et array, og det kan jeg ikke finde ud af at få puttet rigtigt ind ? echo " <td align=\"center\"><input type=\"text\" name=\"vagt[".$row["id"]."]\" size=\"12\"></td>\n";
Det er værdien der bliver indtastet i input der skal tælles så jeg kan finde ud af hvormange: INSERT INTO <table> VALUES (<field1>,<field2>),(<field1>,<field2>) der skal laves ?
Lidt mere konkret: efter jeg har indtastet i formularen udskriver den f.eks: [vagt] => Array ( [1] => 1 [2] => 2 [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => ) Altså der er kun værdier i array 1 og 2, og der er så summen 2 jeg har brug for for at komme videre, hvis jeg prøver med count er summen jo 11 ?
Du kan evt bruge funktionen: isset til at se om der er en værdi i vagt. F.eks. kan du løbe dem igennem med foreach Og så tjekker om isset() hvis ja, smid værdien i et array! Jeg bruger ofte arrays til det, for så kan jeg til sidst lave:
Først vil jeg kopiere: <id>,<leverandor_pnr>,<raavare_refnr>,<sporings_ark>,<slagtervare_nr>, <varenavn>,<dyreart>,<vagt>,<oprettet_dato>, <status>, <sidst_redigeret> 2 gange (fordi der er 2 variabler arrayet) så sql sætningen kommer til at se således ud: INSERT INTO <ref_lager> VALUES (<id>,<leverandor_pnr>,<raavare_refnr>,<sporings_ark>,<slagtervare_nr>, <varenavn>,<dyreart>,<vagt>,<oprettet_dato>, <status>, <sidst_redigeret> ),(<id>,<leverandor_pnr>,<raavare_refnr>,<sporings_ark>,<slagtervare_nr>, <varenavn>,<dyreart>,<vagt>,<oprettet_dato>, <status>, <sidst_redigeret> )
Og [5] skal så ind som <slagtervare_nr> De andre variabler har jeg styr på... mit problemos er at kopiere alle <felterne> i sql sætningen, med det antal der er i arrayet..
Hvorfor nøjes du ikke med at lave en tabel som indeholder vare_id og slagtervare_nr? Hvis du gemmer de 2 id'er, vil du altid kunne finde resten via simpel SQL.
Når jeg skriver 4 i 2 felter på side1 og klikker submit så sender den følgende til side 2: ------------------------ [task] => ok [vagt] => Array ( [5] => 4 [6] => 4 ) [sporingsark_nr] => 1052 [raavare_refnr] => 87654325-987 [status] => 1 [send] => Opdater sporingsliste ------------------------ Det er også fint, Array [5] og [6] vil jeg så gerne bruge til at hente de respektive slagtervare i DBén og $antal = 2 fordi der kun er værdier 2 steder i arrayet, det er også fint. Men jeg kan ikke hente [5] ud ??
her er side 2´s kode.... // checker arrayet foreach($_REQUEST["vagt"] as $key => $value) { if($value == "") { unset($_REQUEST["vagt"][$key]); } } $new_array = array_values($_REQUEST["vagt"]);
// tæller antal variabler i array $antal = count($new_array);
// Henter slagtervare i DB $hent_slagtervare = mysql_query("SELECT id,varenavn,dyreart
FROM slagtervare WHERE id=$_REQUEST[vagt] <<<<<<<<<<<< Her knækker filmen ?
"); if (mysql_num_rows($hent_slagtervare) > 0) { while($row_slagtervare = mysql_fetch_assoc($hent_slagtervare)) {
Din måde at få vagt og id på, kunne være: $new_array = array(); foreach($_POST["vagt"] as $key => $value) { if(isset($value)) { $new_array[$key] = $value; } } //$new_array indeholder nu kun de vagt med en værdi!
Jamen der skal lidt motivation til syntes jeg :-) og jeg vil så gerne videre, jeg sider som en lille hundevalp og prøver og prøven men intet virker......
Ok, men hvordan henter jeg så arrayet´s nr ud for at bruge det i sql sætningen ? Array ( [5] => 2 <<<<< [5] vil jeg gerne hente ud ? [6] => 3 [8] => 4 )
:-( der kommer stadig i sin fulde længde: [vagt] => Array ( [5] => 4 [6] => 5 [8] => [10] => [15] => [16] => [18] => [19] => ) ----------------------
der må helst ikke blive lavet et nyt array fordi arrayet starter som følger: name=\"vagt[".$row2[slagtervare_id]."]\" så når jeg henter det ud med $_request, så har det det "originale nr" og dette virker fint: foreach($_REQUEST["vagt"] as $key => $value) { if($value == "") { unset($_REQUEST["vagt"][$key]); } } $new_array = array_values($_REQUEST["vagt"]);
som giver følgende udskriv: [vagt] => Array ( [5] => 4 [6] => 5 )
Du har jo stadig key og value gemt i $_REQUEST["vagt"] Den kan du igen løbe igenne med foreach($_REQUEST["vagt"] as $key => $value) { echo "KEY : " . $key . " - VALUE : " . $value . "<br>"; }
Men jeg forstår detsværrre stadig ikke hvad <> bruges til? Dem har jeg ikke set i MYSQL før! Er det noget du skal bruge? Eller følger jeg bare slet ikke med?
Jeg tror du har misforstået en smule. Test denne: $values=""; foreach($_REQUEST["vagt"] as $key => $value) { $values.="(".$key.",'".$value."'),"; } $values=substr($values,0,-1); // to remove last comma $query="insert into table name values $values"; $result=mysql_query($query);
Det er disse variabler der skal ind, skal de så "bare" flettes med ovenstående ? id raavare_refnr sporings_ark slagtervare_nr varenavn dyreart vagt oprettet_dato status sidst_redigeret
De skal passe, så de kommer på de pladser hvor du vil have dem i din database. Hvis f.eks. du har en tabel med felterne: brugernavn, kodeord, alder, email Så skal du jo indsætte tingene i denne rækkefølge: artico, hemmeligt, XX, exp@test.dk
Nu virker det kanon!! bortset fra varenavn at det rigtige varenavn ikke kommer med ind i dbén, den putter det sidst valgte varenavn ind ? Jeg har prøvet at fange det med session etc. sådan ser det ud ?
// Henter slagtervare i DB $key_array = array_keys($_REQUEST["vagt"]); $hent_slagtervare = mysql_query("SELECT * FROM slagtervare WHERE id IN (" . implode(",",$key_array) . ")");
Problemet er du løber din foreach igennem flere gange. $_SESSION['varenavn'] vil kun indeholde det sidste navn! Du skal evt bruge et array: Prøv: $mitArray = array(); while($row_slagtervare = mysql_fetch_assoc($hent_slagtervare)) {
Hvis jeg har sat det rigtigt ind, gir det samme resultat = Kun sidste værdi i arrayét ? ----Nu ser det således ud: // Henter slagtervare i DB $key_array = array_keys($_REQUEST["vagt"]); $hent_slagtervare = mysql_query("SELECT * FROM slagtervare WHERE id IN (" . implode(",",$key_array) . ")");
// Henter slagtervare i DB $key_array = array_keys($_REQUEST["vagt"]); $hent_slagtervare = mysql_query("SELECT * FROM slagtervare WHERE id IN (" . implode(",",$key_array) . ")");
Jeg forstår.. Men som du sikkert kan fornemme, er jeg nybegynder og havde en ide om, at det var det rigtige for også selv, at kunne følge med, og checke mig selv undervejs :-)
Nej, men du kan lære meget ved at prøve dig frem som du allerede gør. Men måske du kan finde kurser på diverse kursus-steder. Det jeg kan, har jeg lært på datamatiker-uddannelsen.
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.