afficher un id entrer

Eléphanteau du PHP | 17 Messages

12 janv. 2011, 23:36

Bonsoir,
Alors je viens pour mon script de partenaires (qui marche parfaitement ). Enfin, je suis là pour poser une petite question. L'utilisateur enregistre son site, logo etc.. Ensuite il peux copier-coller le code HTML pour les hits d'entré. Mais comment lui afficher le lien (il est comme ça : http://micro-jeux.fr/partenaires/entre.php?id=)
en lui donnant le bon id. J'avais penser faire une requête qui prendrais son id. Mais comme c'est sur la même page que la requête d'insertion dans la base...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 janv. 2011, 23:49

salut,


si le sgbd est mysql tu peut utiliser mysql_last_insert_id() pour récupérer le dernier id inséré et donc générer ton lien.
utilise htmlentities pour afficher le lien sans qu'il soit interprété par le navigateur ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 17 Messages

12 janv. 2011, 23:57

Merci pour la réponse, cependant j'obtiens une erreur.
Fatal error: Call to undefined function mysql_last_insert_id() in C:\Users\samuel\EasyPHP5.2.10\www\micro-jeux\partenaires\index.php on line 51
Voici mon code :
<?php
include('includes/haut.php');
include ('includes/menu.php');
include ('includes/menu-membre.php');
if(!isset($_POST['nom'])) {
?>
<div id="texte"><div id="overflow">
								<div class="cadre"><div class="titre_cadre">Partenaire</div><div class="marge_interne">
<!-- Début de la zone de texte -->
Inscrivez votre site : <br>
<form method="post" action="">
<p><label for="nom">Nom du site</label>
<input type="text" name="nom" id="nom" /></p>
<p><label for="pass">Mot de passe</label>
<input type="password" name="pass" id="pass" /></p>
<p><label for="url">url du site</label>
<input type="text" name="url" id="url" /></p>
<p><label for="url_logo">url du logo</label>
<input type="text" name="url_logo" id="url_logo" /></p>
<p><label for="description">Description du site</label><br>
<textarea name="description" id="description" rows="10" cols="40"></textarea></p>
<p><label for="bots">Anti-bots : <img src="http://www.micro-jeux.fr/styles/img/anti_bots.png" /></label>
<input type="text" name="bots" id="bots" /></p>
<input type="submit" name="valider" value="valider" />
</form>
<?php
}
else {
	$message='';
	//verification du nom
	if (empty($_POST['nom']) || empty($_POST['url']) || empty($_POST['url_logo']) || empty($_POST['description'])) //Oublie d'un champ
    {
	$message = 'Veuillez remplir tous les champs. <a href="">retour</a>';
	}
	else {
	//system anti bots
		if($_POST['bots'] != "7") {
		$message = 'Le resultat ne corespond avec celui de l\'anti-bots. <a href="">retour</a>';
		}
		else{
			$ip = get_ip();
			$query=$db->prepare('INSERT INTO partenaires(nom_site, mot_de_passe, url_site, url_logo, description, ip) VALUES (:nom, :pass, :url, :logo, :description, :ip)')or die(print_r($db->errorInfo()));
			$query->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR);
			$query->bindValue(':pass', $_POST['pass'], PDO::PARAM_STR);
			$query->bindValue(':url', $_POST['url'], PDO::PARAM_STR);
			$query->bindValue(':logo', $_POST['url_logo'], PDO::PARAM_STR);
			$query->bindValue(':description', $_POST['description'], PDO::PARAM_STR);
			$query->bindValue(':ip', $ip, PDO::PARAM_STR);
			$query->execute();
			$query->closeCursor();
			$id = mysql_last_insert_id();

		$message = 'Votre site à bien était enregistrer. Voici vos informations :<br />
		Identifiants : <strong>'.$_POST['url'].'</strong><br />
		Mot de passe : <strong>'.$_POST['pass'].'</strong><br />
		Gardez ces informations pour avoir accés au modifications.<br />
		<span style=\"color : gold\">Mettez notre logo sur votre site. Copier-coller le code HTML pour pouvoir être pris en compte dans le classement. Toutes fois, seul vos visiteurs seront enregistré au cliques. Vous ne serait pas pris en compte en cliquant sur le logo de votre site.</span><br />
		<fieldset>'.htmlentities('<a href="entre.php?id='.$id.'"><img src="'.$_POST['url_logo'].' /"></a>').'';
		}
	
	}
	echo $message;
}
?>
<!--fin de la zone de texte -->

								</div></div>
							</div></div>

							<div id="clear_both"></div>

						</div>
					</div>

				</div></div>
				<div id="CBG"></div><div id="CBD"></div><div id="BB"></div>

			</div>

		</div>
<?php 
include ('includes/footer.php');?>
J'utilise bien mysql

Eléphanteau du PHP | 17 Messages

13 janv. 2011, 00:23

désolé du double-post. Mais après une recherche je me suis rendu compte que avec PDO il fallait utiliser PDO::lastInsertId...
Et cette fonction, je ne sais pas l’utiliser, ni même où l'insérer exactement dans le code.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 janv. 2011, 01:10

ha ben wé si tu dit pas tout ;)

$query->execute();
$query->lastInsertId();

y a des exemples dans la doc http://www.php.net/manual/fr/pdo.lastinsertid.php (dans les commentaires).

je te conseil la lecture de tuto sur la poo http://phpdebutant.org/article42.php et les deux suivants ;)


@+
Il en faut peu pour être heureux ......