php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.08.2009, 11:34  
Neuer Benutzer
 
Registriert seit: 01.07.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Allrounder befindet sich auf einem aufstrebenden Ast
Standard Tabelle bearbeiten, ID-Problem

Hallo zusammen,
ich erzähle kurz was ich vorhabe. Also ich möchte über eine Datenbank eine Tabelle abrufen und ohne phpmyadmin bearbeiten.
Bis jetzt konnte ich alles was ich dafür benötige programmieren, aber es gibt ein Problem mit der Tabelle. Ich konnte sie bereits vollständig abrufen, aber ich habe ein Problem mit der ID. Wenn ich mal ein Eintrag lösche wird die ID nicht aktualisiert, also wenn ich von 1,2,3 die 1 lösche bleibt 2 und 3.

Ich möchte für jede Zeile zwei Icons(Zeile bearbeiten, Zeile löschen). Ich kenne nur den Befehl mit dem man die Zeile mit der bestimmten ID bearbeitet, aber das könnte dann zu Problemen führen.

Wie erzeuge ich am rechten Rand Icons(Bearbeiten, Löschen), ohne die ID zu benutzen?

PHP-Code:
 // Den Kopf der HTML-Tabelle generieren
  
echo "<TABLE BORDER=\"1\">";
  echo 
"<TR>";
  echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>id</B></TD>";
  echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>ipadresse</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>dnsname</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>gateway</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>network</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>description</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>last_change</B></TD>";
   echo 
"</TR>";
   
   
// Alle Zeilen aus der DB holen
   // und in die HTML-Tabelle einfügen
   
   
   
while ($zeile mysql_fetch_object($ergebnis)) {
       
       echo 
"
       <TR>
        <TD>" 
$zeile->id "</TD>
        <TD>" 
$zeile->ipadresse "</TD>
            <TD>" 
$zeile->dnsname "</TD>
            <TD>" 
$zeile->gateway "</TD>
            <TD>" 
$zeile->network "</TD>
                <TD>" 
$zeile->description "</TD>
        <TD ALIGN=\"center\">$zeile->last_change</TD>
        <TD>
         <a href='" 
$_SERVER['SCRIPT_NAME'] . "?id=" $zeile['id'] . "'>
                <img src='edit.jpg' />
          </a>
       </TD>
         <TD>
             <a href='" 
$_SERVER['SCRIPT_NAME'] . "?id=" $zeile['id'] . "'>
                <img src='kreuz01d.gif' />
            </a>
        </TD>
        </TR>"
;
       }
  
  
// Das Ende der HTML-Tabelle generieren
  
echo "</TABLE>";
 
?> 
PS: Hab ich das so richtig geschrieben? Irgendwas hat bei diesem Versuch es zu lösen nicht geklappt.


Viele Grüße
Allrounder ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.08.2009, 11:51  
Erfahrener Benutzer
 
Benutzerbild von ChillSn
 
Registriert seit: 28.07.2009
Beiträge: 267
PHP-Kenntnisse:
Fortgeschritten
ChillSn befindet sich auf einem aufstrebenden Ast
ChillSn eine Nachricht über Skype™ schicken
Standard

Moin,

Zitat:
Wenn ich mal ein Eintrag lösche wird die ID nicht aktualisiert, also wenn ich von 1,2,3 die 1 lösche bleibt 2 und 3.
Wie denn nun, wird doch aktualisiert, oder?!

Zitat:
Ich kenne nur den Befehl mit dem man die Zeile mit der bestimmten ID bearbeitet, aber das könnte dann zu Problemen führen.
Welcher Befehl?! Wieso könnte das zu Problemen führen, wenn du eine eindeutige ID als Referenz auf einen Datensatz hast?!

Zitat:
Wie erzeuge ich am rechten Rand Icons(Bearbeiten, Löschen), ohne die ID zu benutzen?
Gar nicht, woher soll das Script denn dann wissen, welchen Datensatz du bearbeiten möchtest?!

VG, der ChillSn

PS.: Dein PS hab ich auch nicht verstanden
__________________
PHP-Code:
while($humans>=2)
       
war(); 
ChillSn ist offline  
Alt 11.08.2009, 12:01  
Neuer Benutzer
 
Registriert seit: 01.07.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Allrounder befindet sich auf einem aufstrebenden Ast
Standard

Tut mir Leid, wenn ich meine Frage etwas ungeschickt formuliert habe

Also wenn ich 1 von 1,2,3 lösche bleibt 2 und 3, aber es wird nicht zur 1 und 2(damit die reihenfolge stimmt). Aber nach deiner Antwort soll es glaub ich auch nicht passieren okay.

Also ich muss mit ID arbeiten, leider hat es bei meinem Versuch nicht funktioniert.

