Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHPMyAdmin&PHP] ophalen lukt wel, toevoegen niet.

Pagina: 1
Acties:

  • levik7
  • Registratie: April 2013
  • Laatst online: 18:20
Ik ben bezig met een startpagina met daarop links van mijn veel bezochte site's.
Ik loop nu tegen twee dingen aan, het eerste is dat ik geen dingen kan toevoegen aan de database.
Maar zoals de openingstitel al verklapt kan ik wel dingen ophalen uit de database.
Mijn eerste vraag is dus: wat doe ik fout? moet ik nog wat toevoegen?
Mijn tweede vraag is: Hoe kan ik de opgehaalde "url" klikbaar maken als url?
Dus in het eerste phpscript op line 28, de opgehaalde "url" klikbaar maken?

Let verder niet op de opmaak, want als deze twee dingen lukken ga ik pas aan CSS beginnen.
En als ik verder dingen fout doe(wat goed kan, programmeren is voor mij meer een hobby die ik af en toe is doe als ik wat leuks bedenk :+ ) of als dingen makkelijker kunnen(korter hoeft niet perse) laat ook maar weten!

TL;DR
Waarom kan ik niks toevoegen aan mijn PHPMyAdmin database?
En hoe maak ik de opgehaalde url op line 28 van het eerste script klikbaar, dus die in de tabel.


Dit word mijn startpagina, waar ik de URL's wil bekijken.
[code=php]
<html>
<link rel="stylesheet" href="styles.css" />
<head>
<title>urlbekijken</title>
</head>
<body>
<h1>Opgeslagen URL's</h1>
<table border ="20" cellpadding="8" class="products" class="legend">
<tr>
<strong>
<th>naam</th>
<th>url</th>
<th>Categorie</th>
</strong>
</tr>
<?php
$db = mysql_connect("localhost", "root", "usbw");
$db = mysql_select_db("po");
$query = "SELECT naam, url, type FROM pourl ORDER BY type";

$resultaat = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($resultaat))
{
?>

<tr>
<td><?php echo $row["naam"]; ?></td>
<td><?php echo $row["url"]; ?></td>
<td><?php echo $row["type"]; ?></td>

</tr>
<?php
}
?>
</table>


</body>
</html>

[/code=php]

Hier kunnen url's worden toegevoegd die de gegevens doorstuurt naar het volgende script.
[code=html]
<html>
<head>
<title></title>
</head>
<body>
<form name="toevoegen" action="urltoevoegen2.php"
method="post">
<fieldset>
<table>
<tr>
<td align="right">Naam:</td>
<td><input type="text" name="naam"
size="25"></td>
</tr>
<tr>
<td align="right">URL:</td>
<td><input type="text" name="url"
size="25"></td>
</tr>
<tr>
<td align="right">Categorie:</td>
<td><input type="text" name="type"
size="25"></td>
</tr>
<tr>
<td><input type="submit" value="Voeg URL
toe"></td>
<td><input type="reset" value="Wis
gegevens"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
[/code=php]

Dit script zou de url's in de database moeten toevoegen
[code=php]
<?php

// Connectie met de database maken
include("includes/connect.php");

// Ophalen van gegevens uit het formulier
$naam = mysql_real_escape_string($_POST['naam']);
$url = mysql_real_escape_string($_POST['url']);
$type = mysql_real_escape_string($_POST['type']);


// Invoegen van de gegevens in de tabel landen
$sql = "INSERT INTO pourl(id,naam,url,type)
VALUES('naam_id)','$naam','$url','$type')";
$resultaat = mysql_query($sql);


// Verbreken van de verbinding met de database
$verbreken = mysql_close($verbinding);

// Bevestigen dat de gegevens zijn opgeslagen
print "De gegevens van $url zijn opgeslagen in de database.";
?>
[/code=php]


De connect code die inlogt op PHPMyAdmin
[code=php]
<?php

$host = "localhost";
$gebruiker = "root";
$wachtwoord = "usbw";
$database = "test";

