Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Namen von Liste zu Liste verschieben (https://www.delphipraxis.net/113772-namen-von-liste-zu-liste-verschieben.html)

Delphiturbo 14. Mai 2008 14:05


Namen von Liste zu Liste verschieben
 
Hallo
ich möchte 2 Listen in php Datenbank erstellen

Liste 1:
Delphi-Quellcode:
NINA
Gehard
Angela
Helmut
...
Liste 2:
Leer

Nun wird das Formular von Kunden an eine php-datei geschickt
Der php Code soll zuerst überprüfen ob der Name in der Liste 1 überhaupt existiert
Wenn ja, dann soll der name von Liste 1 zu Liste 2 verschoben


Wer kann mit dabei mit einem Code helfen :?

Nuclear-Ping 14. Mai 2008 14:37

Re: Namen von Liste zu Liste verschieben
 
www.gidf.de

-> http://www.google.de/search?hl=de&q=...le-Suche&meta=

_frank_ 14. Mai 2008 19:02

Re: Namen von Liste zu Liste verschieben
 
wie liegen die Listen vor? sind das 2 tabellen einer (mysql-)Datenbank?
abfragen geht mit SELECT dann prüfst du per mysql_num_rows ob etwas zurückgegeben wurde, wenn ja holst du dir das result und schreibst es in die neue (per INSERT).

HTH Frank

Daniel 14. Mai 2008 20:13

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Delphiturbo
Wer kann mit dabei mit einem Code helfen :?

Das ist nicht Sinn & Zweck dieses Forums. Hier geht es - kurz gesagt - darum, fachliche Fragen zu stellen und diese dann zu diskutieren und zu beantworten. Dir hingegen fehlen derart viele Grundlagen, dass es Dir - und das zeigen Deine bisherigen Beiträge - nicht einmal ansatzweise möglich ist, die vorgeschlagenen Lösungen zu verstehen.

Das ist prinzipiell kein Problem, wie alle haben einmal angefangen. Aber bitte schaue der Realität ins Auge und befasse Dich vorerst mit Seiten, die Dir die Grundlagen vermitteln (zum Beispiel www.delphi-treff.de). Wenn Du die drauf hast, macht der Rest auch gleich viel mehr Spaß, weil sich die dann neue Komponente "Verstehen" mit einmischt.


Vorher macht das Fortführen dieser Frage auch keinen Sinn.

DeddyH 14. Mai 2008 20:15

Re: Namen von Liste zu Liste verschieben
 
Gut gebrüllt, Cheffe :mrgreen:

Delphiturbo 14. Mai 2008 20:44

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von _frank_
wie liegen die Listen vor? sind das 2 tabellen einer (mysql-)Datenbank?
abfragen geht mit SELECT dann prüfst du per mysql_num_rows ob etwas zurückgegeben wurde, wenn ja holst du dir das result und schreibst es in die neue (per INSERT).

HTH Frank

Ich habe 2 Tabellen (Liste1, Liste2)
Die Tabellen sind identisch

hier ist mein php-Code, wie ich die Daten in die Tabelle2 (Liste2) speichere
Delphi-Quellcode:
<?php

$server = "localhost";
$user = "xxxxxx";
$passwort = "xxxxxx";
$datenbank = "xxxxxxxxx";

mysql_connect($server, $user, $passwort) or die(" keine Verbindung etabliert!");
mysql_select_db($datenbank) or die("Datenbank gefunden!");

$clientdatum = $_POST['name'];
$clientnachricht = $_POST['vorname'];
$clientnummer = $_POST['telefon'];
$clientprodukt = $_POST['adresse'];


$sql = "INSERT INTO Liste2 (name, vorname, telefon, adresse) VALUES('$name','$vorname','$telefon','adresse')";
mysql_query($sql) or die("Anfrage fehlgeschlagen: " . mysql_error());
//$sql="DELETE from Liste1 order by clientdatum LIMIT 1";
$result = mysql_query($sql);
...
?>
Ich möchte vor dem Speichern der Daten in Tabelle2 (Liste2) zuerst überprüfen
ob der Name schon in der Tabelle 1 da ist
ist da, dann den Namen von Liste1 löschen und dann die Daten in Liste2 speichern

_frank_ 14. Mai 2008 22:01

Re: Namen von Liste zu Liste verschieben
 
ich würde dir empfehlen eine Index-Spalte (primary key) anzulegen, um die Einträge eindeutig zu identifizieren.

ansonsten hab ich mal so aus dem kopf mal was zusammengebastelt...natürlich ungetested :D Es soll ja nur die Vorgehensweise veranschaulichen...

Code:
<?php

$server = "localhost";
$user = "xxxxxx";
$passwort = "xxxxxx";
$datenbank = "xxxxxxxxx";

mysql_connect($server, $user, $passwort) or die(" keine Verbindung etabliert!");
mysql_select_db($datenbank) or die("Datenbank gefunden!"); //Fehler "Datenbank gefunden", wenn verbindung fehlschlägt?

//wozu diese 4 variablen mit den unpassenden Namen?
$clientdatum = $_POST['name'];
$clientnachricht = $_POST['vorname'];
$clientnummer = $_POST['telefon'];
$clientprodukt = $_POST['adresse'];

$q="SELECT * FROM Liste1 WHERE ..." //den Datensatz suchen
$result = mysql_query($sql);
if (mysql_num_rows($query)>0)//wurde gefunden?
{
  $line=mysql_fetch_rows($query);
  $sql="DELETE FROM Liste1 WHERE `ID`=='".$line["ID"]."' LIMIT 1";//Datensatz anhand der ID löschen
  $result = mysql_query($sql);
  //jetzt in Liste 2 einfügen
 
  $sql = "INSERT INTO Liste2 (name, vorname, telefon, adresse) VALUES($line['name'],$line['vorname'],$line['telefon'],$line['adresse'])";
  $result = mysql_query($sql);
}

?>
HTH Frank

Delphiturbo 14. Mai 2008 22:57

Re: Namen von Liste zu Liste verschieben
 
Jemand heißt z.B. NINA schickt das Formular an diese php Datei

Der PHP Script sucht den Namen "Nina" in Liste1 in Spalte "Name" und findet den Namen NINA
Der Name wird von Liste 1 gelöscht und in Liste 2 hinzugefügt

nun habe ich bis hier verstanden :
Delphi-Quellcode:
...
mysql_connect($server, $user, $passwort) or die(" keine Verbindung etabliert!");
mysql_select_db($datenbank) or die("Datenbank gefunden!");
$q="SELECT * FROM Liste1 where id=".$Name); //den Datensatz suchen
$result = mysql_query($sql);// wie wurde Nina gefunden !
if (mysql_num_rows($query)>0)// 


