Avatar billede brianmilan Juniormester
26. september 2007 - 10:37 Der er 14 kommentarer og
1 løsning

Kan man vise en oppostrof uden at php fortolker den som et nyt.

Hej eksperter :-)

Jeg har et lille problem i min dvd-database, der har jeg bl.a. en instruktør der hedder Alice O'Fredericks, men når jeg søger på hende kommer den kun ud med Alice O og siger at den ikke fandt nogle instrukører med det navn. I MySQL databasen står hun som Alice O'Fredericks men hvis jeg laver et dump fra phpMyAdmin står hun som Alice O''Fredericks med to oppostroffer.. Kan det være fordi at php tror at oppostroffen er en felt afgrænser?
Ved I hvordan jeg kan få vist det rigtige navn når jeg søger på hende?
Avatar billede michael_stim Ekspert
26. september 2007 - 10:43 #1
addslashes($sogeord)
Avatar billede brianmilan Juniormester
26. september 2007 - 10:52 #2
Hej Michael, tak for dit hurtige svar :-) Jeg glemte at skrive at jeg starter med at søge på intstruktøren fra en drop-down list hvor min kode ser sådan ud:

<form method="post" action="dvd_search/instructor_search.php">Vælg Instruktør:<br>
            <SELECT NAME="kategori">
            <?php echo "<OPTION VALUE='$Instruktoerer' SELECTED>$Instruktoerer</OPTION>";
            $rows = mysql_query("SELECT * FROM alle_instruktoerer ORDER BY Instruktoerer");
            WHILE($row = mysql_fetch_row($rows))
              echo "<OPTION value='$row[1]'>$row[1]</option>";?>
            </SELECT>
            <br>
          <input name="submit" type="submit" value="Søg">
        </form>

Ved du hvor jeg skal indsætte addslashes?
Avatar billede michael_stim Ekspert
26. september 2007 - 11:07 #3
Det er nästen bedre hvis du skriver den der hvor du sätter data ind i databasen.
Avatar billede brianmilan Juniormester
26. september 2007 - 11:11 #4
Ok så skulle jeg have gjort det dengang jeg oprettede instruktøren i databasen?
Avatar billede michael_stim Ekspert
26. september 2007 - 11:14 #5
Men hvordan smider du dataen ind i basen. Du siger der er 2 ', hvorfor er der det?
Ja, man bruger det når man kaster det ind i databasen.
Avatar billede michael_stim Ekspert
26. september 2007 - 11:20 #6
Hvad sker der hvis du skriver din echo således:

echo "<OPTION value=\"".$row[1]."\">$row[1]</option>";?>
Avatar billede brianmilan Juniormester
26. september 2007 - 11:32 #7
Nu er det tæt på, den viser hele navnet med men en slash inden i

Alice O\'Fredericks

Det var efter at jeg skrev den sidste linie ind du skrev echo "<OPTION value=\"".$row[1]."\">$row[1]</option>";?>
Avatar billede brianmilan Juniormester
26. september 2007 - 11:33 #8
Ups, jeg var lidt hurigt til at skrive der skulle stå, den viser hele navnet men med en slash inden i :-)
Avatar billede michael_stim Ekspert
26. september 2007 - 11:36 #9
OK, så har du på en eller anden måde fået en slash for meget med ind i basen.
Fungerer sögningen hvis du gör sådan her:
echo "<OPTION value=\"".$row[1]."\">stripslashes($row[1])</option>";?>
Avatar billede brianmilan Juniormester
26. september 2007 - 11:46 #10
Det virkede desværre ikke, tror du at det har noget at gøre med den søgning jeg laver på den side hvor jeg poster til? der ser min kode sådan ud:

//********************************************************************

function display_kategori($cat) {
  $sql = "SELECT Original_Titel FROM alle_dvd_film WHERE Instruktoerer LIKE '%$cat%'";
  $rows = mysql_query($sql);
  $antal_poster = mysql_num_rows($rows);
  if( $antal_poster > 0 )
    echo "Der er fundet $antal_poster film hvor <strong>$cat</strong> er instruktør:<br><br>";
  else
    echo "Der er desværre ikke nogen film i databasen hvor <strong>$cat</strong> er instruktør.";
}

//*************************** Viser instruktoer ***************************
function display_instruktoerer($cat) {
  display_kategori($cat);
  $sql = "SELECT * FROM alle_dvd_film WHERE Instruktoerer LIKE '%$cat%' ORDER BY Original_Titel";
  $query = mysql_query($sql);
  while( $row=mysql_fetch_array($query) )
    echo "<tr><td id='td_2'><a href='../dvd_film.php?dvd_film_ID=$row[0]'>$row[0]</a></td><td width='520' id='td_2'>$row[1]</td></tr>";
}

//************** MAIN *************************
echo '<table width="790" border="2" align="center" cellpadding="6" cellspacing="0">
<tr align="center" valign="top">
  <td id="td_1" align="left">
    <table>';
$kategori = $_POST['kategori'];
if( isset($_POST['kategori']) ) {
  display_instruktoerer($_POST['kategori']);
}  else
  echo "Instruktøren findes ikke";
 
  echo '</table>
  </td>
</tr>
</table>
<br>';
Avatar billede michael_stim Ekspert
26. september 2007 - 11:49 #11
$sql = "SELECT Original_Titel FROM alle_dvd_film WHERE Instruktoerer LIKE '%".$cat."%'";

Pröv at skil din PHP fra HTML, SQL-strings osv.
Avatar billede brianmilan Juniormester
26. september 2007 - 12:17 #12
Ohh det er godt nok underligt, det ville den heller ikke tage imod, jeg har endda skilt min PHP, HTML og SQL fra hinanden...
Avatar billede brianmilan Juniormester
23. februar 2011 - 22:48 #13
Hej Michael_Stim kunne jeg få dig til at lægge et svar, så skal jeg nok få givet dig point.
Avatar billede michael_stim Ekspert
24. februar 2011 - 10:59 #14
Læg du bare et svar selv og accepter. Jeg har ikke samlet på point i mange år ;o)
Avatar billede brianmilan Juniormester
24. februar 2011 - 11:14 #15
Hej Michael. Så siger jeg mange tak for hjælpen :-)
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