php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.11.2008, 07:21  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard nested sets update und insert auf eine tabelle in einer aktion

Guten Morgen an alle!

Son nun beginne auch ich mich mit nested sets zu beschäftigen und habe das erste Problem was der Threadtitl eigentlich allein schon beschreibt. Wie kann ich ein Update und Insert gleichzeitig in einer Aktion in eine Tabelle machen? Ich habe Google bemüht aber dazu nichts gefunden auch das Mysql Manual hat mir nichts dazu gebracht.

Hier isz mal der Code,ich habe ihn so gut es geht kommentiert,obwohl das,dass Datenbank Forum ist auch Html und PHP Code dabei.

PHP-Code:
<?php
require('conf.php');
require(
'main.php');
if(isset(
$_POST['save']))
{
 
//tabelle auslesen ob ein datensatz drin ist und nur im falle das noch keiner da ist
 //diesen insert ausführen
 
$sqlbefehl ="
    Select
     id
    From
     kategorien
    "
;
 
$erg_cats mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
 if(
mysql_num_rows($erg_cats) == 0)
 {
  
//eintragen wenn es die erste kategorie überhaupt ist
  
$sqlbefehl ="
     Insert Into kategorien
       (
        cat_name,
        lft,
        rgt
       )
     VALUES
       (
        '"
.$_POST['cat']."',
        '1',
        '2'
       )
     "
;
  
$res_cat1 mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
  
header("Location: cat_anlegen.php");
 }
 
//wenn eine Kategorie drin ist dann weitere statements ausführen
 //lft und rgt punkte trennen
 
$punkte explode(",",$_POST['subcat']);
 
$lft $punkte[0];
 
$rgt $punkte[1];
 
//eintragen einer unterkategorie
 
$sqlbefehl ="
    Update
     kategorien
    Set
     rgt = rgt + "
.$rgt."
    Where
     rgt ="
.$rgt."
    "
;
 
$res_cat mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
 
 
$sqblbefehl ="
    Insert Into kategorien
      (
       cat_name,
       lft,
       rgt
      )
    VALUE
      (
       '"
.$_POST['cat']."',
       '"
.$rgt."',
       '"
.$rgt."+1'
      )
    "
;
 
$send_cat mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
 
header("Location: cat_anlegen.php");
}
?>
<form action="" method="post">
<input type="text" name="cat"  />
<select name="subcat">
<option>In Kategorie</option>
<?php
//hier kategorien auslesen
$sqlbefehl ="
   Select
    id_cat,
    cat_name,
    lft,
    rgt
   From
    kategorien
   "
;
$erg_cat mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
while(
$cat mysql_fetch_assoc($erg_cat)){
 echo 
'<option value="'.$cat['lft'].','.$cat['rgt'].'">'.$cat['cat_name'].'</option>';
}
?>
</select>
<br />
<input type="submit" name="save" value="Speichern" />
</form>
So der Ist - Zustand ist folender:
Das Update wird wie gewünscht auch richtig gemacht und ausgeführt. Also das Ergebnis ist in Ordnung.
Dann bricht das Script aber ab und trägt mir nicht die neue Kategorie ein,sprich das Insert wird nicht ausgeführt.

Meine Frage,wie muss ich es schreiben das Update und Insert Statement gleichzeitig auf eine Tabelle ausgeführt wird?

Danke für eure Hilfe mfg der litter

Edit:
Der Code ist absichtlich ohne Sicherheitsrelevante Sachen geschrieben das,dass alles nur zum Test ist und nicht in den Einsatz kommt.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.11.2008, 09:41  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Meine Frage,wie muss ich es schreiben das Update und Insert Statement gleichzeitig auf eine Tabelle ausgeführt wird?
-> Saubere Kontrollstrukturen. Ich würde einen Parameter in der URL mitgeben, der bedeutet einen Update zu tätigen und ein anderer, der das Skript anweist ein Insert zu tun. Sind beide in der URL enthalten, wird auch beides ausgeführt.

Aber als Fortgeschrittener hättest du da auch selbst drauf kommen können!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist gerade online   Mit Zitat antworten
Alt 09.11.2008, 11:07  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Wieso fortgeschrittener?