$query->delete("delete from Liste1 where id=".$Name); //??? Es soll die Zeile, wo der Name Nina steht, gelöscht

_frank_ 14. Mai 2008 23:20

Re: Namen von Liste zu Liste verschieben
 
steht der name in der spalte "Id"?
wo liegt genau das Problem?

Code:
...
mysql_connect($server, $user, $passwort) or die(" keine Verbindung etabliert!");
mysql_select_db($datenbank) or die("Datenbank gefunden!");
$sql="SELECT * FROM Liste1 where id=".$Name); //den Datensatz suchen => in $sql geändert
$result = mysql_query($sql);// wie wurde Nina gefunden ! => versteh den Kommentar nicht...evtl. wegen $q<>$sql
if (mysql_num_rows($query)>0)// => anzahl der zeilen, die zurückgegeben werden


$query->delete("delete from Liste1 where id=".$Name); //??? Es soll die Zeile, wo der Name Nina steht, gelöscht
die letzte zeile hat auch eine eigenartige syntax...musst das schon machen wie oben...also

Code:
$sql="";
$result =mysql_query($sql);
sag mal, was genau nicht geht bzw. welche fehlermeldungen kommen.

Gruß Frank

Delphiturbo 15. Mai 2008 15:00

Re: Namen von Liste zu Liste verschieben
 
Beim Auslesen, zeigt mit der Code die 1.Zeile in der Tabelle
Delphi-Quellcode:
...
$result = mysql_query("SELECT * FROM $Liste1 ORDER BY name DESC");
wie kann ich die untere (letzte Zeile) auslesen?
Die letzte Zeile ist natürlich die neue gespeicherte Daten

Klaus01 15. Mai 2008 15:08

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Delphiturbo
Beim Auslesen, zeigt mit der Code die 1.Zeile in der Tabelle
Delphi-Quellcode:
...
$result = mysql_query("SELECT * FROM $Liste1 ORDER BY name DESC");
Die letzte Zeile ist natürlich die neue gespeicherte Daten

Ist sie nicht unbedingt, denn Du hast ja eine Sortierreihenfolge
angegeben.

Grüße
Klaus

