Avatar billede mlysly Nybegynder
03. juni 2010 - 13:10 Der er 4 kommentarer og
4 løsninger

display_block problem i php

Så er jeg på den igen.

Jeg har lavet en database og en formular hvor jeg kan fra en dropdown menu kan vælge den post jeg gerne vil slette.

Her er hele formularen:

<?php
$filindhold = file_get_contents("menu.php"); //Indholdet af filnavn.txt tildeles variablen $filindhold
echo $filindhold;
?>

<?php
//connect to database
$conn = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("noter",$conn)  or die(mysql_error());

if(isset($_POST['op']) && trim($_POST['op']) != 'delete'){
//if ($_POST['op'] != "delete")  {
    //haven't seen the form, so show it
//    $display_block = "<h1>Vælg en post</h1>";

    //get parts of records
    $get_list = "select id, concat_ws(', ', note) as display_name from noter order by note";
    $get_list_res = mysql_query($get_list) or die(mysql_error());

    if (mysql_num_rows($get_list_res) < 1) {
        //no records
        $display_block .= "<p><em>Desværre, ingen noter at slette!</em></p>";

    } else {
        //has records, so get results and print in a form
        $display_block .= "
        <form method=\"post\" action=\"$_SERVER[PHP_SELF]\"><br>
        <P><strong>Vælg den note du vil slette:</strong><br><br>
        <select name=\"sel_id\">
        <option value=\"\">--- Vælg en note ---</option>";

        while ($recs = mysql_fetch_array($get_list_res)) {
            $id = $recs['id'];
            $display_name = stripslashes($recs['display_name']);

            $display_block .= "<option value=\"$id\">
                $display_name</option>";
        }

      $display_block .= "
      </select>
      <input type=\"hidden\" name=\"op\" value=\"delete\">
      <p><input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Slet note\"></p>
      </FORM>";
    }

} else if(isset($_POST['op']) && trim($_POST['op']) != 'delete'){ //if ($_POST['op'] == "delete") {

  //check for required fields
  if ($_POST[sel_id] == "")  {
      header("Location: slet_noter.php");
      exit;
  }

  //issue queries
  $del_master = "delete from noter where id = $_POST[sel_id]";
  mysql_query($del_master);

  $display_block = "<h2>Noten er slettet</h2>
  <P>Vil du slette flere
  <a href=\"$_SERVER[PHP_SELF]\"> JA </a>? | <a href=\"se_noter.php\"> NEJ </a></p>";
}
?>
<HTML>
<HEAD>

<link rel="stylesheet" type="text/css" href="style/style.css" media="screen">

<TITLE>Slet</TITLE>
</HEAD>
<BODY>

<div id="content">
<table width="900" border="0" style="border-right: #000000 1px solid; border-bottom: #000000 1px solid; border-top: #000000 1px solid; border-left: #000000 1px solid">
<tr>
<td align="center" bgcolor="#dcdcdc">
<font face="calibri" size="3">
<?php print $display_block; ?>  DETTE ER LINIE 78
</td>
</tr>
</table>
</td>
</tr>
</table>


</BODY>
</HTML>

Når jeg åbner formularen får jeg denne fejlmeddelelse:

Notice: Undefined variable: display_block in C:\wamp\www\noter\slet_noter.php on line 78

Det virker under php version 5.2.5 men ikke under version 5.3.0

Jeg har ledt under php dokumentation men kan ikke finde problemet, så endnu en gang ønskes hjælp.
Avatar billede erikjacobsen Ekspert
03. juni 2010 - 13:13 #1
Når du skriver

  $display_block .= "...noget..."

og $display_block ikke har en værdi i forvejen, så får du advarslen. (Ja, det kan slås fra at vise den, men det er nu da meget fornuftigt)

Og løsningen er simpel: giv variablen en værdi inden du aflæser den. Den tomme streng kunne være fornuftigt.
Avatar billede mlysly Nybegynder
03. juni 2010 - 13:35 #2
Jeg tror jeg er ved at se mig blind. Er ikke helt med på hvad du mener.
Hvis jeg skriver sådan her i linie 78

<?php print $display_block=.''; ?>

hjælper det ikke.
Avatar billede majbom Novice
03. juni 2010 - 18:55 #3
start med at give sætte variablen sådan her:

$display_block = "";

i starten af din fil, inden du begynder at tildele den andre værdier.

så vil den ikke brokke sig...
Avatar billede mlysly Nybegynder
03. juni 2010 - 19:26 #4
Hej splazz.
Tror ikke helt jeg forstår hvad du mener. Hvis jeg skriver det i toppen af min fil, forsvinder fejlen godt nok, men jeg får ikke menuen, hvor jeg kan vælge hvilken note jeg vil slette. Som du nok kan regne ud er jeg lidt af en novice:-). Det jeg ikke forstår er at det hele virker under php 5.2.5. men ikke under 5.3.0. Jeg har installeret wampserver 2.0i, på min bærbare og på min stationære wampserver 1.9. og her virker det.
Så jeg er lidt i vildrede.
Avatar billede majbom Novice
03. juni 2010 - 22:01 #5
det giver også mening at fejlen nu er væk, for nu kender den variablen, hvilket den ikke gjorde før, og grunden til at den ikke gjorde det før, er at den ikke bliver sat nogen steder og derfor vil den ikke skrive noget ud.

umiddelbart har jeg lidt svært ved at gennemskue din kode, der er noget der er kommenteret ud osv.

du kan evt, skrive noget bestemt ud i hver if-sætning, så du på den måde ved hvor den havner henne, eller udskrive de værdier du tjekker på i dine if-sætninger.

for noget kunne tyde på at der der er nogle variabler der ikke indeholder hvad du forventer.

debug! :)
Avatar billede majbom Novice
06. juli 2010 - 19:56 #6
kom du videre?
Avatar billede mlysly Nybegynder
17. september 2010 - 07:06 #7
Jeps det virker. Takker
Avatar billede majbom Novice
17. september 2010 - 08:49 #8
selv tak :)
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