Avatar billede andeershansen Nybegynder
16. februar 2009 - 23:27 Der er 19 kommentarer og
1 løsning

Database søgning

Hejsa.
Jeg har et script som gerne skulle søge i en database med bilinfo og så finde alle biler der har en pris = en pris indtastet i en form.
Jeg kan bare ikke få det til at virke. når jeg trykker søg sker der ingenting....
Er der nogen der kan se hvad fejlen er? :) Er rimelig ny i php så det skulle ikke undre mig hvis det var noget meget enkelt

På forhånd tak Anders :)



CONFIG.PHP

<?php
$conn = mysqli_connect ("localhost","root","1234","abh");
?>


INDEX.PHP

<?php
include("config.php");
if($spris){
echo "$conn";
$foresp = mysqli_query("SELECT * FROM bilerdb WHERE pris = '".$_POST['spris']."' ");
echo 'mysqli_num_rows($foresp) . "Forekomster fundet <br><br>"';
while(mysqli_fetch_array($foresp)){
echo "$model";
echo "$pris";
echo "$maerke";
}
} else {
echo '<form action="index.php" method="post">';
echo '<table>';
echo '    <tr>';
echo '        <td>';
echo 'Pris:';
echo '        </td>';
echo '        <td>';
echo '<input name="spris" type="text" />';
echo '        </td>';
echo '    </tr>';
echo '    <tr>';
echo '        <td>';
echo '        </td>';
echo '        <td><center>';
echo '<input type="submit" value="Søg" />';
echo '        </center></td>';
echo '    </tr>';
echo '</table>';
echo '</form> ';
};
?>
Avatar billede psychopixi Nybegynder
16. februar 2009 - 23:52 #1
Hvis jeg forstår din problemstilling ret skal du vel bruge noget i retningen af:
<?php
while($r=mysqli_fetch_array($foresp)){
$model = $r["model"];
$pris = $r["pris"];
$maerke = $r["maerke"];
echo "$model, $pris, $maerke<br/>";
}
?>
Avatar billede majbom Novice
17. februar 2009 - 09:51 #2
hvad gør den og hvad gør den ikke?

kommer den ind i if'en eller else'en?

du bruger $_POST[] i din query men ikke i if'en hvor du tjekker om $spris er sat.

du skal heller ikke have et semikolon efter din } i slutningen.
Avatar billede andeershansen Nybegynder
17. februar 2009 - 15:46 #3
Har ændret i scriptet som i begge har foreslået, og når jeg nu indtaster i søg feltet og trykker søg så forsvinder feltet (hvilket det jo også skal) men der bliver bare ikke vist noget fra min database ...
Scriptet ser nu sådan ud


<?php
include("config.php");
if($_POST['spris']){
$foresp = mysqli_query($conn, "SELECT * FROM bilerdb WHERE pris = '".$_POST['spris']."' ");
while($result=mysqli_fetch_array($foresp)){
$model = $result["model"];
$pris = $result["pris"];
$maerke = $result["maerke"];
echo "$model, $pris, $maerke<br/>";
}
} else {
echo '<form action="index.php" method="post">';
echo '<table>';
echo '    <tr>';
echo '        <td>';
echo 'Pris:';
echo '        </td>';
echo '        <td>';
echo '<input name="spris" type="text" />';
echo '        </td>';
echo '    </tr>';
echo '    <tr>';
echo '        <td>';
echo '        </td>';
echo '        <td><center>';
echo '<input type="submit" value="Søg" />';
echo '        </center></td>';
echo '    </tr>';
echo '</table>';
echo '</form> ';
}
?>
Avatar billede majbom Novice
17. februar 2009 - 15:59 #4
har du prøvet at udskrive mysqli_error eller num_rows?
Avatar billede psychopixi Nybegynder
17. februar 2009 - 16:04 #5
Hvad hedder kolonnerne i din database tabel? -- de skal jo stemme overens med hvad der står i $r["kolonne"]...
Avatar billede andeershansen Nybegynder
17. februar 2009 - 16:20 #6
Det kommer ingen errors når jeg skriver mysqli_error();