Delphiturbo 15. Mai 2008 15:52

Re: Namen von Liste zu Liste verschieben
 
Wie kann ich die Tabelle sortieren ?
Ich habe eine neue Spalte hinzugefügt. Die Spalte heißt DatumZeit
Inhalt :
Delphi-Quellcode:
$zeit = date("d.m.Y H:i:s");// aktuelles Datum und Zeit werden gespeichert
nun soll die Tabelle nach Datum und Zeit in bei der Spalte DatumZeit sortiert

Wie mache ich das ?

Klaus01 15. Mai 2008 17:17

Re: Namen von Liste zu Liste verschieben
 
Hallo,

verstehst Du die Codes die Du kopierst?
In Deinem Beitrag #10 wird nach dem Feld name sortiert
in absteigender (descending) Reihenfolge.
Wenn Du jetzt nach dem Feld DatumZeit sortieren willst,
welches Feld muss dann wohl eingetragen werden?

Grüße
Klaus

Der.Kaktus 15. Mai 2008 17:51

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Klaus01
Hallo,

verstehst Du die Codes die Du kopierst?
In Deinem Beitrag #10 wird nach dem Feld name sortiert
in absteigender (descending) Reihenfolge.
Wenn Du jetzt nach dem Feld DatumZeit sortieren willst,
welches Feld muss dann wohl eingetragen werden?

Grüße

*geloescht*

Delphiturbo 15. Mai 2008 20:24

Re: Namen von Liste zu Liste verschieben
 
ich bekomme ein Fehler in diese Zeile :
Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = ".$name"; //Fehler
$result = mysql_query($sql);
if (mysql_num_rows($query)>0)
Error :
Parse error: syntax error, unexpected '"' in /www/ ... test.php on line 26

Matze 15. Mai 2008 20:35

Re: Namen von Liste zu Liste verschieben
 
Das letzte Anführungszeichen ist zu viel und genau das sagt doch exakt die Meldung. :wall:

_frank_ 15. Mai 2008 20:40

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Delphiturbo
Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = ".$name"; //Fehler
Error :
Parse error: syntax error, unexpected '"' in /www/ ... test.php on line 26

mhm...was sagt die fehlermeldung aus... :gruebel:
er findet ein ", was da nicht hingehört...in php muss zwischen den einzelnen Stringabschnitten immer ein Punkt (concatenation-operator) sein, wie + bei Delphi (gut, es gibt bei D die Ausnahme mit chars [#xx]).
Wenn du da mal schaust, wirst du feststellen, dass du hinten versuchst, ohne Punkt einen neuen string zu öffnen und dieser nichtmal geschlossen wird.

HTH Frank

Delphiturbo 15. Mai 2008 21:01

Re: Namen von Liste zu Liste verschieben
 
Delphi-Quellcode:
// in diese Zeile verstehe ich nicht !
  $sql="DELETE FROM Liste1 WHERE `ID`=='".$line["ID"]."' LIMIT 1";//Datensatz anhand der ID löschen
soll nicht so eingegeben:
Delphi-Quellcode:
 $sql="DELETE FROM Liste1 WHERE Name = .$name LIMIT 1";

Phoenix 15. Mai 2008 21:07

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Delphiturbo
Delphi-Quellcode:
// in diese Zeile verstehe ich nicht !
  $sql="DELETE FROM Liste1 WHERE `ID`=='".$line["ID"]."' LIMIT 1";//Datensatz anhand der ID löschen
soll nicht so eingegeben:

Genau.. NICHT so :wall:

Mit " machst Du einen String auf (und dann wieder zu).
Mit . hängst Du verschiedene Strings aneinander.

Also wird aus

Delphi-Quellcode:
$sql="DELETE FROM Liste1 WHERE `ID`=='".$line["ID"]."' LIMIT 1";
Delphi-Quellcode:
$sql="DELETE FROM Liste1 WHERE `Name`=='" . $name . "' LIMIT 1";
Wenn Du anhand des Namens löschen willst.

WAS zum Teufel ist denn daran so schwer?

Edit Nachtrag:

Wenn übrigens jemand so heisst:
Zitat:

Sebastian'; DROP TABLE Liste1; --
hast Du ein ziemliches Problem.

Du solltest lieber SQL Parameter nutzen anstelle das SQL-Statement selber zusammenzubauen...

Matze 15. Mai 2008 21:30

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Phoenix
Du solltest lieber SQL Parameter nutzen anstelle das SQL-Statement selber zusammenzubauen...

