dba_fetch() und dba_exists()

Hi,
so, neue Problem…
Ich will Daten im Datenbank speichern, aber ich will zu erst überprüfen ob die schon existieren, um zu wissen ob ich INSERT oder UPDATE benutzen sollte.
Mein Problem: ich bin nicht sicher wie dba_fetch() und dba_exists() funktionieren, ich hab im google gesucht, aber ich verstehe nicht was die string key und die int handle sind.

Wenn user_ID=="$user_ID" && projekt_ID=="$id" existieren dann es sollte ein Update gemacht werden.

if ((isset($_REQUEST[‚submit‘]))) {
if(!dba_exists( ich weiß nicht was ich hier eintragen soll) ){
$query = "INSERT INTO ".DB_PREFIX.„soll_ist_std
(projekt_ID, user_ID, soll_std, ist_std)
VALUES (’$id’, ‚$user_ID‘, ‚$soll_std‘, ‚$ist_std‘ )“;
$result= db_query($query) or db_die(„Error“);
$row = db_fiel_name($result);
}
else{
$query = "UPDATE ".DB_PREFIX.„soll_ist_std
SET soll_std = $soll_std, ist_std = $ist_std
WHERE projekt_ID = $id
AND user_ID = $user_ID“;

$result= db_query($query) or db_die(„Error“);
$row = db_fiel_name($result);
}
}

Dann will ich die vor und nachname des $user_ID speichern

Also als Ergebniss will ich eine bestimmte eingabe von db lesen.
z.B so etwa wie:
„SELECT nachname, vorname
FROM“.DB_PREFIX.„users
WHERE projekt_ID = $id
AND user_ID = $user_ID“;

damit ich diese im DB_PREFIX."soll_ist_std speichern kann

"INSERT users.nachname, users.vorname
INTO ".DB_PREFIX."soll_ist_std
WHERE user_ID = „$user_ID“;

moin

Hi,
so, neue Problem…
Ich will Daten im Datenbank speichern, aber ich will zu erst
überprüfen ob die schon existieren, um zu wissen ob ich INSERT
oder UPDATE benutzen sollte.

Vorschlag:
Wende das update an - schau dann nach den affected rows - wenn diese grösser als Null sind, dann überspring das insert - wenn es gleich 0 ist, dann kannst Du das insert anwenden.
Das ist meiner Meinung nach der schnellste Weg…

Mein Problem: ich bin nicht sicher wie dba_fetch() und
dba_exists() funktionieren, ich hab im google gesucht, aber
ich verstehe nicht was die string key und die int handle sind.

hab das noch nie benutzt - daher nur theoretisch:
int handle ist das, was Deine DB Verbindung identifiziert.
wenn Du mit $handle = dba_open(…) arbeitest, dann ist das was hinten steht das $handle.
Der Key ist eben der identifier für den Datensatz, den Du ausliest…

moin

Hi,
so, neue Problem…
Ich will Daten im Datenbank speichern, aber ich will zu erst
überprüfen ob die schon existieren, um zu wissen ob ich INSERT
oder UPDATE benutzen sollte.

Vorschlag:
Wende das update an - schau dann nach den affected rows - wenn
diese grösser als Null sind, dann überspring das insert - wenn
es gleich 0 ist, dann kannst Du das insert anwenden.
Das ist meiner Meinung nach der schnellste Weg…

Was soll hier >0 sein, die affected rows?, aber die werden nur „affected“ nach dem INSERT.

Weiß du noch wie ich Zugriff auf ein Feld des DB haben kann, damit ich es mit echo ausgeben kann.

so z.B. ich will die nachname und vorname ein bestimmtes user ausgeben
ich weiß das geht mit SELECT, aber wie…

$query = „SELECT nachname, vorname
FROM“.DB_PREFIX.„users
WHERE ID=$user_ID“;
$result = db_query($query) or db_die(„Error“);
$row = db_fiel_name($result);
}

jetzt will ich es irgendwie mit echo ‚‘; es ausgeben

Weiß du noch wie ich Zugriff auf ein Feld des DB haben kann,
damit ich es mit echo ausgeben kann.

so z.B. ich will die nachname und vorname ein bestimmtes user
ausgeben
ich weiß das geht mit SELECT, aber wie…

$query = „SELECT nachname, vorname
FROM“.DB_PREFIX.„users
WHERE ID=$user_ID“;
$result = db_query($query) or db_die(„Error“);
$row = db_fiel_name($result);
}