Det er de felter jeg har i min database. Alle navnene på felterne er skrevet med små bogstaver som i mit script. id, maerke, model, aargang, km, andet, dato, pris, stand.
Avatar billede psychopixi Nybegynder
17. februar 2009 - 16:29 #7
prøv inde i while løkken at skrive:
print_r($r);
Avatar billede majbom Novice
17. februar 2009 - 16:30 #8
prøv:

echo $conn->error;
Avatar billede andeershansen Nybegynder
17. februar 2009 - 16:48 #9
Skriver jeg print_r($r); i while lykken sker der ingenting ...

Har skrivet echo $conn->error; lige efter min if.
når jeg kører scriptet og trykker søg får jeg følgende errors :

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\soeg\index.php on line 14 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\wamp\www\soeg\index.php on line 15
Avatar billede andeershansen Nybegynder
17. februar 2009 - 16:50 #10
Glemte lige at jeg havde slettet $conn i min query.
Har indsat det igen og den viser ingen errors, men den virker stadig ikke .
Avatar billede psychopixi Nybegynder
17. februar 2009 - 17:01 #11
Hvis print_r($r) ikke gier noget resultat - må grunden være en af følgende:
1) der er noget i vejen med forbindelsen
2) der er ingen resultater til din query
3) du har ikke startet MySQL serveren i wamp
Avatar billede andeershansen Nybegynder
17. februar 2009 - 17:18 #12
Hmm jeg syntes virkelig det er underligt.

1) Syntes det lyder mest sandsyneligt men kan bare ikke regne ud hvad der er i vejen :s

2) har tilføjet en "række" eller hvad man nu kan kalde det i mysql hvor en af dem har 8700 som pris og hver gang jeg har testet scriptet har jeg søgt efter 8700 så det burde heller ikke være det?

3) Mysql serveren i wamp er startet, alt andet php jeg har som bruger database virker ihvertfald.
Avatar billede psychopixi Nybegynder
17. februar 2009 - 17:26 #13
Hmm..

Prøv:
print_r($_POST['spris']);
Avatar billede andeershansen Nybegynder
17. februar 2009 - 18:01 #14
Skriver jeg print_r($_POST['spris']); lige før min while lykke viser den den indtastede pris når jeg trykker søg.
Skriver jeg den i min while lykke viser den ingenting.
Avatar billede psychopixi Nybegynder
17. februar 2009 - 18:10 #15
Det virker som et højst besynderligt problem.
Prøv at se hvilken forskel det gør, hvis du definerer en variabel med prisen istedet:

<?php
$pris = $_POST["spris"];
if($pris){
$foresp = mysqli_query($conn, "SELECT * FROM bilerdb WHERE pris = '$pris' ");
while($result=mysqli_fetch_array($foresp)){
...
?>
Avatar billede andeershansen Nybegynder
17. februar 2009 - 18:12 #16
Har jeg også prøvet på og det gør ikke den mindste forskel :(
Avatar billede andeershansen Nybegynder
17. februar 2009 - 18:33 #17
Nu er det endelig lykkedes mig at få det til at virke :D
Det værste af det hele er at jeg ikke har den mindste ide om hvad jeg har gjort for at få det til at virke ;p har siddet og roddet med en masse og pludselig så virkede det
Avatar billede psychopixi Nybegynder
17. februar 2009 - 18:37 #18
Hehe:)

Blot super at det virker;D
Avatar billede andeershansen Nybegynder
17. februar 2009 - 19:23 #19
Hvis du smider et svar psychopixi så får du point :)
Du har trods alt gjort et godt forsøg på at hjælpe :D
Avatar billede psychopixi Nybegynder
17. februar 2009 - 19:27 #20
Hehe ok:) Tak;D
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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