Oder mysql_real_escape() verwenden.

Delphiturbo 15. Mai 2008 21:36

Re: Namen von Liste zu Liste verschieben
 
nun bekomme ich diesen Fehler :
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in

Delphi-Quellcode:
  //jetzt in Liste 2 einfügen
  $sql = "INSERT INTO Liste2 (name, telefon, email, adresse) VALUES($line['name'],$line['telefon'],$line['email'],$line['adresse'])";
  $result = mysql_query($sql);

_frank_ 15. Mai 2008 21:44

Re: Namen von Liste zu Liste verschieben
 
eigentlich hab ich den Fehler abschtlich reingebaut damit du nicht einfach nur kopierst :D
aber mal eine kleine hilfe (war vielleicht doch bisschen fies)...wenn du auf array-eigenschaften zugreifen willst und die in einen string einbauen willst, kannst du diese nicht direkt einbauen, sondern musst sie concatenaten...also so:
Code:
  $sql = "INSERT INTO Liste2 (name, vorname, telefon, adresse) VALUES('".$line['name']."','".$line['vorname']...
HTH Frank

Delphiturbo 15. Mai 2008 22:27

Re: Namen von Liste zu Liste verschieben
 
ich bekomme jetzt einen Fehler außerhalb des php codes :

//formular anfang
echo '<form action="#" method="post" name="formular">
<table border="0" align="center">
<tr>
<td></td>
</tr>

Parse error: syntax error, unexpected T_STRING in /www/... test.php on line 50

Die Muhkuh 15. Mai 2008 22:29

Re: Namen von Liste zu Liste verschieben
 
Wie liest Du die Datei ein?

_frank_ 15. Mai 2008 22:33

Re: Namen von Liste zu Liste verschieben
 
