Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Probleem (MySQL) (https://forum.scholieren.com/showthread.php?t=1085689)

Jordi 26-01-2005 21:16

[PHP] Probleem (MySQL)
 
Ik probeer voor mijn forum een functie te schrijven waardoor subfora omhoog/omlaag kunnen worden bewogen om zo in een andere volgorde op het scherm te komen.

Een voorbeeld van de code die ik daarvoor gebruik is dit:
PHP-code:

$sql ="UPDATE forumtabel SET forum_order = '-1' WHERE forum_order = '2';"
        
"UPDATE forumtabel SET forum_order = '2' WHERE forum_order = '3';"
        
"UPDATE forumtabel SET forum_order = '3' WHERE forum_order = '-1';";
    
$result mysql_query($sql);
?> 

of dit: (het is het zelfde, het werkt allebei niet)
PHP-code:

    $sql1 "UPDATE forumtabel  SET forum_order='-1'             WHERE forum_order='2'";
    
$result1 mysql_query($sql1);
    
$sql2 "UPDATE forumtabel  SET forum_order='2'             WHEREforum_order='3'";
    
$result2 mysql_query($sql2);
    
$sql3 "UPDATE forumtabel  SET forum_order='3'         WHERE forum_order='-1'";
    
$result3 mysql_query($sql3);
?> 

Als ik dit zo uitvoer gebeurt er niets. Als ik echter eerst de tweede en derde regel weghaal, dan wordt de eerste regel wel uitgevoerd. Als ik vervolgens de eerste en derde regel weghaal en de tweede terug zet en ik herlaad de pagina, wordt de tweede regel uitgevoerd. En zo ook met de derde regel.
Oftewel: mijn queries werken wel als tussen elke afzonderlijke opdracht een reload zit, maar anders niet.

Weet iemand misschien hoe dit kan komen en wat ik er aan kan doen?

Bloemkoolsaus 26-01-2005 21:57

Er zijn 2 verschillende soorten queries.
1. Een die resultaten dingen opvraagt. Zoals bijv. SELECT
2. Een die wijzigingen in de db uitvoert, zoals INSERT of UPDATE

Een SELECT query kun je in een result zetten, aangezien die ook result terug geeft.
Een UPDATE, geeft (zover ik weet) nix terug maar voert alleen een opdracht uit in de db.

Probeer het eens op deze manier.
PHP-code:

$sql1 "UPDATE forumtabel  SET forum_order='-1' WHERE forum_order='2'"
mysql_query($sql1); 

Suc6

Jordi 26-01-2005 22:04

Bedankt voor je reply.

Je hebt op zich wel gelijk, want bij UPDATE krijg je inderdaad geen result terug. Het is echter blijkbaar niet erg als je toch $result=mysql_query{$sql); schrijft, want er komt geen foutmelding en dit heb ik eigenlijk overal (fout dus).

Maar goed, ik heb geprobeerd wat jij zei en het maakt eigenlijk niets uit.

Het gekke vind ik nog steeds dat de queries het afzonderlijk op zich wel doen als ze maar niet samen...

Bloemkoolsaus 26-01-2005 22:20

Dat is idd een beetje vreemd.

Probeer dit eens, en kijk of tie wat zegt.
PHP-code:

$result mysql_query($sql) or die (mysql_error()); 

Misschien kan hij de query niet goed uitvoeren.
Als dat het geval is moet hij dat zo weergeven.

Ander zou ik het zo snel ook ff niet weten

Ulfheðin 26-01-2005 22:47

Je hebt ook nog gemengde queries

INSERT INTO * VALUES (SELECT * FROM *)

McMotion 27-01-2005 17:39

Citaat:

Bloemkoolsaus schreef op 26-01-2005 @ 23:20 :
Dat is idd een beetje vreemd.

Probeer dit eens, en kijk of tie wat zegt.
PHP-code:

$result mysql_query($sql) or die (mysql_error()); 

Misschien kan hij de query niet goed uitvoeren.
Als dat het geval is moet hij dat zo weergeven.

Ander zou ik het zo snel ook ff niet weten

eerst zeg je dat je de return value van mysql_query() niet moet gebruiken omdat update geen recordset teruggeeft, en nu raad je zelf aan om em te gebruiken in een expressie.. je hebt er duidelijk verstand van :p

zowieso vind ik het gaat dat iedereen die 'or die' constructie gebruikt (het wordt zelfs aangeraden vanaf de site, maar daar zal je het vast van gekopieerd hebben)... echt een stereotiep voorbeeld van slechte code (y)

Bloemkoolsaus 27-01-2005 21:53

Citaat:

McMotion schreef op 27-01-2005 @ 18:39 :
eerst zeg je dat je de return value van mysql_query() niet moet gebruiken omdat update geen recordset teruggeeft, en nu raad je zelf aan om em te gebruiken in een expressie.. je hebt er duidelijk verstand van :p
Het ging mij ff om het stukje "or die".
Gezien hij zelf heeft aangegeven dat "$result" geen verschil maakt, heb ik er niet opgelet.

Jordi 06-02-2005 21:47

Bedankt voor jullie hulp.

Dit is hoe ik het nu heb 'opgelost':
Ik heb het volgende helemaal aan het einde van de functie toegevoegd:
PHP-code:

echo "<script language=\"JavaScript\">function previous() {
    document.location.href='"
.$_SERVER['HTTP_REFERER']."';
    }
    
    setTimeout('previous()', 0);</script>"


Verder is de functie in essentie hetzelfde gebleven. Hij werkt dus nog steeds op ongeveer dezelfde manier, alleen de pagina wordt meteen geredirect naar de vorige pagina. Het gekken is echter dat dit dan weer niet werkt:
PHP-code:

echo "<script language=\"JavaScript\">function previous() {
    document.location.href='"
.$_SERVER['HTTP_REFERER']."';
    }
    
    setTimeout('previous()', 1000);</script>"


(het verschil is dat er eerst 1 seconde wordt gewacht voordat je wordt geredirect)

Dus als ik meteen redirect, worden de veranderingen wel in de database opgeslagen, maar als ik iets te lang wacht, worden ze op de één of andere manier toch weer teruggezet naar de oorspronkelijke waarden.

Heeft iemand hier een verklaring voor?

Bloemkoolsaus 08-02-2005 20:00

:confused: :confused: :confused: :confused: :confused:


Alle tijden zijn GMT +1. Het is nu 20:22.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.