Daten aus Mysql Datenbank holen und bearbeiten ---Fehler

smokey-joe

Mitglied
Moin moin,
ich hoffe Ihr könnt mir helfen kurz zur Struktur meines Gerüst´s:
form.php = Eingabe neuer Datensätze ---funktioniert, anzeige aller Datensätze mit jeweiligen "bearbeiten" links dahinter ---funktioniert
"bearbeiten" link verweist auf :
edit.php = holen der Daten in ein form --- funktioniert nicht !
hier die codes:
form.php
PHP:
<html>
<body>
<p>Bitte tragen sie die erforderlichen Daten ein</p>
<form action = "eingabe.php" method = "post">
        <p><input name = "name" /> Name</p>
        <p><input name = "geschlecht" /> Geschlecht</p>
        <p><input name = "gattung" /> Gattung</p>
        <p><input type = "submit" />
        <input type = "reset" /></p>
</form>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=aquarium', 'db_benutzername', 'db_PW');
$order = filter_input(INPUT_GET,'order');
$sql = "SELECT id, name, gattung, geschlecht FROM aqua";
if($order=="geschlecht") { $sql .=" ORDER BY `geschlecht` ASC"; }
elseif($order=="gattung") { $sql .=" ORDER BY `gattung` ASC"; }
elseif($order=="id") { $sql .=" ORDER BY `id` ASC"; }
else { $sql .=" ORDER BY `name` ASC"; }
?>
<table width=500 border=1 bordercolor=#000000 cellpadding=2 cellspacing=0 class=rahmen bgcolor=#e1e1e1>
  <tbody>
<tr>
<td><strong><a href="form.php?order=id">Id</a></strong></td>
<td><strong><a href="form.php?order=name">Name</a></strong></td>
<td><strong><a href="form.php?order=gattung">Gattung</a></strong></td>
<td><strong><a href="form.php?order=geschlecht">Geschlecht</a></strong></td>
</tr>
    <?php foreach ($pdo->query($sql) as $row) : ?>
    <tr>
       <td><?=$row['id']?></td>
       <td><?=$row['name']?></td>
       <td><?=$row['gattung']?></td>
       <td><?=$row['geschlecht']?></td>
       <td><a href="edit.php?id=".$row['id']."\">bearbeiten</a></td>
       <td><a href="delete.php?id=".$row['id']."\">löschen</a></td>    </tr>
    <?php endforeach; ?>
  </tbody> </table>
</body>
</html>

edit.php

PHP:
<?
        $pdo = new PDO('mysql:host=localhost;dbname=aquarium', 'db_Benutzername', 'db_PW');
        function holeFeld($feld, $fnm, $fval)
        {
        $sql = "SELECT $feld FROM aqua WHERE $fnm='$fval'";
        $ergebnis= mysql_query($sql, $pdo);
                while($row = mysql_fetch_object($ergebnis))
                {return $row->$feld;}
?>
<html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- TemplateBeginEditable name="doctitle" -->
<title>Unbenanntes Dokument</title>
<!--TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<style type="text/css">
<!-- body,td,th {
        color: #FFFFFF;
}
body {
        background-color: #02679D;
}
a:link {
        color: #FFFFFF;
        text-decoration: none;
}
a:visited {
        text-decoration: none;
        color: #CCCCCC;
}
a:hover {
        text-decoration: underline;
}
a:active {
        text-decoration: none;
        color: #CCCCCC;
}
--> </style></head>
<body> <form name="form1" method="GET" action="update.php">
  <label>
  Name:
  <input name="name" type="text" id="name" value="<? print holeFeld("name","id",$id); ?>">
  </label>
  <br>
  <label>Gattung:
  <input name="gattung" type="text" id="gattung" value="<? print holeFeld("gattung","id",$id); ?>">
</label>
  <br>
  Geschlecht:
  <label>
  <input name="geschlecht" type="text" id="geschlecht" value="<? print holeFeld("geschlecht","id",$id); ?>">
  </label>
  <br>
  <p>
    <label>
    <input type="submit" name="Submit" value="&auml;ndern">
    </label>
  </p>
  <p>
    <input name="id" type="hidden" id="id" value="<? print $id; ?>">
  </p> </form> <p>&nbsp;</p> </body>
</html>

Seht Ihr den Fehler ?

ich bekomme die Daten nicht ins formular.
hoffnungsvoll
smokey-joe
 
Hi

PHP:
$pdo = new PDO(...);
...
$ergebnis= mysql_query($sql, $pdo);
Merkst du was?

$pdo->query usw. wie oben verwenden, dann gehts...
 
feder, teer und steinige mich aber ich seh den Wald vor lauter Bäumen nicht XD
Würdest du mir die Güte erweisen und mir das näher erläutern ?
 
Hi,

Du nutzt erst PDO und anschließend eine mysql_-Funktion.

PDO, mysqli_, mysql_. Alles unterschiedliche Funktionen - wobei letztere und auch in deinem Fall verwendete (mysql_query) veraltet ist und mit PHP 7 vollständig entfernt wurde.

Äpfel und Birnen sind zwar Obst, aber noch lange nicht das gleiche ;)

