Générer un id aléatoire + récupération de l'id

Mammouth du PHP | 687 Messages

26 nov. 2015, 15:53

Bonjour à tous,

je souhaite pouvoir récupérer la valeur de l'id_message qui est envoyée à mon sql pour pouvoir l'inclure dans un lien hypertext :

voici mon codage (quelques parties) :
$id_message = stripslashes($_POST['id_message']);
//-------------------- generer le fichier source_.html --------------------------
	 if (isset($_POST[elm1])) 
	{
		$source = 'carte_prol';
		$extension = '.html';
		$elm1 = stripslashes($_POST[elm1]);
		$f = $source.$id_message.$extension;
		$text = "$elm1";
		
		$handle = @fopen("$f","w");
		// regarde si le fichier est accessible en écriture
		  if (is_writable($f)) 
		 {
		// Ecriture
		    if (fwrite($handle, $text) === FALSE) 
		   {
		      echo 'Impossible d\'&eacute;crire dans le fichier '.$f.' Faire un chmod 644 sur ce fichier.<br>';
		      exit();
		   }
		    fclose($handle);                
		  }
	} 
// ----------------------------------------------------------------------------------------


$id_message = round(rand(0, time())/500000);

//c'est une mise a jour des donnees de Newsletter
 $conn_message = db_connect();
 $sql_message = "insert into prol_messages values ('$id_message', '$message_carte', '$mail', '$quadrir')";
 $result_message = @mysql_query($sql_message, $conn_message);
A chaque enregistrement dans ma base, un $id_message est généré aléatoirement et je souhaiterait pouvoir le récupérer à chaque insert de manière à pouvoir générer un url $f.

Merci par avance pour votre aide.
Cordialement,

Mammouth du PHP | 2703 Messages

26 nov. 2015, 16:26


Mammouth du PHP | 687 Messages

26 nov. 2015, 17:44

Bonjour et merci pour ta réponse.

Concrètement que dois-je faire?
Merci par avance.

Cordialement,

ynx
Mammouth du PHP | 586 Messages

26 nov. 2015, 18:26

Salut,

La fonction mysql_insert_id() ne pourra pas fonctionner ici puisqu'il ne s'agit pas d'un identifiant en AUTO_INCREMENT.

Mais je ne comprend pas bien où est ton problème de récupération de cet identifiant puisque c'est toi qui le génère dans la variable $id_message, il est donc déjà à ta disposition.
Si c'est pour le récupérer sur une autre page, tu dois pouvoir faire une requête SELECT sur le dernier élément de ta table pour le récupérer.
Peux tu stp nous donner plus de précision ?

Bonne journée

Mammouth du PHP | 687 Messages

27 nov. 2015, 11:34

Bonjour,

En fait je souhaite qu'à chaque INSERT dans la BDD qu'un lien soit généré contenant $id_message.
Donc si je fais 3 INSERT en même temps dans mon sql, alors 3 liens sont générés avec les 3$id_messages qui auront été insérés dans la base.

Merci par avance.
Cordialement,

ynx
Mammouth du PHP | 586 Messages

27 nov. 2015, 17:53

Désolé mais je ne comprend toujours pas ce qui te bloque.
Où veut tu générer ces liens ? Sur la même page à la suite de la requête insert ou sur une autre page ?
Sous quel forme veux tu générer ces liens ? Peux tu nous montrer ce que tu as essayé de faire ?

Mammouth du PHP | 687 Messages

27 nov. 2015, 18:52

Je souhaite créer un fichier HTML de ce type :
//-----------------------------------------------------------------------------------------
//echo strtolower($quadri_courtier);
 $id_message = stripslashes($_POST['id_message']);
