Foto's koppelen aan rest van invoer.

Status
Niet open voor verdere reacties.
Dank je, die if isset had ik inmiddels gevonden, Dank je...

krijg toch elke keer een error, doe ik iets fout in mijn query?

PHP:
				if (isset($_POST['submit'])){
$sql = "UPDATE reizen_aanbod SET titel='".$_POST['titel']."' , sterren='".$_POST['sterren']."',tekst='".$_POST['tekst']."', prijs='".$_POST['prijs']."', soort='".$_POST['soort']."', accommodatie='".$_POST['accommodatie']."', aanbieding='".$_POST['aanbieding']."', gebied='".$_POST['gebied']."', '' ";
		$result = mysql_query($sql) or die(mysql_error());
		echo "Opgeslagen";
		}	
    else{
	}

foutmelding is :
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 '''' at line 1
 
PHP:
gebied='".$_POST['gebied']."', '' ";

Je wil op het laatst iets invullen met niks, maar welk veld is dat? Je moet dus veldnaam='' doen. Of heb je dat per ongeluk gedaan?
 
Nou ik dacht , omdat daar op het laatst in de database nog een veld stond met foto, die ik hier dus (nog niet) kan bijwerken, hem wel moest benoemen, omdat ik bang was voor een row count fout.
Maar das onzin, want die heb ik hier helemaal niet gedeclareerd.:p ik begin het steeds meer te snappen, des te leuker het ook wordt...

De query doet het inmiddels, ALLEEN: nu update hij dus van alle reizen in de database de waarde die ik verander. Dus bijv ik verander Accommodatie in huis, dan is in de database elke reis in het veld accommodatie "huis"....

Moet ik jhier ook nog iets met het id doen?
 
Hmmm er moest dus idd WHERE id='".$_GET['nid']."' achter de query.:D

wat het gekke is dat de query niet stabiel wordt opgeslagen, moet een par keer klikken en wijzigen alvorens hij hem echt wijzigt???
 
Ja, die WHERE is natuurlijk wel belangrijk ja ;)

En wat bedoel je met niet stabiel? Als je iets verandert in je form, check dan eens je database of die verandert is. Zo ja, dan ligt het waarschijnlijk aan het ophalen van je waardes of iets dergelijks binnen je bewerkpagina(.php).

Aannemende dat je nid hebt, en gebruik maakt van fotofiles, heb je het volgende?

<form method="post" action="<?php echo '?nid=' . $_GET['nid']; ?>" enctype="multipart/form-data">

Dus wanneer je post, gaat hij gewoon terug naar zijn eigen bestand met de $nid erbij, dus als het goed is, wanneer je iets verandert refresht je pagina en zie je de waardes ook veranderen.
 
Niet stabiel is eruit, ik heb deze apart in php gezet, onderaan, hij stond eerst bij de eerste query in, vond ie niet zo leuk..

Maak hier nog geen geberuik van fotofiles, heb het eerst even basic gehouden, zodat ik eerst kan begrijpen wat ik doe;)...

Maar de refreh doet hij nog niet idd, hoewel hij in de database wel verandert...

EDIT:Moet 2 x klikken op sla op, dan zie ik de waarde pas veranderen.
 
Laatst bewerkt:
Nu include ik onderaan mn form een andere form, die het uploaden van foto's daarbij regelt, maar wanneer hij de 2e form weergeeft, krijgt de warde van die verzend knop, dezelfde als die van het form waar hij inzit.
Iemand een idee, hoe ik dit splitsen moet?
 
Een iets concretere probleemstelling zal helpen denk ik. Tevens moet je er eigenlijk voor zorgen dat je niet overal dezelfde naam meegeeft aan buttons.
 
Je hebt gelijk, die vraagstelling, was meer een "vaag"stelling ;)

Wat ik bedoel, in de backend(cases) heb ik dit:

PHP:
// Voeg Reis Toe aan Database
		case "maakreis":
	   	 include('includes/case2.php');
	 //Foto upload
       case "upload"  :
	   include($path.'functies/upload.php');
	   break;

die include ik dus samen in één case, maar wat gebeurt er, wanneer ik op opslaan druk bij de foto upload, dan gaat hij een reis aanmaken.Dus die knop doet hetzelfde als de knop bij de case2.php.

Hoe kan ik ervoor zorgen dat beide knoppen hun respectievelijke acties afzonderlijk uitvoeren, en er dan ook voor zorgen dat de foto die ik upload (de locatie daarvan) in de database terecht komt bij deze reis in het veld foto?

upload.php
PHP:
<?php
include($modx->config['base_path'].'manager/includes/config.inc.php');
//kijken of er een bestand is geselecteerd 
if(isset($_FILES['bestand'])) { 
    //als het bestand groter is dan 2048000 bytes(2MB) word hij niet toegelaten 
    if($_FILES['bestand']['size'] > 2048000) { 
        echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>2MB</b>"; 
    } else { 
        //kijken of het bestand wel een gif, png of jpg is 
        if($_FILES['bestand']['type'] == "image/gif" || $_FILES['bestand']['type'] == "files/pdf"  || $_FILES['bestand']['type'] == "image/pjpeg" || $_FILES['bestand']['type'] == "image/jpeg") { 
            //kijken of er een nieuwe naam aan het bestand is gegeven 
            if(empty($_POST['naam'])) { 
                $naam = $_FILES['bestand']['name']; 
            } else { 
                //strip de extensie om die achter de nieuwe bestandsnaam te plakken 
                $x = strrchr($_FILES['bestand']['name'], "."); 
                $naam = $_POST['naam'] . $x; 
            } 
           
			//variabele voor het ophalen van de image locatie
        $link = "http://localhost/modx/modx/assets/modules/reizen/foto/" . $naam;
            //het bestand uploaden met de nieuwe of oude naam 
            move_uploaded_file($_FILES['bestand']['tmp_name'], "/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam); 
            //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien 
            chmod("/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam, 0777); 
			echo "Bestand uploaden gelukt!<br />";
			echo "<img src=\"$link\" width=\"150\" height=\"150\">";
        } else { 
            echo "Het bestand is geen png, jpg of gif"; 
        } 
    } 
} else { 
    echo "Selecteer een plaatje"; 
} 

mysql_query("INSERT INTO `reizen_aanbod` (`foto`) VALUES ('$link')")or die("Ongeldige query: " . mysql_error());

?> 
_______________________________________________________________________________________________________________________________________________________________________________________________________________________
<style type="text/css">
<!--
.style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>

<form action="" method="post" enctype="multipart/form-data">
<H3> Foto's Plaatsen</H3>
<table width="100%" border="0">
  <tr>
    <td width="7%"><span class="style1">Bestand:</span></td>
    <td width="22%"><input type="file" name="bestand"></td>
    <td width="71%">&nbsp;</td>
  </tr>
  <tr>
    <td><span class="style1">Naam:</span></td>
    <td><input type="text" name="naam"></td>
    <td><span class="style1">Vul deze altijd in, voor google is dit beter!</span></td>
  </tr>
</table>
<input type="submit" name="verzend" value="Sla op">
</form>

Ik weet ik heb die $link nog niet weggehaald, ik weet even niet zo gauw hoe het anders moet.

EDIT: ik wilde ook graag meerdere foto's per reis laten zien, met een max. van 8, ik weet niet of dat de situatie nog anders maakt?(er hoeft ook niet specifiek een limit op van 8, maar ik weet dat er max 8 mogen zijn)
 
Laatst bewerkt:
Had 2 van je vragen voorheen al beantwoord, zal even kijken of ik ze wat concreter kan geven;

Je zegt dat je 2 formulieren beiden tegelijk verzenden. Dit komt 'waarschijnlijk' omdat je 2x dezelfde button naam hebt gegeven, en dus ook 2x if isset van de buttonnaam. Die 2x isset zal niet erg zijn, maar hij gaat het document langs voor die buttonnaam en doet zijn ding. Je hebt, naar het schijnt, twee keer de naam "verzend" gebruikt". -->

<input type="submit" name="verzend" value="Sla op">

Anyways, wil je meerdere foto's uploaden, dan zou ik er een functie van maken (van heel het upload gebeuren dan). Een ruwe begeleiding hierbij. Zet het volgende voorafgaande je upload code
PHP:
function uploadfoto($foto) {

Na het chmodden is de file gemoved en heb je de naam te pakken. Deze kun je dan terugsturen

PHP:
return $naam;

Je kunt middels een for loopje, velden generen met als value bijv. foto + i (waarbij i dan het getal is). Daarna kun je deze afvangen met het volgende;

PHP:
$foto1 = uploadfoto('foto1');

Waarbij achter uploadfoto de value van het input veldje staat. Uploadfoto is dan de functie die je aanroept, die je zojuist aan hebt gemaakt als het goed is.

Het schrijven naar de database is dan makkelijk, je hebt immers al de variabele foto1 etc., die schrijf je dan gewoon in je query.
 
Dank voor je uitleg, die knopnamen had ik al eens bekeken, die zijn niet hetzelfde.(bewust al gedaan).

Misschien inderdaad handiger in een functie, maar nu ik er en functie van heb gemaakt, hoe roep ik deze functie aan in de cases waar ik ze nodig heb?

werk ik daar dan met een require ('functions.php') ; (ervan uitgaande dat ik de hele upload zooi in een functie giet en deze functions.php noem.)

En dan roep ik hem in de case zo aan: $foto1 = uploadfoto('foto1'); ?
 
Laatst bewerkt:
Zie vorige post.

PHP:
$foto1 = uploadfoto('foto1');

Waarbij achter uploadfoto de value van het input veldje staat. Uploadfoto is dan de functie die je aanroept, die je zojuist aan hebt gemaakt als het goed is.

uploadfoto roep je hier dus aan. Je kunt een include plaatsen van upload.php waar je het nodig hebt.
 
Nu heb ik dus de function in een for loopje gegoten, maar nu zit ik met het volgende,
Dit is nu de function:
PHP:
<?php

include($modx->config['base_path'].'manager/includes/config.inc.php');
function uploadfoto($foto) {


//kijken of er een bestand is geselecteerd 
if(isset($_FILES['bestand'])) { 
    //als het bestand groter is dan 2048000 bytes(2MB) word hij niet toegelaten 
    if($_FILES['bestand']['size'] > 2048000) { 
        echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>2MB</b>"; 
    } else { 
        //kijken of het bestand wel een gif, png of jpg is 
        if($_FILES['bestand']['type'] == "image/gif" || $_FILES['bestand']['type'] == "files/pdf"  || $_FILES['bestand']['type'] == "image/pjpeg" || $_FILES['bestand']['type'] == "image/jpeg") { 
            //kijken of er een nieuwe naam aan het bestand is gegeven 
            if(empty($_POST['naam'])) { 
                $naam = $_FILES['bestand']['name']; 
            } else { 
                //strip de extensie om die achter de nieuwe bestandsnaam te plakken 
                $x = strrchr($_FILES['bestand']['name'], "."); 
                $naam = $_POST['naam'] . $x; 
            } 
           
			//variabele voor het ophalen van de image locatie
        $link = "http://localhost/modx/modx/assets/modules/reizen/foto/" . $naam;
            //het bestand uploaden met de nieuwe of oude naam 
            move_uploaded_file($_FILES['bestand']['tmp_name'], "/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam); 
            //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien 
            chmod("/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam, 0777); 
			return $naam;
						
	} else { 
            echo "Het bestand is geen png, jpg of gif"; 
        } 
} 
	} else { 
			echo "Selecteer een plaatje"; 
		} 
	}

mysql_query("INSERT INTO `reizen_aanbod` (`foto`) VALUES ('$link')")or die("Ongeldige query: " . mysql_error());

?> 
_______________________________________________________________________________________________________________________________________________________________________________________________________________________
<style type="text/css">
<!--
.style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>

<form method="post" enctype="multipart/form-data">
<H3> Foto's Plaatsen</H3>
<table width="100%" border="0">
  <tr>
    <td width="7%"><span class="style1">Bestand:</span></td>
    <td width="22%"><input type="file" name="bestand"></td>
    <td width="71%">&nbsp;</td>
  </tr>
  <tr>
    <td><span class="style1">Naam:</span></td>
    <td><input type="text" name="naam"></td>
    <td><span class="style1">Vul deze altijd in, voor google is dit beter!</span></td>
  </tr>
</table>
<input type="submit" name="verzend" value="Sla op">
</form>

zoals je ziet , is het form in plain html, dus niet in de function meegenomen, en het resultaat is dan (als verwacht) dat ik netjes 1 t/m 8 zie, maar geen invoer.

Hoe zorg ik ervoor dat het form (of liever eigenlijk één veldje(per $i) voor input naar voren komt?

hier roep ik hem aan helemaal bovenin de pagina:
PHP:
require 'upload.php';

de FOR loop helemaal onderaan de pagina:
PHP:
		for ($i = 1 ; $i <= 8; $i++) {
			$foto1 = uploadfoto('foto1');
			echo $foto1 + $i ;

			}
		
?>
 
Je kunt, zover ik weet, die variabelen niet maken in een for loopje. Wat ik zei/ bedoelde, was om de input velden via een for loopje te genereren.

PHP:
for($i = 1; $i <= 2; $i++) { 
Foto <?php echo $i; ?>
<input type="file" name="foto<?php echo $i; ?>" title="foto<?php echo $i; ?>">
<?php
}

En dan na je submit knopje, de variabelen afvangen.
PHP:
$foto1 = uploadfoto('foto1');
$foto2 = uploadfoto('foto2');
etc. etc.

Nog een ding. Aangezien je in de functie meegeeft $foto, moet je $_FILES[$foto] gebruiken, i.p.v. $_FILES['bestand'].

Je gebruikt tevens $_POST['naam'], weet niet of je hiermee de bestandsnaam bedoelt, ingegeven in het invulveld? Volgens mij gaat hij altijd naar de else, en kun je het hele if/ else ding eruit gooien. Ik praat over het volgend stukje code;

PHP:
if(empty($_POST['naam'])) { 
                $naam = $_FILES['bestand']['name'];
 
Nu je het zo zegt klink dat meer logisch, ik leer iedere dag weer bij:)
Dank je....

Hoe kan ik de loop nu telkens op een volgende regel laten beginnen, ik probeerde het met \n achter de echo, maar dan krijg ik een waarschuwing invalid T ns separator:O
 
Dat dacht ik in eerste instantie ook , maar op de een of andere manier, blijft het gewoon vrolijk naast elkaar staan. Wat zie ik over het hoofd:

HTML:
<form method="post" enctype="multipart/form-data">
<p> Foto's Plaatsen</p>
<table width="100%" border="0">
  <tr>
    <td width="7%"><span class="style1">Bestand:<br /></span></td>
	<?php for($i = 1; $i <= 8; $i++) { ?> 
<td width="22%">Foto <?php echo $i ;?>
<input type="file" name="foto  <?php echo $i ; ?>  " title="foto<?php echo $i; ?>"><br /></td>
  <?php } ?>

    <td width="71%">&nbsp;</td>
  </tr>
  <tr>
  <?php for($i = 1; $i <= 8; $i++) { ?> 
    <td><span class="style1">Naam <?php echo $i ; ?><br /></span></td>
    <td><input type="text" name="naam"><br /></td><?php } ?>
    <td><span class="style1">Vul deze altijd in, voor google is dit beter!</span></td>
  </tr>
</table>
<input type="submit" name="verzend" value="Sla op">
</form>
 
Ah nu zie ik waar die $_POST naam vandaan komt.. haha beetje laat.

Betreffende je loop. Je maakt voor de loop een <tr> aan, en sluit die ook na de loop. Dat betekend dat alles in een tabel row komt te staan. Zet dus de <tr> binnen de loop, dan komt het goed.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan