Problem att spara data i databas, Mysqli.

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
jukebox



Medlem i: 3874 dagar

Status: Offline



#742362
Inlägg Skrivet: 2018-10-28 21:39      Ämne: Problem att spara data i databas, Mysqli. Citera

Har en kod som nyttjats under flera år, (kommer ursprungligen från en svensk php/sql skola på webben).

Jag håller på och konverterar till "mysqli_", sidan fungerar helt när jag "Tar bort" innehåll i databasen genom koden med "Ta bort"-knappen. Lika så att spara ändringar fungerar.

Men problem uppstår när jag vill lägga till en post, då sparas inga värden från formuläret till databasen och följande meddelande ges. Känslan är att det är problem när det ska läggas till ett nytt ID, funktionen get_uniq_id()

Om jag på rad 138 manuell lägger till ett id, t.ex. enligt nedan så fungerar det.
PHP:
1:
 $id "1000";  


* Notice: Undefined index: submit_save in ......./edit_start3.php on line 128
* Notice: Undefined index: submit_delete in ....../edit_start3.php on line 129
* Notice: Undefined variable: link in ....../databaskoppling.php on line 42
* Warning: mysqli_query() expects parameter 1 to be mysqli, null given in ......./databaskoppling.php on line 42
* Warning: mysqli_error() expects exactly 1 parameter, 0 given in ....../databaskoppling.php on line 42



Min anslutning mot databasen göra i följande fil:
PHP:
1:
 
2:
<?php
3:
 
4:
$server_name           = "server_name";
5:
$username      "server_user";
6:
$password      "server_password";
7:
$database_name           = "server_database";
8:
 
9:
// Reference to the database connection
10:
$link "";
11:
 
12:
function db_connect() {
13:
  global $server_name;
14:
  global $username;
15:
  global $password;
16:
  global $database_name;
17:
  global $link;
18:
 
19:
  // Connect to the database server
20:
  $link mysqli_connect($server_name,$username,$password) or die (mysqli_error());
21:
 
22:
   mysqli_set_charset($link'utf8');
23:
   setlocale(LC_ALL'sv_SE');
24:
 
25:
  // Select which database to use
26:
  mysqli_select_db($link$database_name) or die (mysqli_error());
27:
}
28:
 
29:
function db_close() {
30:
  global $link;
31:
 
32:
  // Close the connection to the database server
33:
  mysqli_close($link);
34:
}
35:
 
36:
function get_uniq_id() {
37:
  global $table_name;
38:
  
39:
  for ($i=1;;$i++) {
40:
    $fields_to_select "id";
41:
    $where "WHERE id=$i";
42:
 
43:
    $result mysqli_query($link"SELECT $fields_to_select FROM $table_name $where") or die(mysqli_error());
44:
 
45:
    // Is the id $i _not_ found in the table?
46:
    if (mysqli_num_rows($link$result) == 0) {
47:
      // Then we are done
48:
      break;
49:
    }
50:
  }
51:
  return $i;
52:
}
53:
 
54:
?>
55:
<?php db_connect(); ?>
56:
 



Följande fil används för att Lägga till, Spara och Ta bort innehåll från tabellen "start". Denna kod inkluderas i en annan fil där jag har innehåll för CSS, m.m.
PHP:
1:
 
2:
<?php
3:
error_reporting(E_ALL); 
4:
ini_set("display_errors""1");
5:
 
6:
  $table_name   "start";
7:
 
8:
  $this_directory "../admin";
9:
 
10:
  $db_include_file "databaskoppling.php";
11:
 