Ich poste mal den ganzen Code
PHP-Code:
<HTML>
<BODY>
<?php
        


// Uhr mit Datum - Zeitanzeige
$timestamp time();

$datum date("d.m.Y",$timestamp);
$clock date("H:i:s",$timestamp);

echo 
"Wir haben den $datum - $clock Uhr.<P>";



$host "localhost";
$user "root";
$password "";
$db "ipadresse"

// DB-Verbindung herstellen
if ($verbindung mysql_connect($host$user$password)) {
    echo 
"Die Verbindung mit der Datenbank auf <B>$host</B> wurde aufgebaut.<P>";
    } else {
    echo 
"Der Verbindungsversuch zur DB ist fehlgeschlagen! " .
    
mysql_error();
    exit();
}

//Die Datenbank auswählen
if (!mysql_query("USE $db;")) {
    echo 
"Die Datenbank konnte nicht ausgewählt werden: " mysql_error();
    exit();
} else {
    echo 
"Die Datenbank <B>$db</B> wurde ausgewählt.<P>";
}


$abfrage "SELECT * FROM ipadresse;";


  
$ergebnis mysql_query($abfrage);
  
   
//Die Anzahl der Spalten (Felder) zählen
  
$anzahl_felder mysql_num_fields($ergebnis);
  echo 
"Es sind <B>$anzahl_felder</B> Spalten in der Tabelle vorhanden.<P>";
  
  
// Anzahl der Datensätze(Zeilen) zählen
  
$anzahl_zeilen mysql_num_rows($ergebnis);
  echo 
"Es sind <B>$anzahl_zeilen</B> Zeilen in der Tabelle vorhanden.<P>";
  
  
  
// Den Kopf der HTML-Tabelle generieren
  
echo "<TABLE BORDER=\"1\">";
  echo 
"<TR>";
  echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>id</B></TD>";
  echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>ipadresse</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>dnsname</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>gateway</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>network</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>description</B></TD>";
   echo 
"<TD BGCOLOR=\"#BBBBBB\"><B>last_change</B></TD>";
   echo 
"</TR>";
   
   
// Alle Zeilen aus der DB holen
   // und in die HTML-Tabelle einfügen
   
   
   
while ($zeile mysql_fetch_object($ergebnis)) {
       
       echo 
"
       <TR>
        <TD>" 
$zeile->id "</TD>
        <TD>" 
$zeile->ipadresse "</TD>
            <TD>" 
$zeile->dnsname "</TD>
            <TD>" 
$zeile->gateway "</TD>
            <TD>" 
$zeile->network "</TD>
                <TD>" 
$zeile->description "</TD>
        <TD ALIGN=\"center\">$zeile->last_change</TD>
        <TD>
         <a href='" 
$_SERVER['SCRIPT_NAME'] . "?id=" $zeile['id'] . "'>
                <img src='edit.jpg' />
          </a>
       </TD>
         <TD>
             <a href='" 
$_SERVER['SCRIPT_NAME'] . "?id=" $zeile['id'] . "'>
                <img src='kreuz01d.gif' />
            </a>
        </TD>
        </TR>"
;
       }
  
  
// Das Ende der HTML-Tabelle generieren
  
echo "</TABLE>";
 
?> 
 <BR> <P>
 
 
<INPUT TYPE='button' NAME='Button1' VALUE='Neuer Eintrag'
onClick = 'location.href="P1NEU.php"'>

 <?php 
  
// Die Verbindung zur Datenbank schließen
mysql_close($verbindung);

  
    
  
?>
  </BODY>
</HTML>
PS: Das PS sollte soviel heißen wie: Ist der Syntax richtig?
Allrounder ist offline  
Alt 11.08.2009, 12:51  
Erfahrener Benutzer
 
Benutzerbild von ChillSn
 
Registriert seit: 28.07.2009
Beiträge: 267
PHP-Kenntnisse:
Fortgeschritten
ChillSn befindet sich auf einem aufstrebenden Ast
ChillSn eine Nachricht über Skype™ schicken
Standard

Erster Fehler:

Zitat:
PHP-Code:
$abfrage "SELECT * FROM ipadresse;"
Das erste Semikolon muss weg!

Mit
PHP-Code:
$_SERVER['SCRIPT_NAME'
baust du eine URL ausgehend vom Wurzelverzeichnis (dieser referenziert auf das aktuelle Skript). Also z.B. /Allrounder/Skripts/bla/meinSkript.php
Arbeite hier lieber nur mit dem eigentlichen Skriptnamen, insofern sich das Zielskript im selben Verzeichnis befindet! Also z.B.
PHP-Code:
<a href="meinSkript.php">ZIEL</a
Die ID übergibst du per $_GET, was dadurch ersichtlich wird, dass du die ID an die URL mit dranhängst!
PHP-Code:
<a href="meinSkript.php?id=IrgendEinIntegerWert">ZIEL</a
Jetzt setzt du dich bitte noch ein wenig mit $_GET auseinander und dein Problem sollte sich klären lassen.

Viele Grüße,
der ChillSn
__________________
PHP-Code:
while($humans>=2)
       
war(); 
ChillSn ist offline  
Alt 11.08.2009, 13:04  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Nur eine Vermutung: Besteht dein Problem aus dem Auto Increament?


Zitat:
Erster Fehler:

Zitat:
PHP-Code:
$abfrage = "SELECT * FROM ipadresse;";


Das erste Semikolon muss weg!
Versuchs mal, geht einwandfrei Sollte man dennoch nicht angeben.
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog

Geändert von rudygotya (11.08.2009 um 13:07 Uhr).
rudygotya ist gerade online  
Alt 11.08.2009, 13:19  
Erfahrener Benutzer
 
Benutzerbild von ChillSn
 
Registriert seit: 28.07.2009
Beiträge: 267
PHP-Kenntnisse:
Fortgeschritten
ChillSn befindet sich auf einem aufstrebenden Ast
ChillSn eine Nachricht über Skype™ schicken
Standard

@rudygotya
Hmm, ich hatte es nicht getestet mit dem Semikolon, aber es sieht mir dort fehl am Platze aus.

@Allrounder
Die Auto-increment-ID ist immer eindeutig und wird nach einmaliger Vergabe niemals neu vergeben (somit können zwar Lücken entstehen z.B. 1,2,4,7 - wenn du die 3,5 und die 6 gelöscht hast, aber das ist nicht schlimm, sondern so gewollt). Es wäre auch schlimm, das wenn du einen Datensatz löschst, bei 5 anderen die ID veränderst. Das ist nicht der Gedanke von Konsistenz und Integrität einer Datenbank!

Wenn du die Datensätze bei der Ausgabe durchnummerieren willst, dann setze eine Variable ein, die du in jedem Schleifendurchlauf um eins inkrementierst und zu dem Datensatz ausgibst.

VG, der ChillSn
__________________
PHP-Code:
while($humans>=2)
       
war(); 
ChillSn ist offline  
Alt 12.08.2009, 11:42  
Neuer Benutzer
 
Registriert seit: 01.07.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Allrounder befindet sich auf einem aufstrebenden Ast
Standard

Danke ich konnte mit eurer Hilfe viele Probleme lösen und es funktioniert einwandfrei.
Ich habe mich auch gestern Abend und heute morgen mit dem Button zum verändern einer Zeile auseinandergesetzt und beim Versuch eine Zeile zu verändern kommt keine Fehlermeldung, aber es kommt auch keine Anzeige zum verändern der Zeile.

PHP-Code:

<?php

$host 
"localhost";
$user "root";
$password "";
$db "ipadresse"

// DB-Verbindung herstellen
if ($verbindung mysql_connect($host$user$password)) {
    echo 
"Die Verbindung mit der Datenbank auf <B>$host</B> wurde aufgebaut.<P>";
    } else {
    echo 
"Der Verbindungsversuch zur DB ist fehlgeschlagen! " .
    
mysql_error();
    exit();
}

//Die Datenbank auswählen
if (!mysql_query("USE $db;")) {
    echo 
"Die Datenbank konnte nicht ausgewählt werden: " mysql_error();
    exit();
} else {
    echo 
"Die Datenbank <B>$db</B> wurde ausgewählt.<P>";
}


$id = (int) $_GET['id'];
$bearbeiten 'CHANGE FROM ipadresse WHERE id =  '$id;
$change mysql_query($bearbeiten); 

echo 
"Der Eintrag wurde erfolgreich geändert!";
    
    
    
    
    
?>

<INPUT TYPE='button' NAME='Button1' VALUE='Zurück zur Startseite'
onClick = 'location.href="P1START.php"'>
Die id müsste er erkennen, aber ich bezweifle das die Semantik stimmt

Irgendwie müsste ich es hiermit verbinden:

PHP-Code:
IP-Adresse:   <INPUT TYPE="text" NAME="IP-Adresse"><BR>
Gateway: <INPUT TYPE="text" NAME="Gateway"><BR>
Network:   <INPUT TYPE="text" NAME="Network"><BR>
Description:   <INPUT TYPE="text" NAME="Description"><BR>
DNS-Name: <INPUT TYPE="text" NAME="DNSname"><BR>
<
BR> <P>            

<
INPUT TYPE="submit" NAME="GO" VALUE="Übertragen"
Doch ich habe das programmiert um eine neue Zeile in die DB einzutragen.

Also vermute ich das ich irgendwie die ID in Verbindung bringen muss, um dann den Eintrag zu ändern, doch wie funktioniert das in php?

Ich weiß nicht weiter und meine Versuche führten immer nur zu Fehlermeldungen.
Allrounder ist offline  
Alt 12.08.2009, 11:51  
Benutzer
 
Registriert seit: 10.08.2009
Beiträge: 72
PHP-Kenntnisse:
Fortgeschritten
mattla93 befindet sich auf einem aufstrebenden Ast
Standard

Datensatz aktualisieren/ändern
mattla93 ist offline  
Alt 12.08.2009, 12:03  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Allrounder Beitrag anzeigen
PHP-Code:
$bearbeiten 'CHANGE FROM ipadresse WHERE id =  '$id
Wo hast du denn den Blödsinn her? Ich meine, dass der SQL-Update- bzw. Insert-Befehl zu den absoluten Grundlagen gehört.
Des weitern was hier schon tausend mal gesagt wurde zum Debuggen von DB-Problemen:
  • Rückgabewert von mysql_query() abfragen und falls nicht ok mysql_error() ausgeben
  • Evaluierte Abfrage ausgeben
  • error_reporting() einschalten
__________________
Gruss
L
lazydog ist offline  
Alt 12.08.2009, 13:00  
Neuer Benutzer
 
Registriert seit: 01.07.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Allrounder befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Links, aber ich versuche selbstverständlich erst über diese Grundlagen und Foren mein Problem zu lösen. Irgendwie fehlt mir grad das AHA-Erlebnis,


PHP-Code:
$id = (int) $_GET['id'];
$bearbeiten 'UPDATE FROM ipadresse WHERE id =  '$id;
$update mysql_query($bearbeiten); 

PHP]
Spaltenname1 = 'Wert2'
WHERE Spaltenname2 = 'Wert2'";
[/php]


Was ist mit dem zweiten Code gemeint? Mit Spaltenname kann ich mir vorstellen ipadresse zu ändern, aber insgesamt habe ich sieben spalten und beim wert ist es so, dass der wert immer verschieden ist und ich ihn separat ändern möchte.
Ich kann den WERT doch nicht schon jetzt bestimmen.

falls ihr noch glaubt das die Grundlagen wirklich alle probleme lösen, dann beantwortet mir bitte eine frage.

Kann ich mit den Befehl alle Daten von einer Zeile abrufen und anzeigen lassen UND so wie ich möchte verändern und so ordentlich in der Datenbank speichern? Mit neuem last_change?
Weil in diesem Code den ich immer wieder für das verändern der DB sehe, erkenne ich nichtmal ein Button der dann die veränderten Daten überträgt.
Versteht ihr was ich meine?

Viele Grüße
Allrounder ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Löschen von Datensätzen pioneer01 Datenbanken 2 02.08.2009 13:09
tabelle 2 in tabelle 1 updaten steffen_dk Datenbanken 11 04.07.2009 15:04
[Erledigt] Problem mit der Registrierung, problem erkannt Lösen aber wie?? mastertnt PHP Tipps 2009 1 13.02.2009 00:19
MYSQL WHERE AND Problem YAT PHP Tipps 2009 17 23.01.2009 12:39
[Suche] Hilfe zu einem Tabellen Verknüpfungs Problem &lt;Daniel&gt; Datenbanken 3 10.07.2006 15:15
3 spaltige Tabelle - Experten Problem havok PHP Tipps 2006 12 19.05.2006 11:55
MySQL kodierungs problem Mutatos Datenbanken 0 12.05.2006 20:02
Problem bei JOIN MilanX Datenbanken 3 03.05.2006 16:36
Zeilenanzahl einer tabelle mit WHERE aber ohne schleife? sovereign Datenbanken 13 17.04.2006 20:34
[Erledigt] Problem mit dem Füllen einer Tabelle über Formular PHP Tipps 2006 18 10.01.2006 12:51
Tabelle verknüpfungs problem! PHP Tipps 2005 16 21.05.2005 11:07
Problem bei erstellung einer tabelle mit function und array PHP Tipps 2005 5 21.04.2005 20:54
komisch problem mit tabelle oder datenbank nix verstehen :) Datenbanken 2 14.03.2005 12:32
problem mit einer datenbakgestützten tabelle PHP Tipps 2004 2 05.07.2004 19:39
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
id phpmyadmin neu durchnummerieren, $id = $zeile[id];, echo \<td>\. $zeile[\'id\'] . \</td>\;, where id= $id php, php editieren id, id=$zeile->id, onclick=\\\location.href=\'\ . $_server[\script_name\] .

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum