Hoeveel AND in een UPDATE statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 volgende »

Chris PHP

Chris PHP

15/05/2012 21:48:52
Quote Anchor link
@Obelix,

Dat is dus het rare, ik echo $page net voor de update query en is hij 13, ook net na de select query en is hij 13. In de select query blijft hij gewoon 13 en selecteerd het juiste record.

Ik heb echt geen flauw idee waarom hij in de update statement 0 wordt.
 
PHP hulp

PHP hulp

26/12/2024 02:30:00
 
Wouter J

Wouter J

15/05/2012 21:51:41
Quote Anchor link
En wat als je nou i.p.v. $page 13 in de query propt? Krijg je dan wel 0?

Want je maakt daar alleen een query en dus moet die 0 ergens vanuit PHP komen.
 
Chris PHP

Chris PHP

15/05/2012 21:54:38
Quote Anchor link
@Wouter,

Nee ik heb een aantal posts terug al aagegeven dat als ik WHERE a_id = '13' doe het goed gaat en hij het record update. Ik heb nu dit en hier wordt er niets gegeven (leeg WHERE a_id='').

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query
= mysql_query ("SELECT * FROM artikel WHERE a_id ='".$page."'");
$edit = mysql_fetch_array ($query);


$update = "UPDATE artikel SET
p_id='"
.mysql_real_escape_string($_POST['pagina'])."',
 titel='"
.mysql_real_escape_string($_POST['titel'])."',
summary='"
.mysql_real_escape_string($_POST['summary'])."',
 content='"
.mysql_real_escape_string($_POST['content'])."',
 zichtbaar='"
.$zichtbaar."'
WHERE a_id ='"
.$edit['a_id']."'";

$result = mysql_query ($update);

echo $update;

if($result === false) { echo 'Error: ' . mysql_error();
}
else { echo 'Aangepast ' . mysql_affected_rows() . ' records'; }
 
Wouter J

Wouter J

15/05/2012 21:56:48
Quote Anchor link
Heb je trouwens door dat je id uit een GET request ophaalt en zichtbaar uit een POST request? Er is maar 1 soort request tegelijkertijd dus zul je of de GET of de POST krijgen.

Kun je eens je hele script op plaatscode.be ofzo zetten en ook even het resultaat van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
var_dump($_GET);
var_dump($_POST);
?>

Dan kunnen we je hier beter helpen.
 
Obelix Idefix

Obelix Idefix

15/05/2012 21:57:12
Quote Anchor link
Geen * maar geef het veld aan wat je nodig hebt (a_id).
Waar/hoe bepaal je $page?
Ik mis foutafhandelng bij je 1e query.
Waarom mysql_fetch_array en geen mysql_fetch_assoc?
 
Chris PHP

Chris PHP

15/05/2012 22:06:42
Quote Anchor link
@Wouter,

Dit is de dump voor de update statement (dus door de link).
Quote:
GET Dump: array(1) { ["id"]=> string(2) "13" }
POST Dump: array(0) { }


En dit is nadat ik een berwerking heb gedaan en het forulier verzend (de update statement dus aanspreek).
Quote:
GET Dump: array(0) { }
POST Dump: rray(6) { ["pagina"]=> string(1) "1" ["titel"]=> string(8) "De titel" ["summary"]=> string(10) "De Summary" ["content"]=> string(10) "De Content" ["send"]=> string(4) "send" ["submit"]=> string(6) "Bewerk" }


Nergens zie ik a_id voorbij komen helaas.


Toevoeging op 15/05/2012 22:08:14:

@Obelix wat bedoel je met geen *? Ik denk dat je verkeerd zit te kijken, je zit nu bij de SELECT query en niet bij de UPDATE.

Nogmaals $page komt van het hoofdscherm waar alle berichten gelist worden en aan de hand van hun a_id worden doorgegeven met GET.
Gewijzigd op 15/05/2012 22:08:47 door Chris PHP
 
Wouter J

Wouter J