12:
if ($_SERVER['REQUEST_METHOD'] == "GET")
13:
{
14:
 
15:
?>
16:
 
17:
<?php
18:
 
19:
  $req_id $_GET['id'];
20:
 
21:
  if ($req_id != "") {
22:
    $fields_to_select "id,datum,typ,rubrik,lankid";
23:
    $where "WHERE id='$req_id'";
24:
 
25:
    $sql "SELECT $fields_to_select FROM $table_name $where";
26:
 
27:
    // Fetch from the database
28:
    $result mysqli_query($link$sql) or die(mysqli_error());
29:
 
30:
    // Bind results to variables
31:
    list($id,$datum,$typ,$rubrik,$lankid) = mysqli_fetch_row($link$result);
32:
  }
33:
?>
34:
 
35:
        <form method=post action="<?= $this_directory "/" basename(__FILE__?>?id=<?= $id ?>">
36:
     <input type=hidden name="return_page" value="<?= "http://" $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'?>">
37:
 
38:
<A CLASS="text">
39:
<BR>
40:
 <table width="400">
41:
    <tr> 
42:
      <th> 
43:
        <div align="right"><A CLASS="text">Id:</div>
44:
      </th>
45:
      <td>
46:
        <A CLASS="text"><?= $id ?>
47:
      </td>
48:
    </tr>
49:
   <tr> 
50:
      <th> 
51:
        <div align="right"><A CLASS="text">Datum:</div>
52:
      </th>
53:
      <td>
54:
        <A CLASS="text"><?= $datum ?>
55:
      </td>
56:
    </tr>
57:
      <th> 
58:
        <div valign="top" align="left"><A CLASS="text">Typ:</div>
59:
      </th>
60:
      <td>
61:
<select size="1" name="typ">
62:
<?php
63:
$typ $_GET['typ'];
64:
$result mysqli_query($link"SELECT id,varde,text FROM kalender_typ ORDER BY text") or
65:
die (mysqli_error());
66:
while ($row mysqli_fetch_array($result))
67:
{
68:
echo "<option value=\"" $row["varde"] . "\"" . ($row["varde"] == $typ " selected=\"selected\"" "") . ">" $row["text"] . "</option>";
69:
}
70:
?>
71:
      </td>
72:
    </tr>
73:
    <tr> 
74:
      <th> 
75:
        <div align="right"><A CLASS="text">Länkid:</div>
76:
      </th>
77:
      <td>
78:
        <input type=text name="lankid" SIZE="4" value="<?= $lankid ?>">
79:
      </td>
80:
    </tr>
81:
    <tr> 
82:
      <th> 
83:
        <div align="right"><A CLASS="text">Rubrik:</div>
84:
      </th>
85:
      <td>
86:
        <input type=text name="rubrik" SIZE="50" value="<?= $rubrik ?>">
87:
      </td>
88:
    </tr>
89:
 </TABLE>
90:
 
91:
 
92:
        <?php
93:
 
94:
  // Is any id selected?
95:
  if ($id == "") {
96:
    print <<<END
97:
                <input type="submit" name="submit_add" value="Lägg till post">
98:
END;
99:
  }
100:
  else {
101:
    print <<<END
102:
           <input type="submit" name="submit_save" value="Spara">
103:
           <input type="submit" name="submit_delete" value="Ta bort"><A CLASS="text">
104:
END;
105:
  }
106:
 
107:
?>
108:
 
109:
      </td>
110:
    </tr>
111:
  </table>
112:
        </form>
113:
 
114:
<?php
115:
 
116:
} else {   // METHOD is POST
117:
 
118:
  include($db_include_file);
119:
  db_connect();
120:
 
121:
 
122:
  $id    = $_GET['id'];
123:
 
124:
  $typ    = $_POST['typ'];
125:
  $rubrik$_POST['rubrik'];
126:
  $lankid$_POST['lankid'];
127:
 
128:
  $submit_add    = $_POST['submit_add'];
129:
  $submit_save    = $_POST['submit_save'];
130:
  $submit_delete $_POST['submit_delete'];
131:
 
132:
  $return_page    = $_POST['return_page'];
133:
 
134:
  $date      date("Y-m-d - H:i:s");
135:
 
136:
  if ($submit_add != "") {
137:
 
138:
    $id get_uniq_id();
139:
 
140:
    $datum $date;
141:
 
142:
    $columns_to_insert_into "(id,datum,typ,rubrik,lankid)";
143:
    $values_to_insert "('$id','$datum','$typ','$rubrik','$lankid')";
144:
 
145:
    $sql "INSERT INTO $table_name SET $columns_to_insert_into";
146:
 
147:
    mysqli_query($link$sql) or die(mysqli_error());
148:
 
149:
  }
150:
  elseif ($submit_save != "") {
151:
 
152:
    // Syntax of SET: columnname1='$value1',columnname2='$value2'
153:
    $columns_to_set "typ='$typ',rubrik='$rubrik',lankid='$lankid'";
154:
    $where "WHERE id='$id'";
155:
 
156:
    $sql "UPDATE $table_name SET $columns_to_set $where";
157:
    
158:
    mysqli_query($link$sql) or die (mysqli_error()); 
159:
 
160:
  }
161:
  elseif ($submit_delete != "") {
162:
 
163:
    $where "WHERE id='$id'";
164:
 
165:
    $sql "DELETE FROM $table_name $where";
166:
 
167:
    mysqli_query($link$sql) or die (mysqli_error());
168:
 
169:
  }
170:
 
171:
  header("Location: $return_page");
172:
 
173:
  db_close();
174:
 
175:
}
176:
?>
177:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4559 dagar
Från: Tavesta
Status: Offline



#742363
Inlägget är accepterad som det rätta svaret Skrivet: 2018-10-29 02:26      Ämne: Citera

I funktionen get_uniq_id() är inte $link global.
Du har också missat att ange $link som parameter till mysqli_error överallt.

När du skriver kod i stil med
PHP:
1:
 $submit_save    = $_POST['submit_save']; 

bör du också se till att hantera situationen när 'submit_save' inte finns med i $_POST.
Du kan skriva kod i stil med
PHP:
1:
 if(!isset($_POST['submit_save'])) {
2:
  //submit_save har inte postats. Hantera den situationen här.
3:
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic