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.
  16 1194
Heisann.

Finner ikke ut problemet mitt og henvender meg dermed til Freak.

Problemet er at jeg ikke får hentet ut dataene som jeg ønsker.

Databasen heter: Oppdragstaker
Tabellen heter: bvgs

Slik er tabellen:

Utsolgte | Utleverte
10 10

Jeg vil hente ut de to tallene og sette de til arrays, også echo'e dem ut igjen i tekst. Dette får jeg ikke til ...

Koden så langt

database.php

Kode

<?php
    $pinkode = $_GET['pinkode'];
    $skole = $_GET['skole'];
    $solgteInput = $_POST['solgte'];
    $utleverteInput = $_POST['utleverte'];
    $con = mysql_connect("xxx", "rxxxt", "xxx");
    mysql_select_db("Oppdragstaker", mysql_connect("xxxxxx", "xxx", "xxx"));
    $result = mysql_query("SELECT * FROM brukere WHERE Passord='$pinkode' and Skole='$skole' ");

    if(mysql_num_rows($result)==0) {
        header("Location: index.php?output=feil");
    }
    elseif (isset($utleverteInput) && (isset($solgteInput) && ($utleverteInput != null) && ($solgteInput != null))) { 
        $url = "database.php?pinkode= . " . $pinkode . " . ?skole= . " . $skole . " . ";
        mysql_query("INSERT INTO $skole (Solgte, Utleverte) VALUES ('$solgteInput', '$utleverteInput')");
        $solgte = mysql_query("SELECT Solgte FROM $skole WHERE id = mysql_insert_id)' ");
        $utleverte = mysql_query("SELECT Utleverte FROM $skole WHERE ID = mysql_insert_id ");
        $output = "De nye endringene er lagret.";
        $con = mysql_connect( "xxxxx" , "xxx" , "xxx");

    }

?>

HTML-kode

<html>

    <head>
        <meta http-equiv="Content-Language" content="no-bok">
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <title>Hvoslef og Hohle</title>
    </head>

    <body>

        <p><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                Sammendrag av oppdragstaker<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tilbakemelding: </b><?php if ($output == "null") { echo "Ingen meldinger tilgjengelig."; } else { echo $output; } ?></p>
        <table border="1" width="100%">
            <tr>
                <td width="160"><b>Utleverte</b></td>
                <td width="204"><?php if ($utleverte != null) { echo $utleverte; } else { echo 0; } ?></td>
                <td><form action="<?php $url; ?>" method="post"><input type="text" name="utleverte"></td>
            </tr>
            <tr>
                <td width="160"><b>Solgte</b></td>
                <td width="204"><?php if ($solgte != null) { echo $solgte; } else { echo 0; } ?></td>
                <td><form action="<?php $url; ?>" method="post"><input type="text" name="solgte"></td>
            </tr>
            <tr>
                <td width="160"><b>Gjenværende</b></td>
                <td width="204"><?php if ($gjenverende != null) { echo $gjenvaerende; } else { echo 0; } ?></td>
                <td>Ingen mulighet til å fylle ut denne.</td>
            </tr>
            <tr>
                <td width="160"><b>Utbetaling</b></td>
                <td width="204"><?php if ($utbetaling != null) { echo $utbetaling; } else { echo 0; } ?></td>
                <td>Ingen mulighet til å fylle ut denne.</td>
            </tr>
            <tr>
                <td width="160"><b>Fortjeneste</b></td>
                <td width="204"><?php if ($fortjeneste != null) { echo $fortjeneste; } else { echo 0; } ?></td>
                <td>Ingen mulighet til å fylle ut denne.</td>
            </tr>
        </table>
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input type="submit" value="Send inn ny informasjon"></p>

    </body>

</html>
index.php

HTML-kode

<html>

    <head>
        <meta http-equiv="Content-Language" content="no-bok">
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <title>Hvoslef og Hohle</title>
    </head>

    <body>
        <form action="index.php" method="post">
            <p><b>Skole</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <select size="1" name="skole">
                    <option value="bvgs">Byåsen Videregående Skole</option>
                </select></p>
            <p><b>PIN-kode</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="password" name="pinkode" size="27" value="pinkode"></p>
            <p><b>Logg inn</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="submit" value="Logg inn på siden"></p><br /></form>
                <? echo $output; ?>

    </body>

