Avatar billede Morten Professor
01. november 2015 - 20:53 Der er 34 kommentarer og
1 løsning

Id forespørgelse det ene sted virker det men et andet sted ikke.

Hej Eksperter

Jeg har et problem med et id der ikke vil komme frem.
Men det andet sted virker det fint.

Min kode:

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('INSERT INTO `samlet_pris` (`antal`, `idmain`) VALUES (?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('si', $antal, $idmain);

    /* Sæt værdier på parametrene */
    $antal = $_POST['antal'];
    $idmain = $_POST['varenr2'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}

$colname_rsVare_Salg = "-1";
if (isset($_GET['uk'])) {
  $colname_rsVare_Salg = $_GET['uk'];
}
mysqli_select_db($hellestrik, "SELECT * FROM vare WHERE uk = %s");
$query_rsVare_Salg = sprintf("SELECT * FROM vare WHERE uk = %s ORDER by status DESC", GetSQLValueString($colname_rsVare_Salg, "int"));
$rsVare_Salg = mysqli_query($hellestrik, $query_rsVare_Salg) or die(mysqli_error());
$row_rsVare_Salg = mysqli_fetch_assoc($rsVare_Salg);
$totalRows_rsVare_Salg = mysqli_num_rows($rsVare_Salg);

Det henter jeg min id fra hvor det andet sted virker det fint.
Avatar billede Morten Professor
01. november 2015 - 20:54 #1
Jeg har et problem med et id der ikke vil komme med det rigtige.
Men det andet sted virker det fint.
Avatar billede Morten Professor
01. november 2015 - 21:20 #2
Her er min select

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` = ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $_GET['id'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id);

    /* Hent rækker og udskriv data */
    /*while ($stmt->fetch()) {
        echo $id . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede Morten Professor
02. november 2015 - 08:41 #3
Og den kan godt udskrive alle mine id.

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` > ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $_GET['id'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo $id . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 09:56 #4
#1
>$stmt->bind_param('si', $antal, $idmain);
er du sikker på at antal er en string ??
skal vel se sådan ud
$stmt->bind_param('ii', $antal, $idmain);
så det er et heltal

#3
dette
/* Hent rækker og udskriv data */
/*while ($stmt->fetch()) {
    echo $id . '<br>';
}
/* Luk statement */ <-- her stopper den kommentar du startede foran while

bliver aldrig udført, så du får aldrig fetchet dine data.
i øvrigt, hvad er meningen med sql sætningen ??, hvad vil du opnå ??
du selecter den id, som den skal være lig med.

#4
>Og den kan godt udskrive alle mine id.
ja alle dem der er størrer end den værdi du har i din $_GET['id'];
Avatar billede Morten Professor
02. november 2015 - 10:17 #5
når jeg gør sådan kommer det første tal ud i min database.
/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('INSERT INTO `samlet_pris` (`antal`, `idmain`) VALUES (?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('ii', $antal, $idmain);

    /* Sæt værdier på parametrene */
    $antal = $_POST['antal'];
    $idmain = $_POST['varenr2'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` > ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $idmain;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id);

    /* Hent rækker og udskriv data */
    /*while ($stmt->fetch()) {
        echo $id . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede Morten Professor
02. november 2015 - 10:19 #6
Prøvede at rette med uden
if ($stmt = $hellestrik->prepare('INSERT INTO `samlet_pris` (`antal`, `idmain`) VALUES (?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('ii', $antal, $idmain);

    /* Sæt værdier på parametrene */
    $antal = $_POST['antal'];
    $idmain = $_POST['varenr2'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */


} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede Morten Professor
02. november 2015 - 10:24 #7
virker heller ikke

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` = ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $idmain;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id);

    /* Hent rækker og udskriv data */
    /*while ($stmt->fetch()) {
        echo $id . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 10:34 #8
prøv at lave dette
/* Hent rækker og udskriv data */
/*while ($stmt->fetch()) {
    echo $id . '<br>';
}
om til

/* Hent rækker og udskriv data */
while ($stmt->fetch()) {
    echo $id . '<br>';
}

jeg har fjernet /* foran while, så  $stmt->fetch() bliver udført så længe der er data
Avatar billede Morten Professor
02. november 2015 - 10:49 #9
Der er kun et tal 11 som er det første i min database
Avatar billede Morten Professor
02. november 2015 - 14:23 #10
Det er min input
<input name="idmain" type="hidden" id="idmain" value="<?php echo $id; ?>" />
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 17:30 #11
#9
ikke forstået,

#10
er det dit input data eller output data ??, jeg kan ikke bruge det til noget

(utested)
/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` = ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $idmain;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id);

    /* Hent rækker og udskriv data */
    // while ($stmt->fetch()) {
        $stmt->fetch(); // <-- henter rækken
        echo $id . '<br>';
    // }


    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede Morten Professor
02. november 2015 - 17:43 #12
Det med in og output det er input.

Det med tallet der nu er det f.eks kun 18 der kommer ud af mine 11 til 18 id.

Den komme ikke med de forskellige.
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 18:36 #13
prøv dette
(utested)
   
$idmain = 11; // kan evt være fra en $_GET eller $_POST
/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id` FROM `vare` WHERE `id` >= ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */
    $id = $idmain;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id); // denne varaibel er den du anvender i din fetch

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {       
        echo $id . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}

vil udskrive alle id'er ud der er ligmed eller størrer en 11
Avatar billede Morten Professor
02. november 2015 - 19:21 #14
Så kommer de alle sammen :-)

Jeg har vist nogen problemer med min inset siden den ikke tager de rigtig id.

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('INSERT INTO `samlet_pris` (`antal`, `idmain`) VALUES (?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('ii', $antal, $idmain);

    /* Sæt værdier på parametrene */
    $antal = $_POST['antal'];
    $idmain = $_POST['id'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */


} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Den vil gerne tage id 18 min ikke de andre.
Så for hver enkelte id'er kommer den med det samme id.
Avatar billede Morten Professor
02. november 2015 - 19:46 #15
Hov kom lige til at se noget I min form:

<form action="<?php echo $editFormAction; ?>" id="indkoeb" name="indkoeb" method="POST">
Hvad skal der mon stå i action
Avatar billede Morten Professor
02. november 2015 - 19:52 #16
Lige meget der behøver ikke at stå noget i..
Men det andet forstår jeg ikke hvor vil den kun komme ind med det ene id.
Avatar billede Morten Professor
02. november 2015 - 20:07 #17
Man jeg bare ikke god til det her:

/* Select et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT id, vare, farve, matriale, antal, dato, status, pris FROM `vare` WHERE `id` >= ?')) {

    /* Bind parametre */
    $stmt->bind_param('ssi', $id, $vare, $farve, $matriale, $antal, $dato, $status, $pris);

    /* Sæt værdier på parametrene */
    $id = $_POST['id'];
    $vare = $_POST['vare'];
    $farve = $_POST['farve'];
    $matriale = $_POST['matriale'];
    $antal = $_POST['antal'];
    $dato = $_POST['dato'];
    $status = $_POST['status'];
    $pris = $_POST['pris'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id, $vare, $farve, $matriale, $antal, $dato, $status, $pris);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo $id . $vare . $farve . $matriale. $antal. $dato . $status . $pris . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 20:28 #18
#14
poster du forskællige id'er ??

/* Sæt værdier på parametrene */
$antal = $_POST['antal'];
$idmain = $_POST['id'];
echo $antal . " " . $idmain;
/* Eksekver forespørgslen */


#17
skal vel se sådan ud
(utested)
   
/* Select et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT id, vare, farve, matriale, antal, dato, status, pris FROM `vare` WHERE `id` >= ?')) {

    /* Bind parametre */
    // antallet af spørgsmåls tegn skal passe til antallet af parameter her
    $stmt->bind_param('i', $post_id);

    /* Sæt værdier på parametrene */
    $post_id = $_POST['id'];   

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    // skal bindes i sammen rækkefølge som de er selected, og antalllet skal være det sammen
    // de behøver dog ikke at hedde det sammen som i databasen, men det er praktisk
    $stmt->bind_result($id, $vare, $farve, $matriale, $antal, $dato, $status, $pris);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo $id . " " . $vare . " " . $farve . " " . $matriale . " " . $antal . " " . $dato . " " . $status . " " . $pris . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede Morten Professor
02. november 2015 - 21:24 #19
ronols kan jeg få dig til at se det på siden side det forgår på, så kan du se hvad jeg mener http://www.webshop.flueopskrifter.dk/oversigt.php?t=3&u=1&uk=3&t=3&privat=62.44.135.217&prisid=62.44.135.217

Det er min ip der står der så det skal du ikke tage dig af.
Men du skal trykke på "Test knap(webmaster)" Så kan du se hvad der sker.
Avatar billede Morten Professor
02. november 2015 - 21:26 #20
Jeg er ved at lave så man ikke behøver at skrive antal hvis det bare er en flue det skal være. Det er bare test knap, så jeg kan gå videre med det.
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 22:34 #21

<input name="ip" type="hidden" id="ip" value="79">
<input name="id" type="hidden" id="id" value="17">
<input name="billede" type="hidden" id="billede" value="Final Shrimp ala Moeller.jpg">
<input name="antal" type="hidden" id="antal2" value="1">
<input name="idmain" type="hidden" id="idmain" value="">
<input type="submit" name="button" id="button" value="Test knap(webmaster)">
             
.........................

<!--  denne blok vinder hver gang, da det er den sidste -->
<input name="ip" type="hidden" id="ip" value="79">
<input name="id" type="hidden" id="id" value="18">
<input name="billede" type="hidden" id="billede" value="Orange the yellow shrimp.jpg">
<input name="antal" type="hidden" id="antal2" value="1">
<input name="idmain" type="hidden" id="idmain" value="">
<input type="submit" name="button" id="button" value="Test knap(webmaster)">


             
ved hurtigt at kigge på din HTML, kan jeg sige, den skal valideres.
hvordan tester du hvilke knap der er trykket ??
skulle idmain ikke have en value ??
skulle hver blok ikke være en form ??,
som det er nu submitter du hele tabellen, og sidst indlæste navn af en variabel vinder, dvs den nederste blok vinder hver gang, så ligegyldigt hvilke knap du trykker på er det altid den nederste bloks data der sendes, i ASP ville det have været opfattet som et array, men ikke i PHP
Avatar billede Morten Professor
02. november 2015 - 22:54 #22
For det første 1000 tak for du kiggede på det.

Hvad betyder valideres "fornyes" "ikke så god til det med fremmedesprog"
Skal det siges jeg skal kode mit system om?

# Skulle hver blok ikke være form = Jeg har lavet en while så de alle komme op med hver deres id, og med tekst og det hele.
Avatar billede olsensweb.dk Ekspert
02. november 2015 - 23:20 #23
>Hvad betyder valideres "fornyes" "ikke så god til det med fremmedesprog"
check dette link
http://validator.w3.org/check?verbose=1&uri=http://www.webshop.flueopskrifter.dk/oversigt.php?t=3&u=1&uk=3&t=3&privat=62.44.135.217&prisid=62.44.135.217

># Skulle hver blok ikke være form = Jeg har lavet en while så de alle komme op med hver deres id, og med tekst og det hele.
alle dine blokke ligger i 1 form, det er derfor du får sendt id=18 hver gang

noget ala dette
(utested)
   
<table style="width:100%">
  <tr>
  <form action="#" method="post">
  <input type="hidden" name="id" value="15">
 
  <td><input type="text" name="firstname"></td>
    <td><input type="text" name="lastname"></td>
    <td><input type="submit" name="send"></td>
    </form>   
  </tr>
  <tr>
  <form action="#" method="post">
  <input type="hidden" name="id" value="20">
  <td><input type="text" name="firstname"></td>
    <td><input type="text" name="lastname"></td>
    <td><input type="submit" name="send"></td>
    </form>   
  </tr>
</table>

her submittes hver blok for sig selv
Avatar billede Morten Professor
03. november 2015 - 06:48 #24
Hej Ronols

1000 Tak for al den hjælp til at få løst mysteriet.
Jeg syntes du altid hjælper rigtig meget, og får løst mine problemer med den side laver, når jeg kommer ind i noget.
Og det skal du have tak for.

Vil du sende et svar.

Med venlig hilsen
Morten
Avatar billede Morten Professor
03. november 2015 - 06:49 #25
*side jeg laver
Avatar billede Morten Professor
03. november 2015 - 09:48 #26
Og nu har jeg fået det lavet så det virker ;o) 1000 tak endnu en gang
Avatar billede Morten Professor
03. november 2015 - 09:57 #27
Ah nu kommer kommer det ikke på forsiden.
Kun når jeg har trykket på den test knap.
Hvad sker der lige :-(
Avatar billede Morten Professor
03. november 2015 - 10:02 #28
Så fik jeg det til at virke ;-)
Avatar billede olsensweb.dk Ekspert
03. november 2015 - 10:37 #29
du får et svar her.

hvis du bare skal hente alle rækker er der ikke nogle grund til at bruge en where i din sql, men ud over det så var det fornuftigt lige at prøve at binde en variabel
(utested)
/* Select et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT id, vare, farve, matriale, antal, dato, status, pris FROM `vare`)) {
    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    // skal bindes i sammen rækkefølge som de er selected, og antalllet skal være det sammen
    // de behøver dog ikke at hedde det sammen som i databasen, men det er praktisk
    $stmt->bind_result($id, $vare, $farve, $matriale, $antal, $dato, $status, $pris);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo $id . " " . $vare . " " . $farve . " " . $matriale . " " . $antal . " " . $dato . " " . $status . " " . $pris . '<br>';
    }

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
Avatar billede olsensweb.dk Ekspert
03. november 2015 - 10:37 #30
her kommer svaret
Avatar billede Morten Professor
03. november 2015 - 10:51 #31
Du havde endelig fortjent mere så meget arbejde du har lagt i at hjælpe mig.

Jeps har bundet den, så der ikke kommer andre fra andre steder.
Avatar billede Morten Professor
03. november 2015 - 11:01 #32
undskyld men har lige et spørgsmål til det her $idmain = $_POST['id'].''.$_SERVER['REMOTE_ADDR'];
hvorfor virker det ikke
Avatar billede Morten Professor
03. november 2015 - 12:46 #33
Det med isolere den hvordaan gør man det alt kommer på forsiden selvom jeg giver den et id som hedder uk ved WHERE
Avatar billede Morten Professor
03. november 2015 - 12:53 #34
undskyld fandt ud af det, brugte GET.

Men det med $_POST['id'].''.$_SERVER['REMOTE_ADDR'];
Kan simpelhen ikke finde id.
Har prøve næsten alt og for sig selv $id GET dure ikke, POST heller ikke.
Hvad skal jeg gøre?
Har prøvet at sætte min SELECT tæt på INSERT. Men stadig hjælper det ikke.
Avatar billede Morten Professor
03. november 2015 - 14:50 #35
$idmain = $id.''.$_SERVER['REMOTE_ADDR']

Når jeg udskriver kommer den kun med ip
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester