Vraag & Antwoord

Webprogrammeren & scripting

[php] functie door onclick gebeurt ook zonder click

7 antwoorden
  • Ik ben een php+MySQL script aan het maken, om cluedo op te lossen... Je moet dan aangeven welke kaart jezelf hebt. Ik heb hiervoor dit script geschreven:[code:1:45ede52436]<?php require("connect.php"); // ******* list alle mogelijke kaarten ******* $sql = 'SELECT * FROM dader'; $query = mysql_query($sql) or die (mysql_error()); while ($result = mysql_fetch_array($query)) { print $result['naam'] . "<input type=\"button\" onClick=\"<?php setcard('dader', '".$result['naam']."'); ?> \"><br>\n"; } // ******* bewerk alle kaarten die jezelf bezit ******* function setcard($tabel, $kaart) { $sql = 'UPDATE `'.$tabel.'` SET `owner` = "1" WHERE `naam` = "'.$kaart.'" '; $query = mysql_query($sql) or die (mysql_error()); } ?>[/code:1:45ede52436]Nu is het probleem dat het setcard() al gaat draaien opt moment dat de pagina geladen wordt. Wat kan ik hieraan doen?
  • Ik weet niet of het de simpelste oplossing is, maar wat in ieder geval werkt is dat je die hele array die uit die query komt in een grote form parsed. In de code zet je dan de query's die pas uitgeveord worden wanneer er op een button geklikt wordt: Let op: pseudocode [code:1:582af49ac0] Query....query... <form action="file.php" method="post"> while ($array = mysql_fetch_array....) { $array['naam'] : <input type="submit" name='kaart' value="$array['id']"> } </form> if (isset($_POST['kaart'])) { $sql = 'UPDATE `'.$tabel.'` SET `owner` = "1" WHERE `naam` = "'.$_POST['kaart'].'" '; $query = mysql_query($sql) or die (mysql_error()); } [/code:1:582af49ac0] Nogmaals dit is zware pseudocode en gaat zo natuurlijk niet direct 1 op 1 werken. Maar dit is wel ongeveer hoe je het op kunt lossen. Kijk met name goed na of je wel input type = submit moet doen, of toch beter input type=button of zo. Ook weet ik zo neit zeker of je die $kaart nu wel of niet in een array moet zetten. maar daar moet je zelf ff verder naar kijken, ik kan het nu nl niet testen. edit: kaart hoeft niet in een array :)
  • je had de structuur niet helemaal ok, maar het werkt nu wel... Om de een of andere reden moest het GET zijn en niet POST. En de tabel werd nou niet mee gegeven, die heb ik nou gewoon op een waarde gezet, en niet een var. Kan ik nog een extra var meegeven aan die knop, waardoor ik ook de tabel kamer en wapen in hetzelfde bestand kan gooien? En kan ik ook maken dat er iets anders opstaat dan wat de value is? Dus dat er vangeelen staat, en dat de waarde 1 is. Hij ziet er nu zo uit:[code:1:b5425c03b5]<form action="start2.php" action="get"> <?php require("connect.php"); $sql = 'SELECT * FROM dader'; $query = mysql_query($sql) or die (mysql_error()); while ($array = mysql_fetch_array($query)) { echo $array['naam'] ." : <input type=\"submit\" name='kaart' value=\"".$array['id']."\"><br>\n"; } ?> </form> <?php require("connect.php"); if (isset($_GET['kaart'])) { $sql = 'UPDATE `dader` SET `owner` = "1" WHERE `id` = "'.$_GET['kaart'].'" '; $query = mysql_query($sql) or die (mysql_error()); } ?>[/code:1:b5425c03b5]
  • Ik had hier nog een online voorbeeldje:) http://www.fmf.nl/~japaveh/scripts/cardsarray.php Bron: http://www.fmf.nl/~japaveh/scripts/cardsarray.phps Maar je had het al gevonden zag ik :). Nee het mag ook een post zijn hoor, maar in mijn form had ik tweee maal een action gezet. De tweede action moet een method zijn... Als je geen goede method neerzet, maakt hij er automatisch een _GET van. <form action="bla.php" method="post"> Beetje haastig neergezet zeg maar :) Ik had het net al goed geedit.
  • ik heb flink gesleutelt en gespeeld aan het script en het ziet er nu zo uit:[code:1:2dfb0420f8]<?php require("connect.php"); echo "\n<title>".ucfirst($tabel)."</title>\n\n"; if (isset($_POST['kaart'])) { $sql = 'UPDATE `'.$tabel.'` SET `owner` = "1" WHERE `id` = "'.$_POST['kaart'].'" '; $query = mysql_query($sql) or die (mysql_error()); } echo "<form action=\"set_".$tabel.".php\" method=\"post\">\n<table>\n"; $sql = 'SELECT * FROM '.$tabel.' '; $query = mysql_query($sql) or die (mysql_error()); while ($array = mysql_fetch_array($query)) { $img = "images/".$tabel."/thumbs/".$array['naam'].".jpg"; $img = ereg_replace(' ', '%20', $img); echo " <tr>\n"; echo " <td><input type=\"submit\" name='kaart' value=\"".$array['id']."\" style=\"background: url(".$img."); height: 52px; width: 52px; font-size: 0px;\"></td>\n"; echo " <td>".$array['naam']."</td>\n"; if($array['owner'] == "1") { echo " <td>J</td>\n"; } //{ echo " <td><img src='show_cards.php?tabel=".$tabel."&naam=".$array['naam']."'></td>\n"; } echo " </tr>\n"; } echo "<table>\n</form>\n"; ?>[/code:1:2dfb0420f8] Wat er nu eigelijk moet gebeuren is dat als de owner "1" is, dat ik hem dan op "" zet, en als ie "" is hij naar "1" wordt gezet. Ik krijg dit om een of andere reden niet voor mekaar. Ik had het idee dat dat zoiets moet zijn als[code:1:2dfb0420f8]if (isset($_POST['kaart'])) { $sql = 'SELECT * FROM '.$tabel.' '; $query = mysql_query($sql) or die (mysql_error()); while ($array = mysql_fetch_array($query)) { if ($array['owner'] == "") { $sql = 'UPDATE `'.$tabel.'` SET `owner` = "1" WHERE `id` = "'.$_POST['kaart'].'" '; $query = mysql_query($sql) or die (mysql_error()); } elseif ($array['owner'] == "1") { $sql = 'UPDATE `'.$tabel.'` SET `owner` = "" WHERE `id` = "'.$_POST['kaart'].'" '; $query = mysql_query($sql) or die (mysql_error()); }}}[/code:1:2dfb0420f8]maar dan krijg ik de foutmelding[code:1:2dfb0420f8]Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in e:\apacheserver\Apache\htdocs\cluedo\set_dwk_code.php on line 9[/code:1:2dfb0420f8] Hoe kan ik dit voorkomen?
  • Reagernd op die mysql error die je postte: doe eens een [code:1:a3261d647a] echo $sql; [/code:1:a3261d647a] Nadat je die gedeclareerd hebt. misschien is die $tabel leeg. Waar komt die variableel vandaan? Als die uit die URL komt middel ?tabel=bla moet je het even veranderen in [code:1:a3261d647a]$_GET['tabel'][/code:1:a3261d647a] Als $tabel leeg is dan is: [b:a3261d647a]SELECT * FROM[/b:a3261d647a] natuurlijk dan een foutieve query maar dan ik het wel weer raar waarom die mysql_error niets geeft de uitkomst van [b:a3261d647a]$sql[/b:a3261d647a] kun je eventueel eens proppen in phpmyadmin of zo en zien of die het wel accepteert
  • bij de if = "" - $sql=[code:1:d63717a734]UPDATE `dader` SET `owner` = "1" WHERE `id` = "2"[/code:1:d63717a734]Hij werkt nu alleen als where id=1; owner =1 (niet letterlijk, dan klopt het niet, ik weet). Ook als ik de ifs omdraai. Wat kan dit zijn? [b:d63717a734]EDIT:[/b:d63717a734] Ik zie nu dat de eerste het gedrag van de rest bepaald. MAW als de eerste op 1 staat gaat met een druk op de knop alles naar ""(elke knop appart), en is de eerste "" dan werkt de button als een aanvinker... Hoe fix ik dit?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.