Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

php / sql scriptje aanpassen

Landzaat
14 antwoorden
  • Hallo,

    Wie kan mij helpen met het omzetten van de volgende PHP code:

    [code:1:c23a9bcaf6]
    <?php

    $sql = "select * from categories order by category";

    $result = mysql_query($sql ,$db);

    if ($myrow = mysql_fetch_array($result)) {

    do {
    printf("<tr>");
    printf("<td colspan=2><font size=2 face='Arial, Helvetica, sans-serif'><input type=radio name=cat value=%s> - %s</font></td>", $myrow["categoryid"], $myrow["category"]);
    printf("</tr>");

    } while ($myrow = mysql_fetch_array($result));

    }

    ?>[/code:1:c23a9bcaf6]

    Met deze code wordt er een query gemaakt naar een database met verschillende categorieën. Deze categorieën worden weergegeven in keuzerondjes. Dit wil ik graag wijzigen in een keuze lijst. Dit kost nl minder ruimte op mijn pagina. Alleen kom ik er niet goed uit.

    Wie kan mij hier mee helpen ?

    alvast bedankt.
  • Dit zou wel moeten werken denk ik.
    [code:1:293583545a]<?php
    $sql = "select * from categories order by category";
    $result = mysql_query($sql ,$db);
    if ($myrow = mysql_fetch_array($result)) {
    printf("<select name=cat>");
    do {
    printf("<option>%s</option>");
    } while ($myrow = mysql_fetch_array($result));
    printf("</select>");
    }

    ?>
    [/code:1:293583545a]
  • Bedankt voor je antwoord.
    Met een kleine aanpassing in jouw script werkt het goed.

    [code:1:ea43554ff8]

    <?php
    $sql = "select * from categories order by category";
    $result = mysql_query($sql ,$db);
    if ($myrow = mysql_fetch_array($result)) {
    printf("<select name=cat>");
    do {
    printf("<option>%s-%s</option>", $myrow["categoryid"], $myrow["category"]);
    } while ($myrow = mysql_fetch_array($result));
    printf("</select>");

    }
    ?> [/code:1:ea43554ff8]

    Alleen wordt het recept niet opgeslagen in de database.
    Ik krijg ook geen foutmelding.

    Het script wat er voor zorgt dat het recept opgeslagen wordt in de database is:
    [code:1:ea43554ff8]
    <?php include("adminheader.php"); ?>

    <?php include("logincheck.php"); ?>

    <?php

    $error = false;
    $errormessage = "";

    $recipetitle = $_REQUEST['recipetitle'];
    $directions = $_REQUEST['directions'];
    $ingred = $_REQUEST['ingred'];
    $cat = $_REQUEST['cat'];
    $pers = $_REQUEST['pers'];
    $bron = $_REQUEST['bron'];

    if (strlen($recipetitle) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. You did not enter a recipe title.</b><br>
    ";
    }

    if (strlen($directions) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. You did not enter any directions.</b><br>
    ";
    }

    if (strlen($ingred[0]) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. You did not enter any ingredients.</b><br>
    ";
    }

    if ($cat == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. You did not chose a category.</b><br>
    ";

    }

    if ($pers == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. Je het veld aantal personen niet ingevuld.</b><br>
    ";

    }

    if ($bron == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. Het veld bron is niet ingevuld.</b><br>
    ";

    }

    if (($_FILES['frmpicture']['type'] == "image/gif") || ($_FILES['frmpicture']['type'] == "image/jpeg") || ($_FILES['frmpicture']['type'] == "image/pjpeg")) {
    if ($_FILES['frmpicture']['type'] == "image/gif") {
    $imageext = "gif";
    } else {
    $imageext = "jpg";
    }

    copy ($_FILES['frmpicture']['tmp_name'], "..
    ecipepics/" . $jokeid . "." . $imageext);

    } else {
    $error = true;
    $errormessage .= "<li><b>Sorry. You did not enter a valid picture.</b><br>
    ";

    }

    ?>

    <p><font size=3 face="Arial, Helvetica, sans-serif"><b>Save new Recipe</b></font></p>

    <?php
    $recipeid = nextid("recipes", "recipeid");

    if ($error) {
    printf("<font face=arial size=-1>There was a problem creating the recipe. Please click on back in your browser to fix the problems listed below.<br><br>");
    printf($errormessage);
    } else {
    $recipedate = dbdate();

    $newdirections = ereg_replace("
    ", "<BR>
    ", $directions);

    $sql = "insert into recipes (recipeid, title, recipe, userid, rating, categoryid, aantalpersonenid, bronid, date, status) values ($recipeid, '$recipetitle', '$newdirections', 0, 0, $cat, $pers, $bron, '$recipedate', 'L')";
    $result = mysql_query($sql ,$db);

    for ($i = 0; $i < 16; $i++) {
    if ($ingred[$i] != "") {
    $sql = "insert into ingredients (recipeid, ingredient) values ($recipeid, '$ingred[$i]')";
    $result = mysql_query($sql ,$db);
    }
    }

    if (($_FILES['frmpicture']['type'] == "image/gif") || ($_FILES['frmpicture']['type'] == "image/jpeg") || ($_FILES['frmpicture']['type'] == "image/pjpeg")) {
    if ($_FILES['frmpicture']['type'] == "image/gif") {
    $imageext = "gif";
    } else {
    $imageext = "jpg";
    }

    copy ($_FILES['frmpicture']['tmp_name'], "..
    ecipepics/" . $recipeid . "." . $imageext);
    }

    printf("<p><font face=arial size=-1>The recipe has been added to the database.</font></p>");
    printf("<p><font face=arial size=-1><a href=login.php>Add another recipe</a></font></p>");

    }
    ?>[/code:1:ea43554ff8]
    Kan iemand aangeven wat ik hier nog aan moet veranderen.
    Het enige wat verandert is het rolmenutje i.p.v. keuze rondjes

    Alvast bedankt.










  • Heb je al gecontroleerd wat de waarden zijn die je terug krijgt na de submit? Even op strategische plekken een echo/print/var_dump plaatsen. Dan weet je of je überhaupt wat terug krijgt. En zo ja, dan kan je controleren of je checks goed zijn (en dus de flow door je script).

    Ik zou sowieso eerder kiezen voor $_POST ipv $_REQUEST. Dat vind ik persoonlijk netter.
  • Ik heb het probleem gevonden.
    In de vet gedrukt tekst zit het probleem.

    <?php
    $sql = "select * from categories order by category";
    $result = mysql_query($sql ,$db);
    if ($myrow = mysql_fetch_array($result)) {
    printf("<select name=cat>";);
    do {
    [b:d14cf1e4ef]printf("<option>%s-%s</option>", $myrow["categoryid"], $myrow[/b:d14cf1e4ef]["category"]);
    } while ($myrow = mysql_fetch_array($result));
    printf("</select>";);

    }
    ?>
    Als ik 2x %s neerzet werkt het niet. Zet ik het er een keer neer dan wordt het netjes toegevoegd. Het nadeel hiervan is dat als ik %s maar één keer neer zet is dat categoryid wordt weergegeven in het formulier en niet de naam. De tweede %s zorgt nl voor de naam.

    Hoe kan ik bovenstaand script zo aanpassen dat de naam van de category wordt weergegeven en het recept toegevoegd wordt aan de database ?
  • Zo?

    printf("<option value='%s'>%s</option>", $myrow["categoryid"], $myrow["category"]);

    Of (andere notatie):

    echo "<option value='", $myrow["categoryid"], "'>", $myrow["category"], "</option>";
  • Bedankt. Deze optie werkt goed:

    printf("<option value='%s'>%s</option>", $myrow["categoryid"], $myrow["category"]);
  • Nu zit ik alleen nog met het volgende:

    Als het recept in de database is opgeslagen moet het ook gewijzigd kunnen worden. Met onderstaand script wordt de category weergegeven in keuze rondjes. Ook dit script moet aangepast worden zodat het wordt weergegeven in een keuze lijstje. Hoe kan ik dit script het beste ombouwen ?

    [code:1:15abbf1a7c]
    $sql = "select * from categories order by category";

    $result = mysql_query($sql ,$db);

    if ($myrow = mysql_fetch_array($result)) {

    do {
    if ($categoryid == $myrow["categoryid"]) {
    $selectedtext = "checked";
    } else {
    $selectedtext = "";
    }

    printf("<tr>");
    printf("<td colspan=2><font size=2 face='Arial, Helvetica, sans-serif'><input type=radio name=cat value=%s $selectedtext> - %s</font></td>", $myrow["categoryid"], $myrow["category"]);
    printf("</tr>");

    } while ($myrow = mysql_fetch_array($result));

    }

    ?>[/code:1:15abbf1a7c]

    Alvast bedankt voor het meedenken.
  • Ik heb zelf nog even het e.a geprobeerd.
    Met onderstaande code krijg ik wel het juiste ID nummer van de category te zien maar nog geen naam. Hoe krijg ik nu de naam in de lijst te zien ?

    [code:1:afcfc5721a] $sql = "select * from categories order by category";
    $result = mysql_query($sql ,$db);
    if ($myrow = mysql_fetch_array($result)) {
    printf("<select name=cat>");
    do {
    if ($categoryid == $myrow["categoryid"]) {
    $selectedtext = "checked";
    } else {
    $selectedtext = "";
    }
    printf("<option value= $selectedtext > $categoryid </option>", $myrow["categoryid"], $myrow["category"]);

    } while ($myrow = mysql_fetch_array($result));
    printf("</select>");

    }

    ?> [/code:1:afcfc5721a]
  • [quote:2bf8c76851="Landzaat"]Ik heb zelf nog even het e.a geprobeerd.
    Met onderstaande code krijg ik wel het juiste ID nummer van de category te zien maar nog geen naam. Hoe krijg ik nu de naam in de lijst te zien ?
    [/quote:2bf8c76851]
    Als ik je poging bekijk, dan lijkt het er op dat je nog niet helemaal begrijpt hoe de printf-functie werkt. Ik raad je aan om eens de manual door te kijken voor een uitleg.

    Onderstaande komt waarschijnlijk meer in de buurt bij wat je wil.
    [code:1:2bf8c76851]
    <?php
    $sql = "select * from categories order by category";
    $result = mysql_query($sql ,$db);

    if ($myrow = mysql_fetch_array($result)) {
    printf("<select name='cat'>");
    do {
    if ($categoryid == $myrow["categoryid"]) {
    $selectedtext = " selected='selected'";
    } else {
    $selectedtext = "";
    }
    printf("<option value='%s'%s>%s</option>", $myrow["categoryid"], $selectedtext, $myrow["category"]);

    } while ($myrow = mysql_fetch_array($result));

    printf("</select>");
    }
    ?>[/code:1:2bf8c76851]
  • Hartelijk dank voor je antwoord Annie.
    Helaas had ik de afgelopen weken geen tijd om hier mee verder te gaan.
    Maar het werkt goed. En je hebt helemaal gelijk. Ik begreep de print functie niet helemaal goed. Nu begin ik het steeds beter te begrijpen.

    Alleen ben ik er nog niet helemaal.
    Ik heb nu een goed werkend formulier dat gegevens in een database opslaat zodra de bezoeker het formulier volledig in vult en verstuurd.

    Maar zodra hij één veld vergeet krijgt de bezoeker de melding dat er hij een bepaald veld vergeten is in te vullen. De bezoeker kan dan alleen maar op vorige drukken in de brouwser. Het vervelende hier van is dat alle andere gegevens weg zijn en dat hij alles opnieuw moet intypen. Dit kan niet de bedoelding zijn.

    alvast bedankt.

    Onderstaande code kijk of alle velden ingevuld zijn. Zodra dit het geval is wordt het opgeslagen in de database. Zo niet krijgt de gebruiker een foutmelding.

    Wat ik graag wil is dat alle juiste ingevulden velden opnieuw worden weergegeven met daain de tekst. Het veld wat de bezoeker niet ingevuld heeft moet uiteraard leeg blijven. Zodra hij dan weer op verzenden klikt dat alle gegevens incl. het plaatje opgeslagen worden. Wie kan mij een beetje op weg helpen ?

    [code:1:b2eb67202f]
    <?php

    if (logincheck($uid, $upwd)) {

    $error = false;
    $errormessage = "";

    if (strlen($recipetitle) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft het veld title niet ingevuld.</b><br>
    ";
    }

    if (strlen($directions) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft het veld bereidingswijze niet ingevuld.</b><br>
    ";
    }

    if (strlen($ingred) < 1) {
    $error = true;
    $errormessage .= "<li><b>Sorry. De Ingredienten is een verplicht veld</b><br>
    ";
    }


    if ($cat == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft nog geen Categorie gekozen</b><br>
    ";
    }

    if ($pers == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft het veld aantal personen niet gekozen.</b><br>
    ";

    }

    if ($bron == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft de bronvermelding niet gekozen.</b><br>
    ";

    }

    if ($land == "") {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft geen land van herkomst gekozen</b><br>
    ";

    }


    if (($_FILES['frmpicture']['type'] == "image/gif") || ($_FILES['frmpicture']['type'] == "image/jpeg") || ($_FILES['frmpicture']['type'] == "image/pjpeg")) {
    if ($_FILES['frmpicture']['type'] == "image/gif") {
    $imageext = "gif";
    } else {
    $imageext = "jpg";
    }

    copy ($_FILES['frmpicture']['tmp_name'], "recipepics/" . $jokeid . "." . $imageext);

    } else {
    $error = true;
    $errormessage .= "<li><b>Sorry. U heeft nog geen plaatje toegevoegd..</b><br>
    ";

    }

    if ($error) {
    printf("<font face='Arial, Helvetica, sans-serif' size=2>Er is een probleem ontstaan bij het maken van een Recept. Klik op de knop vorige in uw browser en probeer het opnieuw.<br><br>");
    printf($errormessage);
    } else {

    $sql = "select approve_content from admin_control";
    $result = mysql_query($sql ,$db);

    if ($myrow = mysql_fetch_array($result)) {

    do {
    $approve = $myrow["approve_content"];
    } while ($myrow = mysql_fetch_array($result));

    }

    if ($approve == "Y") {
    $status = "W";
    } else {
    $status = "L";
    }

    $recipeid = nextid("recipes", "recipeid");

    $recipedate = dbdate();

    $newdirections = ereg_replace("
    ", "<BR>
    ", $directions);

    $sql = "insert into recipes (recipeid, title, recipe, rating, categoryid, aantalpersonenid, bronid, landid, date, status, userid) values ($recipeid, '$recipetitle', '$newdirections', 0, $catid, $pers, $bron, $land, '$recipedate', '$status', $uid)";
    $result = mysql_query($sql ,$db);

    //for ($i = 0; $i < 16; $i++) {
    // if ($ingred = "") {

    $newingred = ereg_replace("
    ", "<li>
    ", $ingred);

    $sql = "insert into ingredients (recipeid, ingredient) values ($recipeid, '$newingred')";
    $result = mysql_query($sql ,$db);
    }


    if (($_FILES['frmpicture']['type'] == "image/gif") || ($_FILES['frmpicture']['type'] == "image/jpeg") || ($_FILES['frmpicture']['type'] == "image/pjpeg")) {
    if ($_FILES['frmpicture']['type'] == "image/gif") {
    $imageext = "gif";
    } else {
    $imageext = "jpg";
    }

    copy ($_FILES['frmpicture']['tmp_name'], "recipepics/" . $recipeid . "." . $imageext);
    }

    if ($approve == "Y") {
    printf("<p>Dit recept is toegevoegd en wacht op goedkeuring van de webmaster</p>");
    printf("<p>Nog een recept toevoegen ?<a href=addrecipe.php>Klik hier</a></p>");




    } else {

    }

    ?>[/code:1:b2eb67202f]
    Alvast bedankt











  • Je plakt het formelier er onder, met de volgende code:

    <input type="text" name="naam" value="<?php echo $naam ?>" />

    enzovoort, en dan wijs je de $naam de waarde toe, indien goed ingevult, geef je hem de geposte waarde, anders unset je hem. Zo simpel is dat.
  • oke ga ik proberen. En hoe werkt het dan met het plaatje ?
    Werkt dit op dezelfde manier ?
  • Je onthoud de url, in een variable oid. en dan 'print' je die weer in het veld waar die uitkomt doormiddel van value="<?php echo $plaatje_url ?>"

Beantwoord deze vraag

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