$verbinding = mysql_connect("$host", "$gebruiker", "$wachtwoord")
or die("Verbinding met de server mislukt vanwege:" . mysql_error());
$db = mysql_select_db("$database",$verbinding) or die("Database error: " . mysql_error());

?>
[/code=php]

Mijn MySQL instellingen:
Afbeeldingslocatie: http://s1.postimg.org/elefve2az/image.png

Afbeeldingslocatie: http://s1.postimg.org/rqty1hw6j/image.png


Ik weet het namelijk echt niet meer :?
Ik heb behoorlijk wat gegoogled, en heb ook verschillende dingen geprobeerd maar niks werkte :(

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Tip: $resultaat = mysql_query($sql); Hoe weet je dat dit is goed gegaan?

Sidenote: Volgens mij is Type een registered keyword?

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 21-11 18:12
Variabelen niet in quotes zetten bij de insert. Ook die haakjes bij de insert zijn mij een raadsel.

Zet error reporting aan.

PHP:
1
2
$sql = "INSERT INTO pourl(id,naam,url,type)  
        VALUES('naam_id)','$naam','$url','$type')";


Wordt

PHP:
1
2
$sql = "INSERT INTO pourl(id,naam,url,type)  
        VALUES('',$naam,$url,$type)";


De id kun je bij de insert leeg houden als je primary key gebruikt met auto encrement

Vanaf mijn tel gedaan dus sorry voor de fouten en corrects

[ Voor 71% gewijzigd door RedHat op 18-02-2014 15:15 ]


  • chronoz
  • Registratie: Maart 2010
  • Laatst online: 09-10-2022
Je krijgt toch normaal een foutmelding als iets niet werkt? Of krijg je een blanco pagina? Wat is het resultaat van het uitvoeren van het url-toevoegen script?

code:
1
<td><?php echo $row["url"]; ?></td>

Url kan gewoon met HTML:
code:
1
<td><a href="<?php echo $row["url"]; ?>"><?php echo $row["name"]; ?></a></td>

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dat haakje achter naam_id in je insertquery breekt de query. Je krijgt daar netjes een foutmelding van maar omdat je daar niet op controleert zie je die dus niet. Dit is redelijk simpel debugwerk. Als een query niet werkt is het eerste wat je doet de letterlijke query in PHPMyAdmin of iets vergelijkbaars dumpen om te kijken wat 'ie daar doet, of in elk geval zorgen dat je kijkt óf je query goed is gegaan en zo niet mysql_error() even afdrukken.

Programming FAQ - Debuggen: hoe doe ik dat?
RedHat schreef op dinsdag 18 februari 2014 @ 15:08:
Wordt

PHP:
1
2
$sql = "INSERT INTO pourl(id,naam,url,type)  
        VALUES('',$naam,$url,$type)";


De id kun je bij de insert leeg houden als je primary key gebruikt met auto encrement
Doe dan liever dit:
PHP:
1
2
$sql = "INSERT INTO pourl(naam,url,type)  
        VALUES('$naam', '$url', '$type')";

En die quotes horen wel degelijk thuis rondom strings. ;)