wo machst du den echo-string wieder zu? (sehe kein schließendes ')
welche zeile ist zeile 50? die mit echo? was steht 1 Zeile vor dem kommentar (evtl. ; vergessen)?

Gruß Frank

Delphiturbo 15. Mai 2008 22:40

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Die Muhkuh
Wie liest Du die Datei ein?

Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = .$Name";
früher füge ich Daten in Tabellen in diesem Prinzip ein :
Delphi-Quellcode:
<? 
$q = "INSERT INTO Liste2 (name, email, telefon) VALUES ('$name', '$email', '$telefon')"; // und funktioniert
?>
Ich wollte nur vor dem Einfügen in Liste2, eine Zeile in Liste1 löschen, wo Name gefunden wird. Mehr nicht :cry:

Delphiturbo 15. Mai 2008 22:42

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von _frank_
welche zeile ist zeile 50? die mit echo? was steht 1 Zeile vor dem kommentar (evtl. ; vergessen)?
Gruß Frank

Nein. Sondern wo die Zeile Fett ist:
<table border="0" align="center">

Die Muhkuh 15. Mai 2008 22:50

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von Die Muhkuh
Wie liest Du die Datei ein?

Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = .$Name";

Wenn dann so:

Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = $Name";

Delphiturbo 15. Mai 2008 23:09

Re: Namen von Liste zu Liste verschieben
 
Delphi-Quellcode:
$q="SELECT * FROM Liste1 WHERE Name = $Name"; // hat es nichts geändert
// Fehler bleibt immer der selbe !

_frank_ 15. Mai 2008 23:12

Re: Namen von Liste zu Liste verschieben
 
poste mal bitte di komplette Datei, sonst wird das nur gerätsel...
in dem Abschnitt kann ich jetzt keinen fehler erkennen (außer das fehlende ' am ende,was du aber evtl. nur nicht mit kopiert hast)

Gruß Frank

Delphiturbo 15. Mai 2008 23:28

Re: Namen von Liste zu Liste verschieben
 
Delphi-Quellcode:
<?php

$server = "xxxx";
$user = "xxxx";
$passwort = "xxxxx";
$datenbank = "xxxxx";


mysql_connect($server, $user, $passwort) or die("keine Verbindung etabliert!");
mysql_select_db($datenbank) or die("Datenbank nicht gefunden!");

$name = $_POST['name'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$adresse = $_POST['adresse'];


$q="SELECT * FROM liste1 WHERE name = $name"; //den Datensatz suchen
$result = mysql_query($sql);

if (mysql_num_rows($query)>0)

{
$line=mysql_fetch_rows($query);

  $sql="DELETE FROM liste1 WHERE `name`=='" $name . "' LIMIT 1";//Datensatz anhand der ID löschen
 $result = mysql_query($sql);
  //jetzt in Liste 2 einfügen

  $sql = "INSERT INTO liste2 (name, email, telefon, adresse) VALUES('".$line['name']."','".$line['email']."','".$line['telefon']."','".$line['adresse']."');
  $result = mysql_query($sql)"; // korrigiert
}



//formular anfang
echo '<form action="#" method="post" name="formular">
<table border="0" align="center">
<tr>
<td></td>
</tr>


<tr>
<td><input type="text" name="name" value="xxxx"></td>
</tr>

<tr>
<td><input type="text" name="email" value="xxx@xxx.de"></td>
</tr>

<tr>
<td><input type="text" name="telefon" value="xxxxxx"></td>
</tr>

<tr>
<td><input type="text" name="adresse" value="xxxxxx"></td>
</tr>



<tr>
<td align="center"><input type="submit" name="submit" value="senden"></td>
</tr>
</table>


</p>
</form>';
//formular ende
?>

_frank_ 15. Mai 2008 23:32

Re: Namen von Liste zu Liste verschieben
 
wie ich vermutet habe ist der fehler weiter oben ein fehlendes ". genauer gesagt am ende von Zeile 30 (vor der schließenden Klammer).

mit einem Syntax-hightlighting-fähigen Editor sieht man sowas ziemlich schnell...siehe scite in meiner signatur ;)

HTH Frank

Delphiturbo 15. Mai 2008 23:43

Re: Namen von Liste zu Liste verschieben
 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/...test.php on line 21

also in:
Delphi-Quellcode:
if (mysql_num_rows($query)>0)

_frank_ 15. Mai 2008 23:51

Re: Namen von Liste zu Liste verschieben
 
sagmal...willst programmieren, oder sollen wir dir alles vorkauen? :twisted:

du sollst verstehen, was der Code macht, dann siehst du auch, wo der fehler ist. ich hab das nur aus dem Kopf geschrieben...aber du musst die Rückgabe des letzten querys übergeben. :wall:

Gruß Frank

Delphiturbo 16. Mai 2008 00:22

Re: Namen von Liste zu Liste verschieben
 
Ich habe wieder meinen alten Code verwendet
Ich bekomme zwar keine Fehlermeldung
Es wird aber keine Daten gespeichert !

Delphi-Quellcode:
$q="SELECT * FROM liste1 WHERE name = $name"; //den Datensatz suchen
$result = mysql_query($sql);

if( mysql_num_rows( mysql_query( "select * from liste1 where name='$name'" ) ) > 0 )
{
mysql_query( "insert into liste2(name,email,telefon,adresse) values('$name','$email','$telefon','$adresse')" );


$sql="DELETE FROM liste1 WHERE name = $name";//Datensatz anhand der ID löschen
 $result = mysql_query($sql);
}
  //jetzt in Liste 2 einfügen
...

Medium 16. Mai 2008 00:24

Re: Namen von Liste zu Liste verschieben
 
Wie ignorant kann man eigentlich sein? *kopfschüttelnd ins Bett geht*

Nuclear-Ping 16. Mai 2008 06:03

Re: Namen von Liste zu Liste verschieben
 
Nein ... ich werde nicht ... *zurückhalt* ... :wall:

Daniel 16. Mai 2008 07:41

Re: Namen von Liste zu Liste verschieben
 
Zitat:

Zitat von Nuclear-Ping
Nein ... ich werde nicht ... *zurückhalt* ... :wall:

Solche Beiträge sind auch nicht gerade förderlich. :roll:


Dennoch hat das jetzt so keinen Sinn mehr.

@Delphi-Turbo: Du versuchst Dich hier an etwas, was für Deine derzeitigen Kenntnisse eine Nummer zu groß ist. Ich weiß nun, dass es manchmal leichter gesagt als getan ist, zu sagen: "Lies' Dir das Zeug durch" - aber eine andere Alternative kann ich Dir derzeit mangels besserer Ideen nicht ans Herz legen.

Im Moment ist die Situation etwas verfahren. Du kommst fachlich keinen Schritt weiter und die Diskussion driftet in eine Richtung, in der sie Dir immer weniger hilft. Ich rate Dir, einen Schritt langsamer zu machen und eigenen Code zu entwickeln. Auf spielerische Weise kommst Du so schnell zu Fortschritten und diese Vorgehensweise müsste Dir eigentlich ganz gut liegen.

Ich mache hier mal zu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz