[php] Waarde vanuit mysql verhogen met 10

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Voor een script wat ik aan het bouwen. moet ik een waarde in mijn database verhogen met 10.

Het is de bedoeling dat het zo gaat werken als bij een phpbb forum. Zodat je met behulp van group_order regels omhoog en omlaag kan schuiven.

Nu is mijn script zo als hier onder staat ik deel hem in drie delen zodat het duidelijk is wat ik bedoel

Werkend gedeelte 1
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php 

    include ("../sql_connect.php");
echo ("<form action=\"add_group.php\" method=\"post\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"submit\" value=\"yes\">
<table cellspacing=\"2\" cellpadding=\"2\" border=\"0\">
<tr>
    <td>Groepsnaam:</td>
    <td><input type=\"text\" name=\"site_group\"></td>
</tr>
<tr>
    <td>Auteur:</td>
    <td><input type=\"text\" name=\"group_author\" value=\"{$_POST["group_author"]}\"></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td><input type=\"submit\" value=\"Add\"></td>
</tr>
</table>

</form>");
if ($site_group && $group_author)    {
if($_POST["site_group"] && mysql_result(mysql_query("SELECT COUNT(site_group) FROM site_groups WHERE site_group LIKE '{$_POST["site_group"]}'"),0)) {
echo ("De groep {$_POST["site_group"]} is al bezet!");}
elseif ($submit){


Niet werkend gedeelte

PHP:
1
2
3
4
5
$sql = "SELECT MAX (group_order) AS max_order FROM site_groups WHERE group_order ='$group_order'";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_object($result)){
            $max_id = $row[max_order];
            $next_order = $max_id + 10;


Werkend gedeelte 2

PHP:
1
2
3
4
5
6
    mysql_query("INSERT INTO site_groups (site_group, group_author, group_order) VALUES ('{$_POST["site_group"]}','{$_POST["group_author"]}','$next_order')");
echo ("De groep {$_POST["site_group"]} is toegevoegd! $next_order");}
}else { echo ("Niet alle velden zijn ingevuld");}


?>


Het volgende had ik ook geprobeerd voor het niet werkende gedeelte

PHP:
1
2
3
$group = mysql_fetch_object(mysql_query("SELECT * FROM site_groups WHERE id = '$id'"));
            $group_order = explode("|",ereg_replace("\|$","",$group->group_order));
            $next_order = $group_order + 10;


In beide gevallen geeft hij geen foutmelding. Maar ik denk dat de beste oplossing te vinden is in de eerste manier.

In mijn sql database vult hij wel iedere keer die 10 in maar op tellen doet hij niet.
Ik denk daarom dat er iets verkeerd gaat met de hoogste waarde uit de database te definieer als variabelen

[ Voor 39% gewijzigd door josvane op 04-10-2004 19:32 ]


Acties:
  • 0 Henk 'm!

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 18:57
zou je het even tussen de [php]-tags kunnen zetten, dat leest wat makkelijker

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

PHP:
1
2
3
4
5
6
$insertSQL = sprintf("INSERT INTO site_groups (site_group, group_author, group_order) VALUES (%s, %s, %s)",
                       $_POST["site_group"],
                       $_POST["group_author"],
                       $next_order);
mysql_select_db($database_con1, $con1);
$Result1 = mysql_query($insertSQL, $con1) or die(mysql_error());

Als je op deze manier werkt wordt hewt al een stuk overzichtelijker en makkelijker om fouten op te sporen.

edit:
Je kan dus ook berichten bewerken ipv alles opnieuw te posten :X
edit2:
En vertel dan in iedergeval wat je voor foutmelding krijgt. "Het doet het niet" is zo vaag.

[ Voor 24% gewijzigd door Sosabowski op 04-10-2004 16:35 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Onbenodigde post

[ Voor 100% gewijzigd door josvane op 04-10-2004 19:33 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Pas je post even aan met informatie, zodat alles wat in P&W FAQ - De "quickstart" genoemd staat, behandeld wordt. Op deze manier kunnen we weinig met een topic als dit beginnen.

Verder is Programming & Webscripting niet bedoeld om je aan het handje mee te nemen, dat je iedere suggestie toepast en dan de nieuwe code neerzet. We vereisen een actieve houding van de topicstarter :)

[ Voor 32% gewijzigd door gorgi_19 op 04-10-2004 16:49 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Ik heb mijn vraag aangepast. Graag nog maals dit topic lezen

Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Je gebruikt in het niet werkende stukje de functie 'mysql_fetch_object', maar vervolgens benader je de gegevens als een array ipv een object. Verder op doe je het wel weer goed.

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Okey das duidelijk ik heb dat stukje aangepast naar dit

PHP:
1
2
3
mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
            $max_id = $max_order; 
            $next_order = $max_id + 10;


en
PHP:
1
2
3
mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
            $max_id = $row[max_order]; 
            $next_order = $max_id + 10;


Nu geeft hij wederom geen fouten alleen blijft hij als waarde 10 aangeven.
Ik weet ook niet goed hoe je nou uiteindelijk die variabele dan moet gebruiken. Die je maakt met het stukje AS max_order. Is dat dan $max_order ofzo?

Acties:
  • 0 Henk 'm!

Verwijderd

josvane schreef op 04 oktober 2004 @ 22:34:
PHP:
1
2
3
mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
            $max_id = $row[max_order]; 
            $next_order = $max_id + 10;
Maak er in elk geval:
PHP:
1
            $max_id = $row['max_order'];


Dat is netter. Geen idee of dat ook het probleem zou kunnen zijn, maar het kan zijn dat ie nu de constanste max_order invult en die is waarschijnlijk NULL.
Dus dan is $max_id ook NULL, niet de waarde in 'max_order'.

Ik zou het zelfs aanpassen naar:
PHP:
1
            $max_id = intval($row['max_order']);

[ Voor 29% gewijzigd door Verwijderd op 04-10-2004 22:39 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
josvane schreef op 04 oktober 2004 @ 22:34:
Okey das duidelijk ik heb dat stukje aangepast naar dit

PHP:
1
2
3
mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
            $max_id = $max_order; 
            $next_order = $max_id + 10;


en
PHP:
1
2
3
mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
            $max_id = $row[max_order]; 
            $next_order = $max_id + 10;


Nu geeft hij wederom geen fouten alleen blijft hij als waarde 10 aangeven.
Ik weet ook niet goed hoe je nou uiteindelijk die variabele dan moet gebruiken. Die je maakt met het stukje AS max_order. Is dat dan $max_order ofzo?
Je doet nu niets met het resultaat wat de mysql_query teruggeeft ;).

PHP:
1
2
3
4
$result=mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");
$row=mysql_fetch_object($result);
$max_id = $row->max_order;
$next_order = $max_id + 10;

En als dat niet werkt moet je die $row->max_order eens echo'en ;)

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Al jullie suggestie heb ik geprobeerd. Maar nu geeft hij als fout.

code:
1
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/aquariumweb.nl/httpdocs/cms/admin/add_group.php on line 36


De regel waar hij of fout gaat is deze

PHP:
1
$row=mysql_fetch_object($result);


mysql_fetch_object is toch gewoon geldig?

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Is de query wel goed? (Op de regel ervoor dus)

(Btw, dit is wel een heel vaak voorkomende foutmelding ;))

Acties:
  • 0 Henk 'm!

Verwijderd

josvane schreef op 05 oktober 2004 @ 15:37:

De regel waar hij of fout gaat is deze

PHP:
1
$row=mysql_fetch_object($result);


mysql_fetch_object is toch gewoon geldig?
Boven in je code gebruik je het volgende:
PHP:
1
$Result1 = mysql_query($insertSQL, $con1) or die(mysql_error());


Als het dan misgaat, 'sterft' je pagina, maar met een (hopelijk duidelijke) foutmelding. Misschien moet je dat nu ook proberen bij het 'mysql_query' gedeelte.

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Dan komt hij met de volgende fout

code:
1
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(group_order) AS max_order FROM site_groups' at line 1


Nou heb ik dat in mijn boek nagezocht maar daar staat dat je deze code
PHP:
1
$result=mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups");


Als volgt moet doen

PHP:
1
$result=mysql_query("SELECT MAX (group_order) AS max_order FROM site_groups ORDER BY STATE")or die (mysql_error());


Maar dan komt hij met de volgende fout

code:
1
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(group_order) AS max_order FROM site_groups ORDER BY STATE' at

Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Misschien de spatie tussen MAX en (group order) ?

Acties:
  • 0 Henk 'm!

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 24-08 06:41
misschien kloppen de haakjes niet of idd de spatie, daar gaat t namelijk mis

Better to remain silent and be thought a fool then to speak out and remove all doubt.

Pagina: 1