Viele Grüße
 
Moin Splater ,
Jetzt bin ich noch verwirrter xd, ich benutze also etwas veraltetes und nicht mehr verwendbares. o_O
Erschießt mich bitte aber ich raff grad nicht wirklich was.
Aber danke das Ihr mir helft (hatte die Sorge einem unwissenden wie mir werden so Kommentare wie "ließ dies und das und werde Profi Coder" entgegen gebracht)
Ich bin eher der Handwerker und gehe sowas alle 5 Jahre für Hobby Zwecke an. Wie auch das hier, nur eine db für meine Aquarium Fische werden soll.
Leider brauche ich das als webbasierend, da ich auf meinem Raspberry auch auf einer Website Temperatur und Durchfluss von verschiedenen Sensoren wiedergebe .
Ansonsten wäre das mit Excel wesentlich einfacher xd
Hoffnungsvoll
Smokey-Joe
 
Verwendbar wird es bei Dir schon noch sein, da es erst in PHP 7 entfernt wurde. Davon aber mal ganz abgesehen, nutzt Du im Code erst PDO und anschließend eine Funktion, welche nichts damit zutun hat, sondern auf eigene Weise arbeitet.

An sich ist es auch auffällig, da du plötzlich nicht mehr mit der instantiierten Klasse von PDO arbeitest , sondern mysql_query nutzt.
 
Hi

es gibt in PHP mehrere Gruppen von Funktionen, mit denen man auf Datenbanken zugreifen kann

a) mysql_connect, mysql_query, mysql_fetch_object usw.
b) $pdo=new PDO(), $pdo->query() usw.

(und noch c) Mysqli, hier unwichtig)

Dein erster Code verwendet Variante b.
Dein zweiter Code mischt a und b, deshalb funktioniert es nicht.
Ersetze zB. mysql_query durch $pdo->query wie im ersten Code.

Was mit veraltet gemeint ist: Die Funktionen von Variante a gibts in den neuesten PHP-Versionen nicht mehr (nachdem jahrelang angekündigt wurde, dass sie entfernt werden). Neuen Code mit Variante a schreiben ist deshalb ziemlich sinnlos, und alter Code gehört angepasst um noch lauffähig zu sein. Verwende überall Variante b (PDO) wie im ersten Code.
 
Ok das war die Erklärung, nur verstehe das immernoch nicht. Ich habe meine Fachkenntnis auf anderen Gebieten. Wärst du bitte so nett und würdest mir den Weg zur Lösung weisen?
Würde das gerne am laufen haben.

edit:
Oha da hab ich zu lange geschrieben warte ich versuche es
 
Das :
PHP:
function holeFeld($feld, $fnm, $fval)
        {
        $sql = "SELECT $feld FROM aqua WHERE $fnm='$fval'";
        $ergebnis= $pdo->query ($sql);
                while($row = mysql_fetch_object($ergebnis))
                {return $row->$feld;
ergibt das:
Unbenannt.JPG
 
a) mysql_fetch_object gehört auch noch angepasst
b) Irgendwo scheinst du <?php vergessen zu haben
c) Bitte über SQL-Injections bzw. PreparedStatements informieren
 

Neue Beiträge

Zurück