Avatar billede trax Nybegynder
25. juni 2007 - 02:00 Der er 14 kommentarer

søg i database script - problemer med dette.

Jeg har prøvet at skrive et script til at søge efter et "id" nummer i databasen.

Mit script ser sådan her ud: (det er inspireret af 2 andre søge scripts som jeg har prøvet at skrive om til mit behov)

<?php

if ($search)
{

mysql_connect('localhost', 'root');
        mysql_select_db('infostander');
$query = mysql_query("SELECT * FROM saltvand WHERE id='$search' ");
$row_sql = mysql_fetch_assoc($query);
$total = mysql_num_rows($query);
}
   
if($total>0) { 
  while ($row_sql = mysql_fetch_assoc($query))
  { 
    echo $row['id'];
    echo $row['latinsk'];
    echo $row['populair'];
    echo $row['links'];
    echo $row['image']; 
    } 
}
else 
    { 
    echo "Intet resultat.";
       

?>

Jeg har lidt på fornemmelse at det er her det går galt: "if($total>0)"

Altså at "if" ikke bliver "opfyldt" eller noget i den stil.
Avatar billede trax Nybegynder
25. juni 2007 - 02:15 #1
hmm, det er da fordi ($search) ikke bliver "defineret" .. how to?
Avatar billede Slettet bruger
25. juni 2007 - 02:43 #2
Ja som trax siger det er fordi $search ikke blive sat nogen steder.
Er dette kun en del af din kode eller?

og din echo's som skal printe dit dine dataer ud bliver sat på en lang linje, der er hverken mellemrum, en streg eller linjebryd eller anden form for opdeling.

Men prøv at sætte $seach = true; i linje 2.
Og se hvad der sker.
Avatar billede michael_stim Ekspert
25. juni 2007 - 07:41 #3
Evt. if(isset($_GET['search'])){//Hvis den bliver sendt i adresselinien.
Avatar billede jakobdo Ekspert
25. juni 2007 - 09:14 #4
Trax: Jeg har kigget på din kode her på siden det sidste stykke tid, og det ligner du tidligere har været hos en udbyder med GLOBALS ON, det vil sige:

$_POST['noget']
$_GET['noget']
$_SESSION['noget']
bare kan kaldes med:
$noget

Det ser ikke ud til at virke mere, så hvis du har en form og poster data, så skal du bruge: $_POST['search'] og kommer det fra adresselinien/URL'en, så bliver det $_GET['search'] (som Michael_stim også er inde på)
Avatar billede trax Nybegynder
25. juni 2007 - 11:10 #5
Det hele bliver kørt på WAMPserver lokalt.

Jeg har prøvet både med $search = true; og med if(isset(.....
Uden resultat.

Jeg var også kommet frem til følgende:
<?php

if(isset($_POST['search']))
{

mysql_connect('localhost', 'root');
        mysql_select_db('infostander');
$query = mysql_query("SELECT * FROM saltvand WHERE id='$_POST' ");
$row_sql = mysql_fetch_assoc($query);
$total = mysql_num_rows($query);

}
   
if($total>0) { 
  while ($row_sql = mysql_fetch_assoc($query))
  { 
    echo $row['id'];
    echo $row['latinsk'];
    echo $row['populair'];
    echo $row['links'];
    echo $row['image']; 
    } 
}
else 
    { 
    echo "Intet resultat.";
    echo $_POST [search]; //For at teste om input fra formen kommer, det gør det, søgeresultatet bliver udskrevet her.
       

?>
Avatar billede trax Nybegynder
25. juni 2007 - 11:10 #6
rettelse: det er ikke søgeresultatet der bliver udskrevet til sidst, men self. det input der bliver skrevet i formen.
Avatar billede jakobdo Ekspert
25. juni 2007 - 11:30 #7
Hvordan ser din form ud?
Avatar billede michael_stim Ekspert
25. juni 2007 - 11:38 #8
$query = mysql_query("SELECT * FROM saltvand WHERE id='". $_POST['search'] ."'") or die(mysq_error());
Avatar billede michael_stim Ekspert
25. juni 2007 - 11:39 #9
og $_POST['search'] skal väre det tekstfelt hvor du får det ord man skal söge på.
Avatar billede michael_stim Ekspert
25. juni 2007 - 11:41 #10
Og så har du denne:
while ($row_sql = mysql_fetch_assoc($query))
  { 
    echo $row['id'];

Der skal alle $row väre $row_sql eller $row_sql väre $row
Avatar billede jakobdo Ekspert
25. juni 2007 - 11:54 #11
Har lige rettet lidt i din kode og jeg antager ID er et tal...

<?php

if(isset($_POST['search']) && is_numeric($_POST['search']))
{
    mysql_connect('localhost', 'root');
    mysql_select_db('infostander');
    $id = intval($_POST['search']);
    $query = mysql_query("SELECT * FROM saltvand WHERE id='$id' LIMIT 1");
    $total = mysql_num_rows($query);
}

if($total==1)
{
    while ($row_sql = mysql_fetch_assoc($query))
  {
    echo $row_sql['id'];
    echo $row_sql['latinsk'];
    echo $row_sql['populair'];
    echo $row_sql['links'];
    echo $row_sql['image'];
    }
}
else
{
    echo "Intet resultat.";
    echo $_POST['search']; //For at teste om input fra formen kommer, det gør det, søgeresultatet bliver udskrevet her.
}
?>
Avatar billede trax Nybegynder
25. juni 2007 - 12:18 #12
Det virkede!
Dvs. if(isset($_POST['search']) && is_numeric($_POST['search']))

og så alle $row_sql istedet for $row ?
Avatar billede michael_stim Ekspert
25. juni 2007 - 12:44 #13
is_numeric($_POST['search'])
Er mere for at checke om det er et tal der bliver skrevet i feltet

Du havde også en fejl i din SQL.
Avatar billede jakobdo Ekspert
25. juni 2007 - 13:39 #14
Så får du et svar.
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