</html>

Kode

<?php
    if (isset($_GET['output'])) {
        $output = "Du har prøvd å logge deg inn med feil passord eller skole!";
    } 
    if (isset($_POST['pinkode']) && (isset($_POST['skole']))) {
        $pinkode=$_POST['pinkode'];
        $skole=$_POST['skole'];    
        mysql_connect("localhost", "root", "");
        mysql_select_db("Oppdragstaker", mysql_connect("xxxx", "rxooxxxt", "xxxx"));

        $result = mysql_query("SELECT * FROM brukere WHERE Passord='$pinkode' ");
        $result1 = mysql_query("SELECT * FROM brukere WHERE Skole='$skole' ");

        while($row = mysql_fetch_array($result)){
            $attemptPinkode = $row['Passord'];   
        }
        while($row = mysql_fetch_array($result1)) {
            $attemptSkole = $row['Skole'];
        }
        if ($attemptPinkode == $pinkode && $attemptSkole == $skole) {
            header("Location: database.php?skole=".urlencode($skole)."&pinkode=".urlencode($pinkode));
        }
            else {
                echo "Du har enten skrevet feil PIN-kode eller valgt feil skole.";
            }
        }
?>
Er veldig fersk innenfor PHP, HTML, CSS og mySQL så ikke vær redd for å være for forklarende!

Vet at koden er utrolig rotete, dette bør jeg rydde opp i, men er først og fremst ute etter å få løst problemet!
Sist endret av verified; 10. april 2012 kl. 03:36. Grunn: Fjerna passord fra kildekoden.
z0p
uʍop ǝpısdn
z0p's Avatar
Du vet du kan bruke separatorer og operatorer i SQL?

Kode

SELECT solgte, utleverte FROM Table WHERE myid = 1 OR myid = 2
Så slipper du mange unødvendige spørringer

Jeg ser ikke helt hvorfor du vil ha den siste innsatte raden her. Dataene du vil ha tak i har du jo allerede PHP...
verified's Avatar
Trådstarter
Jeg vil ha den siste IDen fordi det er den som skal hentes ut.

Det skal være et system for salg, selgeren skal inn å sende inn hvor mange selgeren har solgt, og dette vil bli oppdatert. Da vil siste inntastede havne som siste ID, eller?
SELECT * FROM bvgs DESC LIMIT 1
Vis hele sitatet...
Noe i den duren? Eller har jeg misforstått helt?
Sist endret av Beis; 10. april 2012 kl. 10:14.
verified's Avatar
Trådstarter
Sitat av Beis Vis innlegg
Noe i den duren? Eller har jeg misforstått helt?
Vis hele sitatet...
Tror kanskje du har gjort det. Skal finne ut hva som står i både tabell "Solgte" og "Utleverte", og ut ifra det jeg har forstått, så velger du alle tabellene?

Fant noe på nett:

Kode

$sql = mysql_query("SELECT * FROM comments WHERE user = 1");
$number = mysql_num_rows($sql);
$i = 1;
   while ($row = mysql_fetch_assoc($sql)) {

   <p>$i. <?php echo $row['comment'] ?></p>

   if($i < $number)
   {
       <div class="border"></div>
    }
   $i++;
}
Men ser ikke helt logikken (uten å ha sett grundig over) i koden overfor, hvordan den skal hjelpe meg med å få ut siste IDen.
Test koden til Beis, og du vil se at den gjør det du ber om (med mindre vi har misforstått deg helt).

SELECT * FROM bvgs DESC LIMIT 1
Henter alle rader i tabellen bvgs, sortert fra bunnen, og begrenset til 1 linje.Mao. siste linje som er lagt til i tabellen.
Dersom du ønsker å spesifisere radene bedre, erstatter du * med radnavn, f.eks
SELECT solgte, utleverte FROM bvgs DESC LIMIT 1

Hvis dette heller ikke stemmer, kunne det ha hjulpet med en litt bedre forklaring på hvordan tabellene er satt opp (f.eks screenshot fra phpMyadmin om du bruker dette).
z0p
uʍop ǝpısdn
z0p's Avatar
Den siste iden i tabellen tilsvarer ikke nødvendigvis siste rad som ble satt inn for den brukeren du håndterer fra en tråd. Du må ta utgangspunkt i at databasen kan ha blitt berørt fra andre steder mellom spørringene.

Database modellen din virker noe merkelig. Har du en tabell for hver skole? Det vil være en mye bedre løsning å legge alle skolene i en tabell...

men jeg skjønner fortsatt ikke hva du vil

Kode

mysql_query("INSERT INTO $skole (Solgte, Utleverte) VALUES ('$solgteInput', '$utleverteInput')");
$solgte = mysql_query("SELECT Solgte FROM $skole WHERE id = mysql_insert_id)' ");
$utleverte = mysql_query("SELECT Utleverte FROM $skole WHERE ID = mysql_insert_id ");
her vil $solgte == $solgteInput og $utleverte == $utleverteInput ikke sant? Så hvorfor hente d ut på nytt når du allerede har verdiene?
mysql_insert_id er vel også en funksjon, og må derfor kalles som en. eksempelvis:

Kode

$utleverte = mysql_query("SELECT Utleverte FROM $skole WHERE ID = mysql_insert_id() ");
Jeg vet ikke om jeg missforstår deg helt her nå.. Om ikke vil jeg påstå tankegangen/designet ditt er litt på viddene.
Hvorfor skal man lage en tabell for hver skole og legge inn en ny rad for hver oppdatering av salg/utlevering?
Slik jeg ser behovet her, burde en tabell med en rad for hver skole være dekkende. Du oppdaterer da utlevering/salg fremfor å legge inn en ny rad for hver gang
Dersom du retter opp i dette slipper du kanskje også unna dette problemet? Da det virker som om du lager deg et problem du egentlig ikke trenger å forholde deg til på grunn av dårlig innfallsvinkel.
verified's Avatar
Trådstarter
Kan godt være jeg er ute på viddene, men her i hvert fall tankegangen oppsummert (endret litt etter innspill fra dere):
Hele opplegget skal utarte seg i et system hvor selgere kan gå inn og oppdatere antall salg. Før de taster inn dette i formen, så skal nåværende salg bli uttrykt.

Så for å gjøre dette trenger jeg vel:

En database med forskjellige selgere.
En tabell med forskjellige skoler. (Kan sette en selger, som en skole istedenfor, det er som regel en selger per skole.)
To rader med salg og utleverte. (Hvor mange de har solgt, og hvor mange produkter de har fått utlevert)

Så kanskje burde gjøre om, slik dere har sagt, til dette hvis jeg forsto rett:
En database med forskjellige skoler.
Innenfor skole igjen, tabeller med solgte og utleverte.

Stemmer dette?

Og ja ... Det var i utgangspunktet en dårlig post, litt for dårlig forklart, men prøver å dra tråden inn på rett spor slik at dere skal forstå.
En tabell med ulike skoler, og info om skolen (om nødvendig) Tenker da ting som navnm plassering, telefonummer, rektor o.s.v.

En tabell med ulike selgere, og info om selgeren

En tabell SelgerSkole - denne tabellen har referanser til skoler og selgere. Og sier hvilke selgere som hører til hvilke skoler. Et slikt system vil kunne støtte at skoler kan ha flere selger -og selgere kan være aktiv på flere skoler. Tilfelle dette blir en nødvendighet senere

En tabell med ulike produkter dere selger.

En tabell som salg - som viser hvilke produkter som er solgt. Antall, til hvilken skole og av hvilken selger. Og en referanse til hvilket produkt. Eventuelt også dato som f.eks. når den ble bestillt.

En tabel "utleveringer", her legger du inn hver gang en produkt blir utlevert. Husk å ha referanse til hvilket salg, antall som er levert (f.eks. om de har kjøpt 100, og dere leverte 50, er dette relevant). Hvilken skole og hvilken selger er ikke relevant - da jeg antar at utleverigner alltid skjer til skolen som bestilte. Om utleveringer kan skje andre plasser burde det kanskje være en egen kolonne for dette. Kanskje data for tidspunktet produktet ble levert?

-----------

Da kan du gjøre som følger:

Når en selger selger noe til en skole:
Legg til en ny rad i "Salg" databasen med info om hvilken skole, hvilket produkt, antall og hvilken selger. Om en selger selger mer enn et type produkt; lag en egen rad for hvert produkt.

Produkt blir levert ut:
Legg til en rad i utleveringer om hvilken bestilling som ble levert ut, og antallet som ble levert.

Da kan man og finne ut info som hvor mange som gjenstår å ble levert, hvilke ordre som er fullstendig leverte o.s.v.

----------------

Anbefaling:
Lek deg litt og med databaser og å skrive spørringer i f.eks. sqlite3 (eller lignende databaseprogrammer), og ikke skriv spørringer i PHP-koden direkte. I hvertfall ikke i begynnelsen.
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av etse Vis innlegg
Anbefaling:
Lek deg litt og med databaser og å skrive spørringer i f.eks. sqlite3 (eller lignende databaseprogrammer), og ikke skriv spørringer i PHP-koden direkte. I hvertfall ikke i begynnelsen.
Vis hele sitatet...
Det er da strengt tatt likegyldig om han bruker mySQL, sqlite, mssql, oracle eller whatever..? men ja et grensesnitt til databsen kan nok være lurt
Sist endret av z0p; 10. april 2012 kl. 15:36.
verified's Avatar
Trådstarter
Det er snakk om bare et produkt, en skole, salg og utleverte.
z0p
uʍop ǝpısdn
z0p's Avatar
Så hvorfor gjøre det vanskelig?
Sitat av z0p Vis innlegg
Det er da strengt tatt likegyldig om han bruker mySQL, sqlite, mssql, oracle eller whatever..? men ja et grensesnitt til databsen kan nok være lurt
Vis hele sitatet...
Enig, jeg er dog bare kjent med sqlite3, og det innebygde systemet. Men finnes sikkert like gode eller bedre systemer enn dette. Men viktigste er å ha en plass som man kan skrive spørringer uten å være avhengig av annen kode for å teste den.
Sitat av verified Vis innlegg
Det er snakk om bare et produkt, en skole, salg og utleverte.
Vis hele sitatet...
Hvorfor ikke bare gjøre det ordentlig med en gang? Du lærer mye av det, og det er alltid viktig å få inn gode vaner når man utvikler systemer. Skal man alltid ta masse snarveier kan man tilegne seg dårlige uvaner. Ikke er et slikt system jeg forklarte så veldig mye mer avansert, selv om det kanskje ser slik ut.
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av etse Vis innlegg
Enig, jeg er dog bare kjent med sqlite3, og det innebygde systemet. Men finnes sikkert like gode eller bedre systemer enn dette. Men viktigste er å ha en plass som man kan skrive spørringer uten å være avhengig av annen kode for å teste den
Vis hele sitatet...
Jeg er absolutt enig i valget av sqlite selv, ville bare kverrulere, og si at sqlite er et bibliotek, men det er er mulig de også distrubuerer et interface med samme navn jeg bruker sqlite titt og ofte til egne prosjekter
Overskuddsmateriell
Jeg vil absolutt annbefale å lage flere tabeller slik etse beskriver her. Da kan man lett lage større joins ol slik at man får inn mye info i en enkelt query.

I tilegg ville jeg lage en kolone som heter "id" med auto increment i alle tabellene som unique key, i eks kjøp og salg er det kansje ikke nødvendig for å joine osv, men meget kjekk om man skal bruke en UPDATE eller DELETE kommando for å forsikkre seg om å ikke slette eller endre på mer enn ønsket.

Anngående å kjøre spørringer opp mot MySQL vil jeg annbefale SQLyog . Den inneholder litt mas om at du bør kjøpe fullverson men de viktige funksjonene.
Denne har også command highlight som gjør det lettere å skrive

Edit, er det bare IDen du skal ha i en kolonne kan du bruke

Kode

SELECT MAX(id) FROM tablename
Sist endret av Bullhill; 12. april 2012 kl. 22:48.
z0p
uʍop ǝpısdn
z0p's Avatar
Det beste er vel å ta utgangspunkt i 3.nf

Jeg ser ikke problemet med å bruke kun en tabell til data her. Det er på ingen måte feil. Kanskje litt kortsiktig tenkt, men enkelt å forholde seg til. Det er nok andre aspekter som er viktigere å fokusere på.
Les om SQL injections