//-------------------- generer le fichier source_newsletter.html --------------------------
	 if (isset($_POST[elm1])) 
	{
		$source = 'carte_de_voeux';
		$extension = '.html';
		$elm1 = stripslashes($_POST[elm1]);
		$f = $source.$id_message.$extension;
		$text = "$elm1";
		
		$handle = @fopen("$f","w");
		// regarde si le fichier est accessible en écriture
		  if (is_writable($f)) 
		 {
		// Ecriture
		    if (fwrite($handle, $text) === FALSE) 
		   {
		      echo 'Impossible d\'&eacute;crire dans le fichier '.$f.' Faire un chmod 644 sur ce fichier.<br>';
		      exit();
		   }
		    fclose($handle);                
		  }
	} 
// ----------------------------------------------------------------------------------------
Voici ce que j'ai fait :
<?php

//--------les includes des fonctions permettent le bon fonctionnement du site-------------- 
include "include_fns.php";
//-----------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------
//permet de savoir si le groupe a le droit d'acces a ce fichier
$fichier = "Newsletters";
$module_autoriser = rech_enreg_modules($groupe, $fichier);

 if ($module_autoriser)
{
//-----------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------
	//si l'administrateur n'a pas de session il est impossible d'afficher la page 
 if (!$_SESSION["administrateur"] && !$_SESSION["groupe"]) {
    	echo "<div id=\"message\">".ACCES_PAGE_INTERDITE." !<br />";
       	echo "<a href=\"index.php\">".RETOUR."</a></div><br />";
//-----------------------------------------------------------------------------------------

//--------------------- affichage du bas de page et quitte le programme -------------------
	 include "bas.php";
	 exit();
 }
//-----------------------------------------------------------------------------------------
 else {
//------------------------------ si le fichier doit etre supprimer ------------------------
	$fichier = $_POST[fichier];
	if (isset($fichier)) {
		@unlink("$fichier");
	}
//-----------------------------------------------------------------------------------------

//----------- recuperation de la variable mail par la methode GET -------------------------
   	$mail = $_GET['mail'];
	if (isset($_GET['mail'])) {
//---------------- supprimer l'adresse mail dans la table newsletter ----------------------
		$conn = db_connect();
		$sql = "delete from ".NEWSLETTER." where mail = '$mail'";
		$result = mysql_query($sql, $conn);
		echo "<meta http-equiv=\"refresh\" content=\"0;url=$_SERVER[HTTP_REFERER]\" />";
	}

//-----------------------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////
//RECHERCHE ADMINISTRATEUR
////////////////////////////////////////////////////////////////////
 $conn = db_connect();
  $sql_user = "SELECT * FROM ".ADMIN." WHERE username = '$administrateur'"; 
  $result_user = mysql_query($sql_user, $conn);
   while ($rech_utilisateur = @mysql_fetch_array($result_user)) {
	   $quadri_courtier = $rech_utilisateur['quadri_courtier'];
	  // echo $rech_utilisateur['quadri_courtier'];
   }
   

 
//------------------------------------------------------------------------------------------
//affiche N inscrit dans le formulaire newsletter 
$nbr_inscrit = rech_enreg_limite_newsletter();

if (!isset($_GET['debut'])) $_GET['debut'] = 0;

	$nb_affichage_par_page = 30;
	$debut = $_GET['debut'];

	$conn = db_connect();
	$sql = "select * from ".NEWSLETTER." where quadri_courtier ='$quadri_courtier' AND annuler !='1' order by mail asc limit $debut, $nb_affichage_par_page";
	$resultat = mysql_query($sql, $conn) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
//-----------------------------------------------------------------------------------------

//-------------------------affichage du formulaire newsletter -----------------------------
?>
<div><h1>Envoyer une nouvelle carte de v&oelig;ux</h1></div> 
<div class="cadre_admin_page">

<!-- /////////////////Debut du formulaire d'envoi de la newsletter///////////////////////// -->
<center><img src="<?php echo $dir_image; ?>/info.png" alt="" /></center>
<center>
  <b><?php echo CONSEIL. " : </b><i>".MESSAGE_CONSEIL; ?>.</i> 
</center>
<?php
//-----------------------------------------------------------------------------------------
	// La barre de navigation
	echo "<div class=\"contenu\">";
	echo "Nombre d'inscrits (global): $nbr_inscrit &nbsp;&nbsp; ".barre_navigation($nbr_inscrit, $nb_affichage_par_page, $debut, 3)."";
	echo "</div>";
//-----------------------------------------------------------------------------------------
//echo strtolower($quadri_courtier);
 $id_message = stripslashes($_POST['id_message']);
//-------------------- generer le fichier source_newsletter.html --------------------------
	 if (isset($_POST[elm1])) 
	{
		$source = 'carte_de_voeux';
		$extension = '.html';
		$elm1 = stripslashes($_POST[elm1]);
		$f = $source.$id_message.$extension;
		$text = "$elm1";
		
		$handle = @fopen("$f","w");
		// regarde si le fichier est accessible en écriture
		  if (is_writable($f)) 
		 {
		// Ecriture
		    if (fwrite($handle, $text) === FALSE) 
		   {
		      echo 'Impossible d\'&eacute;crire dans le fichier '.$f.' Faire un chmod 644 sur ce fichier.<br>';
		      exit();
		   }
		    fclose($handle);                
		  }
	} 
// ----------------------------------------------------------------------------------------

//------------------------ fichier se trouvant sur le serveur -----------------------------
	$fichier_serveur = 'source_newsletter.html';
	$elm1 = @file_get_contents($fichier_serveur);
//-----------------------------------------------------------------------------------------

//------------------------ deplacement automatique entre les pages ------------------------
 	if (($nbr_inscrit-30) >= $debut) {
		$debut += $nb_affichage_par_page;
	}
//-----------------------------------------------------------------------------------------
	//coche ou decoche les cases par lot de 30
	if (isset($_GET['cocher'])) {
		$cocher = "checked";
	}
	if (isset($_GET['decocher'])) {
		$decocher = "false";
	}
//-----------------------------------------------------------------------------------------
?>
<table align="center" border="0" width="100%" cellspacing="1" cellpadding="1" class="bordure">
<tr>
  <td class="fond">
<form method="post" action="?debut=<?php echo $debut; ?>">


 <table border="0" align="center" cellspacing="1" cellpadding="1" width="100%">
<tr>
<?php
//-----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
// lecture des adresses mail dans la table newsletter
  //initialisation du compteur
  $compteur = 0;

  while ($sql = mysql_fetch_array($resultat)) {

	if ($compteur % 3 != 0) {
          echo "<td class=\"fond\"><a href=\"".$_SERVER['PHP_SELF']."?mail=$sql[mail]\" onclick=\"return confirm('Attention vous allez supprimer le mail $sql[mail]. Voulez vous continuer ?')\">&nbsp;<img src=\"$dir_image/drop.gif\" width=\"16px\" height=\"16px\" title=\"".SUPPRIMER." $sql[mail]\" border=\"0\" alt=\"\" /></a>&nbsp;<input style=\"width:10px;\" type=\"checkbox\" name=\"options[]\" value=\"$sql[mail]\" $cocher />".$sql[mail];
          echo "&nbsp;</td>";
	}
	else {
          echo "</tr><tr><td class=\"fond\"><a href=\"".$_SERVER['PHP_SELF']."?mail=$sql[mail]\" onclick=\"return confirm('Attention vous allez supprimer le mail $sql[mail]. Voulez vous continuer ?')\">&nbsp;<img src=\"$dir_image/drop.gif\" width=\"16px\" height=\"16px\" title=\"".SUPPRIMER." $sql[mail]\" border=\"0\" alt=\"\" /></a>&nbsp;<input style=\"width:10px;\" type=\"checkbox\" name=\"options[]\" value=\"$sql[mail]\" $cocher />".$sql[mail];
	  echo "&nbsp;</td>";
	}
          $compteur = $compteur + 1;
  }
  
//-----------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------

?>
<tr>
   <td colspan="3" class="fond">&nbsp;</td>
</tr>
</table>

<table border="0" align="center" cellspacing="1" cellpadding="1" width="100%">
<tr>
   <td>&nbsp;&nbsp;</td>
   <td>Ou <b style="color:#ee991a">Nouveau mail</b><b>*</b> :</td>
   <td><input type="text" name="mail" size="100" style="width:250px;" /> <b style="color:#ee991a">Nom</b><b>*</b> : <input type="text" name="mail" size="50" style="width:100px;" /> <b style="color:#ee991a">Prénom</b><b>*</b> : <input type="text" name="mail" size="50" style="width:100px;" /></td>
</tr>
<tr>
   <td>&nbsp;&nbsp;</td>
   <td><?php echo OBJET; ?></td>
   <td><input type="text" name="objet" size="50" value="Meilleurs voeux 2016 !" style="width:575px;" /></td>
</tr>
<tr>
    <td>&nbsp;&nbsp;</td>
    <td><?php echo TEXTE; ?></td>
    <td><textarea cols="90" rows="15" id="elm1" name="elm1"><?php echo $elm1; ?></textarea></td>
</tr>
<tr>
     <td colspan="3">&nbsp;&nbsp;</td>
</tr>
<tr>
     <td>&nbsp;&nbsp;</td>
     <th colspan="3"><input type="submit" value="<?php echo ENVOYER; ?>" onclick="return confirm('<?php echo MESSAGE_ENVOI_NEWSLETTER; ?> ?')" /></th>
</tr>
<tr>
   <td colspan="3">&nbsp;</td>
</tr>
<tr>
   <td colspan="3">&nbsp;</td>
</tr>
</table>  
  </form>
</td>
 </tr>
</table>

<p>
[   <a href="envoi_newsletter.php?cocher=cocher">Tout cocher</a>   ]
[   <a href="envoi_newsletter.php?decocher=decocher">Tout d&eacute;cocher</a>   ]
</p>
<p>
<form action="" method="post">
  		<input type="hidden" name="fichier" value="source_newsletter.html">
		
  		<input type="submit" value="Supprimer le texte">
 	</form>
</p>
<?php	
}	
//----------------- si les variables n'existe pas message en attente ----------------------
   if (!$_POST['objet'] || !$_POST['elm1'])
  {
    echo "<br /><center><img src=\"$dir_image/formu_nl.png\" alt=\"\" />&nbsp;&nbsp;<i>".MESSAGE_ATTENTE_ENVOI." ! </i></center>";
    echo "</div>";
    echo "<div class=\"cadre_admin_page\">";
    echo "<center><a href=\"menu_admin.php\">".RETOUR."</a></center>";
    echo "</div>";
//-----------------------------------------------------------------------------------------

//--------------------- affichage du bas de page et quitte le programme -------------------	
    include "bas.php";
    exit();	
  }
//-----------------------------------------------------------------------------------------


//---------recupere les coordonnees de l'administrateur pour envoyer le mail---------------
//si option ecommerce activee
/* $option_ecommerce = option_rech_ecommerce();
 if ($option_ecommerce[ecommerce] == "OUI") 
{
  $profil_societe = rech_coordonnees_record(1);
  $mail = $profil_societe[mail];
  $nom = $profil_societe[societe];
  $url = url_barre_adresse(); 
}
 else
{
  $aff_coord = rech_envoi_mail();
  $mail = $aff_coord[adresse_mail];
  $url = url_barre_adresse(); 
  $nom = $aff_coord[full_name];
} */
//-----------------------------------------------------------------------------------------

//------------------recuperation des variables et formatage--------------------------------
 $expediteur = $mail;
 $suject = stripslashes($_POST['objet']);
 $message = stripslashes($_POST['elm1']);
//-----------------------------------------------------------------------------------------

//------------------------------ courriel pret a partir -----------------------------------
 $header = "MIME-Version:1.0" . "\r\n" ;
 $header .= "Content-Type:text/html; charset=ISO-8859-1" . "\r\n";
 // more Header
 $header .= "From: $expediteur" . "\r\n" ;

$message = stripslashes($_POST['elm1']);
$message .= stripslashes($nom); 
$message .= stripslashes("<br /><br />Pour visiter le site : <a href='$url'>$url</a> <br /><br />");
$message .= stripslashes("Conformément à la loi 78-17 du 6 janvier 1978, dite loi Informatique et Libertés, vous disposez ");
$message .= stripslashes("d'un droit d'accès individuel, de rectification et de suppression de données nominatives ");
$message .= stripslashes("qui vous concernent. <br />");

//-----------------------------------------------------------------------------------------

//------------verifie si la case est cochee pour envoyer le mail en question---------------
 $options = $_POST['options'];
//-----------------------------------------------------------------------------------------

//----------------------------affichage de la liste des mails envoyes ---------------------
 if ($options) {
   echo "<br /><table border=\"0\" align=\"center\" cellspacing=\"0\" cellpadding=\"0\" width=\"760px\">";

  foreach ($options as $mail) {
//-------------recuperation du mail pour desabonnement a la newsletter--------------------
   $mesg = $message;
   $mesg .= stripslashes("Pour vous désabonner de cette Newsletter <a href=\"$url/desabonner.php?mail=$mail\">cliquez ici </a> <br>");
//----------------------------------------------------------------------------------------


 
 
 //---------------------------envoi des mails si possible ---------------------------------	 
     	if (@mail($mail, $suject, $mesg, $header)) {
	   echo "<tr><td>&nbsp;&nbsp;".NEWSLETTER_A_DESTINATION_DE." : $mail</td></tr>";

	   
//c'est une mise a jour des donnees de Newsletter
 $conn = db_connect();
 $sql = "update ".NEWSLETTER." set annuler='1' where mail='".$mail."'";
 $result = @mysql_query($sql, $conn);

//c'est une mise a jour des donnees de Newsletter
 $conn_message = db_connect();
 $sql_message = "insert into voeux_prol_voeux_messages values ('$id_message', '$message', '$mail', '$quadri_courtier')";
 $result_message = @mysql_query($sql_message, $conn_message);
	   
	} else {
     	echo "<tr><td>&nbsp;&nbsp;".IMPOSSIBLE_ENVOYER_MESSAGE."  : $mail</td></tr>";
//c'est une mise a jour des donnees de Newsletter
 $conn = db_connect();
 $sql = "update ".NEWSLETTER." set annuler='1' where mail='".$mail."'";
 $result = @mysql_query($sql, $conn);
 
 $message_carte = $_POST['elm1'];

//c'est une mise a jour des donnees de Newsletter
 $conn_message = db_connect();
 $sql_message = "insert into voeux_prol_voeux_messages values ('$id_message', '$message_carte', '$mail', '$quadri_courtier')";
 $result_message = @mysql_query($sql_message, $conn_message);
		    
   	  } 
//---------------------------------------------------------------------------------------- 
 } 
}
//-----------------------------------------------------------------------------------------
   echo "</table>";
   echo "</div>";
   echo "<div class=\"cadre_admin_page\">";
   echo "<center><a href=\"menu_admin.php\">".RETOUR."</a></center>";
   echo "</div>";	  
//----------------------------------- affichage du bas de page ----------------------------
  include "bas.php";
}
//-----------------------------------------------------------------------------------------
 else
{
	echo "<div id=\"message\">".ACCES_PAGE_INTERDITE." !<br />";
       	echo "<a href=\"index.php\">".RETOUR."</a></div><br />";
//-----------------------------------------------------------------------------------------

//---------------- affichage du bas de page et quitte le programme ------------------------
 include "bas.php";
 exit();
}
//-----------------------------------------------------------------------------------------
?>
Merci

Mammouth du PHP | 687 Messages

30 nov. 2015, 10:08

Bonjour,

Pas d'idée?
Merci par avance.

Eléphanteau du PHP | 19 Messages

30 nov. 2015, 15:31

Je crois que, pour que quelqu'un ait envie de répondre, tu devrais réduire le code exposé aux seuls fondamentaux de ton problème.

Et tu n'as pas répondu à la question de ynx.