15/05/2012 22:10:19
Quote Anchor link
Nu weten we dus de oplossing. De $_GET['id'] bestaat niet als je het formulier post en dus de query uitvoert.

Je zult dus de $_GET['id'] in een sessie moeten opslaan als het formulier nog niet is gepost en dan als het formulier gepost is het uit de sessie moeten halen.
 
Obelix Idefix

Obelix Idefix

15/05/2012 22:12:14
Quote Anchor link
Chris NVT op 15/05/2012 22:06:42:
Toevoeging op 15/05/2012 22:08:14:
@Obelix wat bedoel je met geen *? Ik denk dat je verkeerd zit te kijken, je zit nu bij de SELECT query en niet bij de UPDATE.

Ik kijk goed. Zie het idd bij de select-query. Dat je daar, momenteel, geen probleem mee hebt/denkt te hebben, kan wel zijn, maar je code klopt daar niet. Zie mijn opmerkingen.

@Wouter: je conclusie lijkt me geheel terecht. Wat ik wel vreemd vind, is hoe TS het voor elkaar krijgt om voor de update-query dan het juiste getal te tonen (volgens post 15/05/2012 21:48:52)
Gewijzigd op 15/05/2012 22:14:37 door Obelix Idefix
 
Chris PHP

Chris PHP

15/05/2012 22:18:33
Quote Anchor link
@Wouter,

Ik heb nu dit en dan lukt het dus ook niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$page
= intval($_GET['id']);
$_SESSION['id'] = $page;

// En dan bij de where cause
WHERE a_id ='".$_SESSION['id']."'"
?>


Echter dit leverd ook een lege WHERE a_id = '' op.

P.S. Uiteraard staat bovenaan de pagina session_start();
Gewijzigd op 15/05/2012 22:19:01 door Chris PHP
 
- SanThe -

- SanThe -

15/05/2012 22:20:48
Quote Anchor link
Zet de id in een hidden veld in het formulier.
 
Chris PHP

Chris PHP

15/05/2012 22:21:27
Quote Anchor link
@Obelix, wat is daar mis aan? Hij selecteerd alles waar het a_id = $page is. Dus als $page 5 is selecteerd hij alle velden van dat record. Vertel mij eens waar het niet goed is dan?

Toevoeging op 15/05/2012 22:26:43:

@SanThe,

Dat is de oplossing hartstikke bedankt! Nu update hij alles zoals het hoord :D

Dit is toegevoegd aan het formulier

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="hidden" name="id" value="<?php echo $page ?>" />


Alle anderen ook hartelijk bedankt voor alle input en tijd die je vrijgemaakt hebt om me te helpen met dit probleem!!

+1 voor iedereen.
Gewijzigd op 15/05/2012 22:27:14 door Chris PHP
 
Obelix Idefix

Obelix Idefix

16/05/2012 07:58:12
Quote Anchor link
Chris NVT op 15/05/2012 22:21:27:
@Obelix, wat is daar mis aan? Hij selecteerd alles waar het a_id = $page is. Dus als $page 5 is selecteerd hij alle velden van dat record. Vertel mij eens waar het niet goed is dan?

Afgaande op de rest van je code in je topic van 15/05/2012 21:54:38 gebruik je maar 1 veld. Waarom zou je dan de alle velden willen ophalen? Ga je ook naar de supermarkt, gooi je het hele karretje vol boodschappen en reken je bij de kassa maar 1 product af?
Daarnaast is het uitschrijven van de velden een stuk overzichtelijker (vergelijkbaar met een boodschappenlijstje: wat heb je nodig).

En dat die $_GET in combinatie met de SESSION niet werkt, komt (vermoedelijk) door hetzelfde als waarom je update niet werkt --> Op het moment dat je de waarde wilt toekennen, is de $_GET leeg.
 
Chris PHP

Chris PHP

16/05/2012 08:10:41
Quote Anchor link
@Obelix,

Ik ga natuurlijk nooit een select all doen als ik maar 1 waarde nodig heb.