jetzt will ich es irgendwie mit echo ‚‘; es ausgeben

Schon erledigt!

$result = db_query("SELECT nachname, vorname FROM ".DB_PREFIX.„users WHERE ID=$user_ID“);
$row = db_fetch_row($result);
$nachname = $row[0];
$vorname = $row[1];

Es fehlt mir nur mein erstes Problem zu lösen.

Vorschlag:
Wende das update an - schau dann nach den affected rows - wenn
diese grösser als Null sind, dann überspring das insert - wenn
es gleich 0 ist, dann kannst Du das insert anwenden.
Das ist meiner Meinung nach der schnellste Weg…

Was soll hier >0 sein, die affected rows?, aber die werden
nur „affected“ nach dem INSERT.

Du verwechselst das wohl mit mysql_insert_id.

Beispiel 2. Update-Query

<?php /* Verbindung zur Datenabank */<br />mysql\_pconnect("localhost", "mysql\_user", "mysql\_password")
 or die ("Keine Verbindung möglich: " : . mysql\_error());
mysql\_select\_db("mydb");

/\* Update von Datensätzen \*/
mysql\_query("UPDATE mytable SET used=1 WHERE id \< 10");
printf ("Veränderte Datensätze: %d\n", mysql\_affected\_rows());
mysql\_query("COMMIT");
?\>

Du verwechselst das wohl mit mysql_insert_id.

Beispiel 2. Update-Query

<?php :/* Verbindung zur Datenabank */
mysql\_pconnect("localhost", "mysql\_user", "mysql\_password") or die ("Keine Verbindung möglich: " : . mysql\_error()); mysql\_select\_db("mydb"); /\* Update von Datensätzen \*/ mysql\_query("UPDATE mytable SET used=1 WHERE id \< 10"); printf ("Veränderte Datensätze: %d\n", mysql\_affected\_rows()); mysql\_query("COMMIT"); ?\>

also UPDATE funktioniert jetzt, aber mein Problem ist, dass bei die Erstellung eine neue Eingabe, die ältere Eingaben werden zur ‚0‘ gewechselt und nicht gelöscht… wie kann ich machen, damit es eine Richtige update wird?

if ((isset($_REQUEST[‚submit‘])) && (!$soll_std_vor) && (!$ist_std_vor)) {
$query = "INSERT INTO ".DB_PREFIX.„soll_ist_std
SET projekt_ID =’$id’,
user_ID = ‚$user_ID‘,
soll_std = ‚$soll_std‘,
ist_std = ‚$ist_std‘,
nachname = ‚$nachname‘,
vorname = ‚$vorname‘“;
$result = db_query($query) or db_die(„Error“);
$row = db_field_name($result);
}
else {
$query = "UPDATE ".DB_PREFIX."soll_ist_std
SET
soll_std = ‚$soll_std‘,
ist_std = ‚$ist_std‘

WHERE projekt_ID = ‚$id‘
AND user_ID = ‚$user_ID‘";
$result= db_query($query) or db_die(„Error“);
$row = db_field_name($result);

also UPDATE funktioniert jetzt, aber mein Problem ist, dass
bei die Erstellung eine neue Eingabe, die ältere Eingaben
werden zur ‚0‘ gewechselt und nicht gelöscht… wie kann ich
machen, damit es eine Richtige update wird?

versuch Dich klar auszudrücken, dann versuch ich vielleicht Dein Problem zu verstehen…
und verwende pre tags für code!

> if ((isset($\_REQUEST['submit'])) && (!$soll\_std\_vor) &&  
> (!$ist\_std\_vor)) {  
> $query = "INSERT INTO ".DB\_PREFIX."soll\_ist\_std  
> SET projekt\_ID ='$id',  
> user\_ID = '$user\_ID',  
> soll\_std = '$soll\_std',  
> ist\_std = '$ist\_std',  
> nachname = '$nachname',  
> vorname = '$vorname'";  
> $result = db\_query($query) or db\_die("Error");  
> $row = db\_field\_name($result);   
> }  
> else {  
> $query = "UPDATE ".DB\_PREFIX."soll\_ist\_std  
> SET  
> soll\_std = '$soll\_std',  
> ist\_std = '$ist\_std'  
>   
> WHERE projekt\_ID = '$id'  
> AND user\_ID = '$user\_ID'";  
> $result= db\_query($query) or db\_die("Error");  
> $row = db\_field\_name($result);