[ Voor 31% gewijzigd door NMe op 18-02-2014 15:17 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 21-11 18:12
De Vars in mijn query natuurlijk wel even buiten de quotes houden met een . Punt ertussen.

Maar zit op tel dus is wat lastig.

  • levik7
  • Registratie: April 2013
  • Laatst online: 18:20
Feanathiel schreef op dinsdag 18 februari 2014 @ 15:03:
Tip: $resultaat = mysql_query($sql); Hoe weet je dat dit is goed gegaan?

Sidenote: Volgens mij is Type een registered keyword?
Weet ik niet, maar dat heb ik van lesmateriaal van internet gehaald :+
En over je sidenote, volgens mij zou dat toch niet moeten uitmaken?
chronoz schreef op dinsdag 18 februari 2014 @ 15:09:
Je krijgt toch normaal een foutmelding als iets niet werkt? Of krijg je een blanco pagina? Wat is het resultaat van het uitvoeren van het url-toevoegen script?

code:
1
<td><?php echo $row["url"]; ?></td>

Url kan gewoon met HTML:
code:
1
<td><a href="<?php echo $row["url"]; ?>"><?php echo $row["name"]; ?></a></td>
Nee, er komt te staan:
De gegevens van www.tweakers.net zijn opgeslagen in de database. (tweakers omdat ik die eerder zelf al heb ingevuld)
Van het script:
code:
1
print "De gegevens van $url zijn opgeslagen in de database.";


En:
code:
1
<td><a href="<?php echo $row["url"]; ?>"><?php echo $row["name"]; ?></a></td>

Ik denk dat je dit bedoeld:
code:
1
 <td><a href="<?php echo $row["url"]; ?>"</a></td>

Als ik dat gebruik dan word het een leeg vakje, zonder tekst...
NMe schreef op dinsdag 18 februari 2014 @ 15:16:
Dat haakje achter naam_id in je insertquery breekt de query. Je krijgt daar netjes een foutmelding van maar omdat je daar niet op controleert zie je die dus niet. Dit is redelijk simpel debugwerk. Als een query niet werkt is het eerste wat je doet de letterlijke query in PHPMyAdmin of iets vergelijkbaars dumpen om te kijken wat 'ie daar doet, of in elk geval zorgen dat je kijkt óf je query goed is gegaan en zo niet mysql_error() even afdrukken.

Programming FAQ - Debuggen: hoe doe ik dat?

[...]

Doe dan liever dit:
PHP:
1
2
$sql = "INSERT INTO pourl(naam,url,type)  
        VALUES('$naam', '$url', '$type')";

En die quotes horen wel degelijk thuis rondom strings. ;)
Ohja, ik zie het!
Dat haakje stond daar inderdaad verkeerd, ik heb het aangepast naar zoals hoe jij het neer hebt gezet.
Maar het werkt nog niet :(
Ik ga even dat stukje lezen over debuggen, hopen dat de oplossing brengt.

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

levik7 schreef op dinsdag 18 februari 2014 @ 15:42:
[...]
Weet ik niet, maar dat heb ik van lesmateriaal van internet gehaald :+
En over je sidenote, volgens mij zou dat toch niet moeten uitmaken?
[...]
Op het moment dat er gebruik wordt gemaakt van een registered keyword, dan kan het zo zijn dat de database het statement niet snapt. Maar ik heb de documentatie er nog even op nageslagen, en het blijkt inderdaad niet geregisteerd te staan.

Voor de rest, je hebt het al een keer toegepast (mysql_error()). In combinatie met mysql_errno() != 0 zou je kunnen kijken of er een fout optrad in de laatste query (zie ook debugging). Het is dan aan jou om daar mee te doen wat je er mee wilt. Denk hierbij bijvoorbeeld aan het annuleren van het script op een goede manier, fout ergens melden, en de gebruiker van een nette melding voorzien. Succes toegewenst. :)

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
levik7 schreef op dinsdag 18 februari 2014 @ 15:42:
En:
code:
1
<td><a href="<?php echo $row["url"]; ?>"><?php echo $row["name"]; ?></a></td>

Ik denk dat je dit bedoeld:
code:
1
 <td><a href="<?php echo $row["url"]; ?>"</a></td>

Als ik dat gebruik dan word het een leeg vakje, zonder tekst...
Dus ga je debuggen...
http://www.php.net/var_dump
code:
1
var_dump($row)

En dan zie je dat de letters die je gebruikt uitmaken, ook al lijkt het zo verdomd op elkaar.
Hetgeen wat jij als suggestie geeft is geeneens valide HTML. Dus volgens mij mist er een beetje veel basiskennis HTML.

Lees het stukje van NMe nog een paar keer, daar staat een nuttige hint/functie in.

Owja, zoek ook een andere bron voor je lesmateriaal.

M.b.t. alle mysql_* functies:
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.
Als je nu nog moet beginnen, is het dus niet handig om deze functies te gebruiken. Nog los van alle security rants die in dit topic aan de orde kunnen komen :P

  • Cartman!
  • Registratie: April 2000
  • Niet online
Even tussendoor: er is niet zoiets als een "phpMyAdmin database", het is in dit geval gewoon een MySQL database en phpMyAdmin is slechts een tool om databases mee te beheren :)

  • levik7
  • Registratie: April 2013
  • Laatst online: 18:20
Miyamoto schreef op dinsdag 18 februari 2014 @ 16:01:
[...]

Dus ga je debuggen...
http://www.php.net/var_dump
code:
1
var_dump($row)

En dan zie je dat de letters die je gebruikt uitmaken, ook al lijkt het zo verdomd op elkaar.
Hetgeen wat jij als suggestie geeft is geeneens valide HTML. Dus volgens mij mist er een beetje veel basiskennis HTML.

Lees het stukje van NMe nog een paar keer, daar staat een nuttige hint/functie in.

Owja, zoek ook een andere bron voor je lesmateriaal.

M.b.t. alle mysql_* functies:

[...]

Als je nu nog moet beginnen, is het dus niet handig om deze functies te gebruiken. Nog los van alle security rants die in dit topic aan de orde kunnen komen :P
Hahaha, ja ik mis inderdaad wat basis HTML :+
Maar dat weerhoudt me er niet van om het te proberen!

Ik heb wat geprobeerd te frusten afgelopen dagen, maar ik kom er niet echt uit.
En jullie niveau is way to high, of te wel ik vind het moeilijk om jullie te volgen. Maar dat maakt niet uit!
Ik heb contact opgenomen met een vriend die er wat meer van weet dan ik en hij gaat me een avondje wat basic leren.
En ook gaf hij de site [link]http://www.codecademy.com/[/link], dus daar ga ik ook even wat lessen volgen :)

En wie weet dat ik als mijn niveau wat hoger is nog is een vraag stel ;)
Cartman! schreef op vrijdag 21 februari 2014 @ 11:52:
Even tussendoor: er is niet zoiets als een "phpMyAdmin database", het is in dit geval gewoon een MySQL database en phpMyAdmin is slechts een tool om databases mee te beheren :)
Ja, dat had ik al door doordat iedereen hier gewoon MySQL zei :+

  • levik7
  • Registratie: April 2013
  • Laatst online: 18:20
Het is me gelukt!
En wil je het jullie toch nog even laten weten. ;)

Ik heb dit:
code:
1
2
$sql = "INSERT INTO pourl(id,naam,url,type)  
        VALUES('naam_id)','$naam','$url','$type')";


Verandert voor dit:
code:
1
2
$sql = sprintf("INSERT INTO `po`.`pourl` (`naam_id`, `naam`, `url`, `type`) VALUES 
(NULL, '%s', '%s', '%s');", $naam, $url, $type);

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
Beiden doen hetzelfde, bekijk maar eens var_dump($sql);
Er zit één wezenlijk verschil in, waarvan ik benieuwd ben of je dat zelf ook door hebt.
NMe schreef op dinsdag 18 februari 2014 @ 15:16:
je query goed is gegaan en zo niet mysql_error() even afdrukken.

Programming FAQ - Debuggen: hoe doe ik dat?
PHP:
1
$resultaat = mysql_query($sql) or die mysql_error();


Dan had je het gevonden. (In je eerste code-block doe je het wel)

spoiler:
In de eerste gebruik je het veld 'id', in de tweede 'naam_id'. De tweede voldoet aan je tabelstructuur. De eerste is algemener geaccepteerd, dat wel.


Edit: Ik zie nu dat je eerste query sowieso fout gaat. Iets met haakjes.

[ Voor 5% gewijzigd door Miyamoto op 28-02-2014 20:17 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Daar waren we al een tijdje achter. :P
NMe schreef op dinsdag 18 februari 2014 @ 15:16:
Dat haakje achter naam_id in je insertquery breekt de query.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1