Gå til innhold

Hvordan få tak i riktig tabell php/sql?


Anbefalte innlegg

Jeg har en form som sender over en mengde variabler til en database.

I og for seg grei nok. Men det jeg ikke får til å funke er:

Det skal i formen velges hvilken tabell det skal gjøres endringer på, lag i SQL-setningen.

Hvordan få lagt inn i det lag som jeg vil ha den?

La oss si at jeg har 10 tabeller, de heter lag1, lag2.......lag10.

Det jeg får over fra formen er en variabel $lag som inneholder 1 til 10.

Forsøk noen varianter over emne streng-modifisering men har sikkert ikke funnet riktig variant.

 

 

 

<?php include ("dbcon.php");

$query1 = "UPDATE lag SET Navn = '$Navn', For = '$For', Klasse = '$Klasse'

WHERE Skive = '$Skive' ";

mysql_query($query1)or die("Update table Error: ".mysql_error());;

?>

Lenke til kommentar
Videoannonse
Annonse

Helt riktig! Takker!

 

Hadde forsøkt det samme før da med formen på samme php-side

Fant ut at formen måtte få data før jeg kunne sende den over til UPDATE pga UPDATE sjekke på variabelen $lag med en gang siden ble lastet.

Lenke til kommentar
Gjest Slettet-rXRozPkg

Hvorfor gjør du heller ikke litt om på tabellstrukturen din? Du trenger absolutt ikke 10 tabeller, kun en. Legg til et ID felt, så slipper du lag$lag. F.eks noe slikt:

 

CREATE TABLE lag(
 id INT NOT NULL,
 Navn VARCHAR(255),
 For VARCHAR(255),
 Klasse VARCHAR(255),
 Skive VARCHAR(255),
 PRIMARY KEY (id)
);

Bytt ut VARCHAR(255) med det du hadde fra før.

 

$query1 = "UPDATE lag SET Navn = '$Navn', For = '$For', Klasse = '$Klasse',

Skive = '$Skive' WHERE id = '$lag'";

Endret av Slettet-rXRozPkg
Lenke til kommentar

Jeg liker strukturen jeg har :roll:

 

Det jeg skal oppnå er: adm skal sette opp et antall lag, hvert lag har et antall skiver nummerert fra 1-x, hvert lag har en dato og tid, det er en bestemt tid mellom hvert lag. Det eneste som vises i tabellen etter den innledende oppsettet er altså "skive".

En bruker skal kunne skrive seg inn der det ikke er lagt inn navn fra før, uansett lag og tid. Dette gjør han ved å trykke en link i tabellen, skal komme til en form hvor han kan skrive inn navn, lag ,klasse.

Derfor tror jeg det er mest praktisk å sette opp alle tabellen fra start.

 

Ny nøtt:

Vil bare først presisere at jeg er fersk når det gjelder php, så bær over med meg. Det er heller ikke meningen at jeg skal ha alt servert på et sølvfat...

Jeg har heller ikke rukket å sette meg inn i argumentoverføring, referanser ol om det i det hele tatt eksisterer..

<?php

include("dbcon.php");

include ("globalevars.php");

 

$i=1;

 

