Avatar billede holmenshus Nybegynder
03. april 2013 - 14:14 Der er 11 kommentarer og
1 løsning

If spørgsmål

Hej, lidt hjælp?
Kort; har et input felt hvor jeg skriver et navn, det er ok, og den finder navnet, men hvis jeg eks. skriver fdfg eller andet pjat, går den ikke ned i }else{ feltet? men viser intet, hvad gør jeg forkert.
Her er stump kode.. mvh Holmenshus


mysql_connect("localhost", "root", "");
mysql_select_db("holmenshus_dk");
$navn =$_POST['navn'];
$foresp = mysql_query("SELECT * FROM medlemmer where navn like '$navn%'");
echo "<table border='1'
<tr>
<th>Lej.nr.:</th>
<th>Navne</th>
<th>Email</th>
</tr>";
echo"<div style align='center'>";
echo "<br>";
  while($post = mysql_fetch_array($foresp)){ 
if($post['navn'] <> $navn ){
echo "<tr>";
echo "<td> $post[lejnr]</td>";
echo "<td> <textarea style=' color:#000000; background-color: #cccccc' cols='30px' rows='4'/> $post[navn] </textarea></td>";
echo "<td> <textarea style=' color:#000000; background-color: #cccccc' cols='30px' rows='4'/> $post[email] </textarea></td>";
}else{
echo "Navnet er forkert, eller ingen data i mysql databasen?";
}
}
echo "</form>";
echo "</div>";
echo "</table>";
?>
</body>
</html>
Avatar billede michael_stim Ekspert
03. april 2013 - 15:15 #1
echo "<table border='1' //Her mangler du en afsluttende >

if($post['navn'] <> $navn ){ //Her siger du "Hvis navn fra tabellen IKKE er lig med navn fra din post-variabel, gå ind i if?
Avatar billede holmenshus Nybegynder
03. april 2013 - 17:00 #2
Hej. Tak for svaret, den manglende > er uden betydning på dette sted.

Erstattet <> med = med, men resultatet er jo det samme, dvs, hvis input er lig kendt navn, så udskriver den korrekt, men hvis jeg skriver sdsa, så sker der ingen ting, den går ikke ned i }else{ feltet og skriver hvad der står der, hvad har jeg ikke fattet??
mvh Holmenshus
Avatar billede claes57 Ekspert
03. april 2013 - 17:28 #3
den vil vel næppe starte på while-løkken hvis udtræk er tomt - der skal en OR ind, så den går derind ved tomt udtræk (= ukendt navn)
Avatar billede scootergrisen Nybegynder
03. april 2013 - 17:36 #4
Du har ikke noget i din formular der hedder 'navn'.
For eksempel : <input name="navn">

Du får samme resultat eftersom de altid er ens eller har du udeladt noget af koden ? :
$navn =$_POST['navn'];
...
if($post['navn'] <> $navn ){

Hvis du skriver noget tilfældigt og ikke får noget resultat så er det jo nok fordi værdien af $navn ikke findes i databasen og derfor gås der ikke ind i while() koden.

Den måde du bruge mysql på er desuden den forældene måde som ikke anbefales. Det anbefales at bruge mysqli i stedet for for eksempel.
Det lidt anderledes men nok bedre at lærer det på den gode måde.
Du kan læse om det i PHP manualen.
Avatar billede michael_stim Ekspert
03. april 2013 - 18:01 #5
= er == når du sammenligner.
Avatar billede holmenshus Nybegynder
03. april 2013 - 20:19 #6
Hej.
Tak for alle svarene, jo der mangler lidt af koden,har en menu hvor
input feltet er.

Ja, jeg er nok lid gammeldags, men troede at den altid gik ind i en while løkke, vil prøve at lege lidt mere med de svar jeg har fået..
Mange tak - smider I et svar så spørgsmålet kan lukkes.
mvh. Holmenshus
Avatar billede claes57 Ekspert
03. april 2013 - 20:42 #7
Avatar billede olebole Juniormester
04. april 2013 - 00:40 #8
<ole>

Undskyld, men uanset uvad du finder ud af at trække ud af databasen, vil din HTML aldrig komme til at hænge sammen med dén kode. Det uafsluttede TABLE-tag er langt det mindste problem.

Da DB-koden samtidig er forældet og står åben som en ladeport, har jeg tilladt mig at skrive koden helt om til:

<?php
function conn2db() {
    $db = new mysqli('localhost', 'root', '', 'holmenshus_dk');
    if (mysqli_connect_errno()) {
        echo 'Connect failed:<br>', mysqli_connect_error();
        exit();
    }
    return $db;
}
function get_table() {
    $db = conn2db();
    $html = array('<table><tr><th>Lej.nr.:</th><th>Navne</th><th>Email</th></tr>');
    $stmt = $db->prepare('SELECT navn, lejnr, email FROM medlemmer WHERE navn LIKE ?');
    if ($stmt) {
        $stmt->bind_param('s', $_POST['navn'].'%');
        $stmt->execute();
        $stmt->bind_result($navn, $lejenr, $email);
        while ($stmt->fetch()) {
            $html[] = '<tr><td>'.$lejenr.'</td>'
                    . '<td><textarea style="color:#000000; background-color: #cccccc" cols="6" rows="4">'.$navn.'</textarea></td>'
                    . '<td><textarea style="color:#000000; background-color: #cccccc" cols="6" rows="4">'.$email.'</textarea></td>';
        }
        $stmt->close();
    } else {
        echo 'Statement could not be prepared:<br>', $db->error;
        exit();
    }
    $db->close();
    if (count($html)<2) $html[] = '<tr><td colspan="3">Navnet er forkert, eller ingen data i mysql databasen?</td></tr>';
    $html[] = '</table>';
    return $html;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>

<div>
<form action="">
<?php echo get_table() ?>
</form>
</div>

</body>
</html>

/mvh
</bole>
Avatar billede holmenshus Nybegynder
04. april 2013 - 10:48 #9
Hej tak for denne omskrivning, den vil jeg "lege" med, er nok ikke
helt "ekspert", men har dog lært noget på den "gammeldagsmåde",
men udviklingen står jo ikke stille..
Det stillede spørgsmål var en del af en test, idet jeg har et fuld fungerende medlemssystem, i en ejerforening,  hvor jeg søger på lejlighedsnr.
Vender tilbage med et svar på hvordan din omskrivning virker.
Endnu engang tak for alle svarene..
Mvh. Holmenshus
ps, det er helt bevist at jeg bruger textarea som felt.
Avatar billede holmenshus Nybegynder
04. april 2013 - 11:08 #10
Hej igem...

Fatal error: Cannot pass parameter 2 by reference in C:\xampp\htdocs\medlemmer\redigere\nykode.php on line 15

Denne fejl i din kode kan jeg "endnu" ikke gennemskue?

$stmt->bind_param('s', $_POST['navn'].'%');  //fejllinjen..

mvh. Holmenshus
Avatar billede holmenshus Nybegynder
18. april 2013 - 09:41 #11
Hej Dender I et svar såspørgsmålet kan lukkes,
Tak for alle svarene..
Holmenshus
Avatar billede holmenshus Nybegynder
18. maj 2013 - 11:49 #12
Tak for svarene, lukker selv, selv om jeg ikke samler på point
mvh Holmenshus
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





Premium
Søstrene Grene skifter Microsoft ud med SAP og rykker for første gang i clouden i stor ERP-transformation: Der er brug for en helt ny tilgang