Onder dit hele php script staat een <form> hier echo ik de juiste velden van $edit in de juiste <input> en <textarea> velden. Zodat deze bewerkt kunnen worden en dan geupdate worden.

Dit is overigens al meerdere malen uitgelegd, en je ziet toch dat ik bij de UPDATE query meer als een 1 veld update? Je ziet de benamingen van de velden en je weet dat ik bezig ben met een CMS (staat in de openingspost).

Dus het gaat niet fout, ik selecteer niet te veel. Tevens is er nu een juiste foutafhandeling toegevoegd aan beide queries.

Het $_GET probleem is opgelost, Wouter gaf aan dat je dus $_GET en $_POST niet tegelijk kunt gebruiken. En met de laatste oplossing van SanThe (hidden input veld) werkt alles correct.

P.S. Wat bedoel je met het 'uitschrijven van velden'? Hoe kan ik het nog meer uitschrijven dan dat ik nu al doe in de update query?
Gewijzigd op 16/05/2012 08:27:24 door Chris PHP
 
Obelix Idefix

Obelix Idefix

16/05/2012 08:49:28
Quote Anchor link
Probeer je te wijzen op dingen die, naar mijn idee, niet goed gaan.
Je weet het echter steeds toch beter.
Ik ga er verder geen tijd meer aan besteden.
 
Chris PHP

Chris PHP

16/05/2012 08:56:15
Quote Anchor link
@Obelix,

Als je dan eens wat duidelijker bent.

- Leg me uit waarom jij denkt dat ik maar 1 veld gebruik
- Leg me uit wat je bedoeld met het meer uitschrijven van velden.

Het GET verhaal is al opgelost.

Met je reply die je hiervoor gaf leg ik netjes en duidelijk uit waarom ik die select doe. Zeg jij mij maar eens wat daar nu fout aan is dan?
 
- SanThe -

- SanThe -

16/05/2012 09:34:48
Quote Anchor link
Chris NVT op 16/05/2012 08:10:41:
Wouter gaf aan dat je dus $_GET en $_POST niet tegelijk kunt gebruiken.


Dat kan wél.
 
Chris PHP

Chris PHP

16/05/2012 09:36:37
Quote Anchor link
@SanThe,

Ok, heb je enig idee waarom de $_GET['id'] leeg was nadat ik het form gesubmit heb?

Edit: Ik heb volgens mij al gevonden waarom get leeg is, en echter is het een vrij 'domme/simpele' fout :S.

GET waardes worden uit de url gehaald, echter als ik op submit druk gaat hij naar de het action="" url waar natuurlijk de ?id=?? niet meer achter staat!!

Ik neem aan dit ik dit probleem zo kan tackelen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" action="edit.php?id=<?php echo $page ?>">


Ik zal dit vanavond even testen, maar nu ik er aan denk is het logisch dat GET leeg is, aangezien opnieuw naar edit.php wordt gegaan door het formulier alleen dan zonder de get waarde!
Gewijzigd op 16/05/2012 09:41:44 door Chris PHP
 
- SanThe -

- SanThe -

16/05/2012 09:42:20
Quote Anchor link
Je moet de GET var in de action van het formulier zetten.
<form method="post" action="bestand.php?id=1">
Gewijzigd op 16/05/2012 09:43:24 door - SanThe -
 
Chris PHP

Chris PHP

16/05/2012 09:46:52
Quote Anchor link
@SanThe,

Ja idd er ging ineens een lampje branden (zie bewerkte post) dat het id dus niet in de action wordt meegegeven. Maar kan ik het ook op mijn manier (1 post hierboven) oplossen? Zodat het variabel blijft?
 
- SanThe -

- SanThe -

16/05/2012 09:49:31
Quote Anchor link
Chris NVT op 16/05/2012 09:36:37:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" action="edit.php?id=<?php echo $page ?>">


Je bedoelt dit? Ja natuurlijk kan het zo ook. Maar $page moet dan wel bekend zijn.
 

Pagina: « vorige 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.