Soweit mir es bekannt ist kann ich Parameter in der URL nur per Get meitgeben. Nur da verstehe ich grad nicht wirklich was du meinst wie ich das grad anstellen soll?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 09.11.2008, 11:29  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
Soweit mir es bekannt ist kann ich Parameter in der URL nur per Get meitgeben.
Jo, aber wo liegt da jetzt das Problem?
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 09.11.2008, 12:00  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Das ich eben nicht weis wie ich bei der Geschichte die Parameter übergeben soll und dann auch noch dementsprechend den Code schreiben soll um das korrekt ablaufen zu lassen. Ich habe bisher immer nur nach dem parent Modell sowas gemacht das war das eintragen einfacher.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 09.11.2008, 12:05  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Indem du sie an den URL anhängst. Auch bei einem POST-Request können GET-Parameter übergeben werden.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 09.11.2008, 12:09  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Momentan stehe ich grad auf dem Schlauch vor allem wann ich die übergeben muss. Wenn alles mit Links abläuft weis iches,aber so habsch grad ein Brett vor der Birne.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 09.11.2008, 13:44  
Erfahrener Benutzer
 
Benutzerbild von byFd
 
Registriert seit: 06.11.2008
Beiträge: 154
byFd befindet sich auf einem aufstrebenden Ast
Standard

Dein Fehler warum dein INSERT Statement nicht funktioniert ist erstmal ein anderer:
PHP-Code:
Insert Into kategorien
      
(
       
cat_name,
       
lft,
       
rgt
      
)
    
VALUE
      
(
       
'".$_POST['cat']."',
       
'".$rgt."',
       
'".$rgt."+1'
      

du hast das S bei VALUES nicht dran.
byFd ist offline   Mit Zitat antworten
Alt 09.11.2008, 13:52  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Bevor du jetzt Nestedsets neu implementierst und rumtestest, es gibt auch die ein oder andere fertige Implementierung, z.b. bei PEAR, die bietet dir meines Wissens nach nicht nur einfügen und löschen sondern auch verschieben, kopieren und soweiter.
robo47 ist offline   Mit Zitat antworten
Alt 09.11.2008, 13:57  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich weis robo47 darauf bin ich auch schon gestoßen,aber leider ist das in oop geschrieben und da habe ich leider noch keinen plan davon. (das kommt sicher noch)

Or nöö recht haste,ich arveite nun schon ne Weile mit mysql und das fällt mir nicht auf. Aber warum wurde kein mysql error ausgespuckt frage ich mich!

Aber klappen tut es nun trotzdem nicht es wird kein insert gemacht!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (09.11.2008 um 14:01 Uhr).
litterauspirna ist offline   Mit Zitat antworten
Antwort


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
Nested Sets und viele Fragen... BartTheDevil89 Datenbanken 7 13.08.2008 10:18
Nested Sets oder Rekursion? litterauspirna PHP Tipps 2008 8 06.06.2008 16:57
Nested Sets in ein Mehrdimensionales Array Simon9990 PHP-Fortgeschrittene 2 29.10.2007 17:38
INSERT.. ON DUPLICATE KEY UPDATE cycap Datenbanken 3 26.10.2007 13:08
Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) Martin13 PHP Tipps 2007 19 04.09.2007 19:20
INSERT.. on duplicate key UPDATE... - sinnvoll? mrSpok Datenbanken 3 28.11.2006 10:14
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
Weder Update noch Insert funktioniert... MessengerNews! Datenbanken 3 31.07.2006 08:39
PRoblem mit Cookie bei PHPbb-Board PHP Tipps 2007 8 12.12.2005 20:56
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
Nested Sets mit Berechtigungen? daniel987 Datenbanken 3 07.06.2005 22:18
NESTED SETS dieses Thema sollte abgehakt werden PHP Tipps 2004 0 12.10.2004 18:18
Insert und Update Befehl funktioniert nicht Anuschka Datenbanken 2 03.09.2004 00:38
[Erledigt] 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
nested set insert, script zum einfügen von kategorien nested model, nested sets update, mysql_query(\update set and, geschachteltes update, mysql update insert gleichzeitig, php pear optimierung algorithmen, nested sets tabelle, nested set update insert rgt lft duplicate, mysql_query insert, update gleichzeitig, nested tree set update, tsql insert id ermitteln, $sql_befehl = mysql_query(\insert into formualr absenden, mysql 1064 update pages set rgt=rgt 2 where rgt>=, php geschachteltes form action, php action insert, php verschachtelte inserts, nestedset php oop, insert into nested set, nested sets insert node

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 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