Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 1751
Driver med et lite prosjekt til jobb kollegaene
Det er et semi automatisert vin lotteri/øl lotteri..

Tingen er at hun som driver det i papir form i dag går av snart, og vi ønsker å videreføre dette, men vi har ikke tid til å løpe rundt på hele bedriften med tall rekken.
Jeg har laget en tabell med 1-100 numererte textboxes. En skriver da inn navnet i 5 ønskede nummer.
Disse blir skrevet til min database MySql. Alt her ok!

Men, så er det returen av disse verdiene.
Jeg ønsker ved load av index.php at di nummerene som er blitt skrevet inn med navn vises i riktig textbox og settes til "Disable"

Dette har jeg ikke fått til.


Denne henter fra databasen:

api2.php

Kode

    <?php 

  //--------------------------------------------------------------------------
  // 1) Connect to mysql database
  //--------------------------------------------------------------------------
  include 'db.php';


$return_arr = array();

$fetch = mysql_query("SELECT * FROM user"); 

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
    $row_array['1'] = $row['name'];
    $row_array['2'] = $row['name2'];

    array_push($return_arr,$row_array);
}

echo json_encode($return_arr);

?>
Så bruker jeg getJSON får å hente inn til index.php:

Kode

<script>
$.getJSON("api2.php", function (data) {
    $.each(data, function (key, value) {    

      $('#l1').val();
      $('#l2').val();
    });
});[
Deretter vil jeg ha hver verdi i tillhørende textbox i index.php:

Kode

<input type="text" name="l1" id="l1" />
<input type="text" name="l2" id="l2" />
Tror jeg må finne riktig verdi her?:

Kode

$('#l1').val(???);
Trodde jeg gjøre noe sånt: :

Kode

$('#l1').val(echo "'$name'")
Hjelp tas i mot med takk.
Sist endret av Gizmo; 11. mars 2015 kl. 23:22.
Overskuddsmateriell
Mottar JS data'ene fra php fila så dette er ett JS problem?
Jeg tipper grovt, men noe sånt

Kode

$.getJSON("api2.php", function (data) {
      $('#l1').val( data[0][1] ).prop('disabled', true);
      $('#l2').val( data[0][2] ).prop('disabled', true);
});
Du må nesten se på dataene du får tilbake, noe du gjør i konsollen slik

Kode

$.getJSON("api2.php", function (data) {
    console.log( data );
});
Gizmo's Avatar
Trådstarter
Sitat av adeneo Vis innlegg
Jeg tipper grovt, men noe sånt

Kode

$.getJSON("api2.php", function (data) {
      $('#l1').val( data[0][1] ).prop('disabled', true);
      $('#l2').val( data[0][2] ).prop('disabled', true);
});
Du må nesten se på dataene du får tilbake, noe du gjør i konsollen slik

Kode

$.getJSON("api2.php", function (data) {
    console.log( data );
});
Vis hele sitatet...
Fantastisk. Det var det jeg ville.
Takker så mye

Men, nå ser jeg det dukket opp et nytt problem jeg ikke hadde tenkt på.
Viss jeg skriver navnet mitt i kun Textbox 1, disabler den også textbox 2 når den returnerer verdien
Tenker jeg da må hindre den i å skrive til databasen viss textbox Empty .?

Jeg bruker dette scriptet for å sende data til databasen:

Kode

<?php
     // dbname  -  texbox id

        include_once('db.php');


        $name = $_POST['l1'];
        $name2 = $_POST['l2'];


        if(mysql_query("INSERT INTO user VALUES('$name', '$name2')"))

        echo "Takk for din deltagelse.<br>Trykk neste for å komme tilbake til listen"; 
 else
        echo "En feil har oppstått.<br>Trykk neste for å prøve på nytt";

        
?>
Er ikke helt sikker på om jeg forsto det, men du kan prøve

Kode

$.getJSON("api2.php", function (data) { 
      $('#l1').val( data[0][1] );
      $('#l2').val( data[0][2] );
      $('#l1, #l2').prop('disabled', function() {
            return $.trim(this.value).length > 0;
       }); 
});
Gizmo's Avatar
Trådstarter
Ja du kan tingene dine

Men jeg har et problem som skyldes min uvitenhet
Dette har tydeligvis noe med min måte å skrive til databasen på.

Jeg har laget 2 columns: "name" og "name2" i db som jeg vil skal være linket til mine 2 textboxer

Dvs. at viss jeg skriver navnet mitt i den textbox1, så skal dette lagres i "name" og verdien returneres til textbox1 i index.php ved load.

Det virker nå ved din hjelp adeneo.

Men, textbox2 blir da også til skrevet til "name2" selv om textbox2 er tom
Da kan en ikke skrive inn i textbox2 fordi db har opretter en ny row.

Vanskelig å forklare, men ser ut til at jeg må sette meg litt mer inn i hvordan db fungerer.

Men takk så lang adeneo
Jeg har litt vanskelig for det, men du har en tabell med navn "user" hvor du har to kolonner.

Du oppretter en rad med verdier i de to kolonnene ved å bruke

Kode

"INSERT INTO user VALUES('$name', '$name2')"
Du kan selvfølgelig utelukke den sisten verdien, altså $name2, dersom den er tom, men jeg forstår ikke helt hvorfor, skal du skrive til den kolonnen senere må du uansett bruke UPDATE eller noe sånt og lage en annen type spørring.

Dersom problemet er at du får feilmeldinger, undefined, null eller whatever, så kan du selvfølgelig sjekke det

Kode

$name  = isset( $_POST['l1'] ) ? $_POST['l1'] : "";
$name2 = isset( $_POST['l2'] ) ? $_POST['l2'] : "";
Nå vet ikke jeg om dette er noe du har tenkt til å legge ut på nett, men koden ser ut til å være åpen for SQL injection ved å sende POST data som ser noe sånt ut (i prinsippet, ikke testet)

Kode

"?l1=kjell';drop table user;\*"
du bør generelt bruke mysqli eller PDO med prepared statements.
Gizmo's Avatar
Trådstarter
Ja, jeg har fått med meg at jeg bør bruke mysqli eller PDO
Fikk den infoen litt sent i mitt prosjekt.
Men vil gjerne få til dette før jeg forandrer til mysqli
Jeg finner det veldigt lærerikt og nærmer meg noe, men jeg er uffattelig dårlig til å forklare meg..

Prøver igjen
Problemet er at det er bare den første kolumnen som blir returnert til textboxene.

Skriver jeg inn begge, havner begge i textboxene, no prob. Men skriver jeg først en og lagrer, deretter neste, går det ikke.

Dvs. at verdien i eks textbox1 havner i:
tabell: "user" "name" col 1

Så skriver jeg deretter i textbox 2 som havner i:
tabell: "user" "name2" col2

Denne vises da ikke, siden den havner i col2

Så mitt prob blir da at verdiene i i name2 (whatever col) vises ikke
Så om det finnes en måte å vise fra name, name2 whatever column ?
Dersom du skal skrive først i et tekstfelt, og lagre dette, så etterpå skrive i et annet tekstfelt og lagre dette i samme raden, må du først og fremst lage et system hvor du kjenner igjen radene med et eller annet, deretter må du bruke UPDATE dersom raden eksisterer, først da vil name2 lagres i samme raden som den tidligere name1 ble lagret i.
Gizmo's Avatar
Trådstarter
Det gir mening. Takk for tips, skal google litt å se om jeg finner ut av det
Takker