for($i;$i<$antallLagSen;$i++){

 

$query = "SELECT * FROM lag$i ORDER BY Skive";

$result = mysql_query($query) or die("DB feil".mysql_error());

while ($Objekt = mysql_fetch_object($result)) {

if($Objekt->Navn==""){//Kun de radene som ikke inneholder navn fra før skal skrives ut:

print ("

<a href=\"meldinnny.php?Skive=$Objekt->Skive&Lag=$i\">$Objekt->Skive, $Objekt->Navn</a><br>

");

}

else {

print("$Objekt->Skive, $Objekt->Navn, $Objekt->Sklag, $Objekt->Klasse<br>");

}

 

}

mysql_free_result($result);

if($query ==""){

echo("Ingen ordrer i databasen.");

}

}

?>

Denne snutten lager altså en utskrift av alle lag og lager en link for de plassene som er ledige.

Disse dataene skal jeg så sende over meldinnny.php som består av følgende:

 

<form name ="skytterForm" action="settInnSkytter.php" method="post">

<INPUT TYPE=HIDDEN NAME="test" VALUE="send-epost">

 

<td> <input type=HIDDEN NAME ="Lag" VALUE= "$_GET[Lag]"></td>

<td> <input type=HIDDEN NAME ="Skive" VALUE="$_GET[skive]"></td>

<td> <input type="text" name="Navn"></td>

<td> <input type="text" name="Sklag"></td>

<td> <input type="text" name="Klasse"></td>

<input type="submit" name="Submit" value="Meld på!">

</form>

 

 

Så endelig til spørsmålet:

 

Kan jeg gjøre det slik jeg har gjort i formen?

Tydligvis ikke, for det er i det minste en syntaks feil.

Det jeg er ute etter er å få tak i følgende:

<a href=\"meldinnny.php?Skive=$Objekt->Skive&Lag=$i

Jeg skal ha tak i verdienen til Skive og Lag

NAME ="Lag" VALUE= "$_GET[Lag]"

NAME ="Skive" VALUE="$_GET[skive]"

 

Etter at formen er utfylt skal den sendes videre til update.php som tar seg av oppdateringen av tabellen samt ny utskrift etter at endrigene er gjort.

Den har jeg klar sånn at det er å fikse formen som nå står for tur.

 

Alle innspill av interesse :D

Lenke til kommentar

Ja jeg fikk sovet på det i natt og da fant jeg vel ut at den måten jeg gjorde det på ikke er særlig fornuftig.

Jeg får heller finne en måte å ta vare på indexene i tabellen og derfra dele opp utskriften.

Men så var det dettte med GET da:

Kan jeg bruke GET til å hente inn verdier til en form(ref mitt forrige innlegg)?

Lenke til kommentar
Gjest Slettet-rXRozPkg

Ja, du kan bruke GET, hvis du har en url som inneholder de variablene du trenger, så for å få dette til å virke:

<input type=HIDDEN NAME ="Lag" VALUE= "$_GET[Lag]">

<input type=HIDDEN NAME ="Skive" VALUE="$_GET[skive]">

 

Da må du ha en URL som er noe slikt:

index.php?Lag=foo&Skive=bar

Lenke til kommentar
Ja jeg har denne urlen som sendes over til formen:

fil.php?Lag=foo&Skive=bar

problemet er at jeg ikke får tak i variablene.

Det var i grunnen det jeg lurte på, altså syntaksen for å gjøre det i formen.

du mener det kanskje rett... men vanligvis er det omvendt: "en form sendes til en url".

Lenke til kommentar

Ja jeg mener å sende data til en form. Finnes sikkert andre måter å gjøre det på..

 

I formen skal det kun kompleteres opplysninger, som jeg nevnte før er det en link fra en tabell eller rad i en tabell. For at jeg skal kunne oppdatere riktig felt etter at brukeren har lagt inn data må jeg huske lag og skive.

Det jeg får ut i formen med de to utskriftene er:

 

Se på alt som er sendt via get; print_r($_GET);

 

Array ( [skive] => 12 [Lag] => 2 ) 2' // Her trykket jeg få skive 12 i lag 2

 

Se på f.eks. "Lag"; echo $_GET['Lag'];

 

' // kun en snutt

 

Som dere ser får jeg sendt over data til formen men jeg klarer ikke å hente de ut.

Lenke til kommentar

Fant det ut etter "litt" knot:

input type="text"NAME ="Lag" VALUE= "<?php echo $_GET[Lag] ?>"

input type="text" NAME ="Skive" VALUE="<?php echo $_GET[skive] ?>"

 

Formen ville altså ha en echo for å ta med seg verdiene.

 

Jeg er stolt over meg selv i dette øyeblikk!

En stor takk til dere alle som hjalp en venn i kampens hete :thumbs:

Lenke til kommentar
Gjest Slettet-rXRozPkg

Dette ville også ha fungert:

echo "<input type=HIDDEN NAME =\"Lag\" VALUE= \"$_GET[Lag]\">";

echo "<input type=HIDDEN NAME =\"Skive\" VALUE=\"$_GET[skive]\">";

 

Det var i grunn denne måten jeg tenkte du kunne gjøre det på når jeg postet tidligere, men måten du fant er også god.

 

 

BTW:

"Litt" knot = mye lært :yes:

Endret av Slettet-rXRozPkg
Lenke til kommentar
Fant det ut etter "litt" knot:

input type="text"NAME ="Lag" VALUE= "<?php echo $_GET[Lag] ?>"

input type="text" NAME ="Skive" VALUE="<?php echo $_GET[skive] ?>"

 

Formen ville altså ha en echo for å ta med seg verdiene.

 

Jeg er stolt over meg selv i dette øyeblikk!

En stor takk til dere alle som hjalp en venn i kampens hete :thumbs:

<?php echo $_GET[Lag] ?>

 

kan forkortes til

 

<?= $_GET[Lag] ?>

 

<?= er <? php echo

Lenke til kommentar
Fant det ut etter "litt" knot:

input type="text"NAME ="Lag" VALUE= "<?php echo $_GET[Lag] ?>"

  input type="text" NAME ="Skive" VALUE="<?php echo $_GET[skive] ?>"

 

Formen ville altså ha en echo for å ta med seg verdiene.

 

Jeg er stolt over meg selv i dette øyeblikk!

En stor takk til dere alle som hjalp en venn i kampens hete  :thumbs:

<?php echo $_GET[Lag] ?>

 

kan forkortes til

 

<?= $_GET[Lag] ?>

 

<?= er <? php echo

 

Kan du forklare littnærmere?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...