Problème récupération variables php !

Fermé
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010 - 28 juin 2010 à 10:45
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010 - 30 juin 2010 à 15:45
Bonjour,

Apres des tentatives sans résultats je post un message ici parce que je ne vois pas comment faire.

Je voudrais récupérer des variables récupérées suite à des requêtes et utiliser les résultats pour envoyer un mail mais je n'arrive pas à les faire distinguer à la suite de mon code !


// Sélection précis'e de 2 listes déroulantes pour afficher un bouton 
if(  ($_SESSION['id'])and(@mysql_num_rows($result)>0)and(@$dat=="hlauj")  ){

$array = array(@$_POST['choixEnt']); 
foreach( $array as $value ){	
 
?>

// Affichage du bouton dans un formulaire 

<form name="mail" method="post"> 
<input type="hidden" name="test"/>
<input type="button" name="butt" value="Envoyer un mail à <?php echo $value ?>" onClick="if (confirm('Etes-vous sûre de vouloir envoyer un mail à <?php echo $value ?> ?')){document.mail.submit();}" /> 
</form>
<?php 
}

// Requête pour récupérer le mail destinataire 

	$requet = "SELECT DISTINCT EmailENTITE FROM ua
			WHERE ENTITE = '$value' ";
	$resu = mysql_query($requet) or die("Erreur dans l'extraction des informations\n");

	while ($raw= mysql_fetch_array($resu)){
		$email= $raw['EmailENTITE'];
	}

// Requête pour récupérer les infos utiles à envoyer

$req2 = "SELECT ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,notifications.DateUA,notifications.ETAT FROM ua
		JOIN notifications 
		ON ua.AdresseIP = notifications.AdresseIP
		AND notifications.ETAT='Hors Ligne' 
		AND notifications.DateUA='$today' 
		WHERE ENTITE='$value'";
$res2 = mysql_query($req2) or die("2-Fonction MailENTITES: Erreur SQL !\n" . $req2 . mysql_error());

	$netbios=array();
	$source=array();
	$ip=array();
	$date=array();
	$etat=array();
	$message="";
	
while ($row = mysql_fetch_array($res2)){ 
	$netbios[]	= $row['NomNetbios']; 
	$source[] 	= $row['SourceMAJ']; 
	$ip[]  		= $row['AdresseIP']; 
	$date   	= $row['DateUA']; 
	$etat[] 	= $row['ETAT']; 
	
// Boucle For pour écrire le message du mail 

	for($i=0;$i<sizeof($netbios);$i++){
		$message .= "\n
		\n Update Agent N° ".($i+1)."
		\nNOM DE L'UPDATE AGENT : $netbios[$i] 
		\nSOURCE	: $source[$i] 
		\nADRESSE IP	: $ip[$i]
		\nDATE DE VERIFICATION : $date
		\nETAT		: $etat[$i]   
		\n ";
	
	}
	}
	}
 
// Envoi du mail avec les données necessaire mais pas reconnues


if( (isset($_POST['test'])) ) 
{ 
	
$to = " ".$mp."\n";   
$subject = "Update Agent hors ligne\n"; 
$headers ='From: '.$mp.' '."\n";
$headers .=' '.$mp.' '."\n"; 
// $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
// $headers .='Content-Transfer-Encoding: 8bit'; 

 if( mail($to,$subject,$message,$_POST['test'],$headers) )
     { 
          echo 'Le message a bien été envoyé\n';
	?>
	<script type="text/javascript">alert('Mail envoyé avec succès à <?php echo $value ?>')</script>
	<?php
    } 
    else 
    { 
         echo 'Le message n\'a pu être envoyé'; 
    }  
}
 




quelqu'un aurait-il une solution s'il vous plaît ?
Merci d'avance .


A voir également:

8 réponses

Utilisateur anonyme
28 juin 2010 à 15:34
bonjour.
franchement j'vois que ca
http://www.siteduzero.com/tutoriel-3-14451-les-variables.html</code>


j'espère que ca peut t'aider mais a mon avis tu y est déjà aller ? :)
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
Modifié par liadea le 28/06/2010 à 16:18
En effet oui mais merci d'avoir ne serait-ce que regardé le problème.
Je pensais passer par une ou plusieurs fonction mais la non plus je ne vois pas vraiment comment faire pour récupérer les variables utiles !
0
Utilisateur anonyme
28 juin 2010 à 16:26
ouai non désolé j'suis pas expert en programmation
t'a qu'a aller sur "surLatoile" ou sur d'autre forums ...
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
29 juin 2010 à 08:08
UP ! SVP
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
29 juin 2010 à 13:27
quelqu'un aurait-il une idée ou un début de piste s'il vous plaît ?!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
29 juin 2010 à 15:18
j'ai trouvé une solution , si vous pouviez me dire juste si c'est correct ou pas pour un developpement?
Par contre je n'arrive pas à récupérer le message lorsqu'il y a plusieurs netbios.
Si quelqu'un à une proposition je suis preneuse.
Merci d'avance

<CODE>

//RECUPERATION DU MAIL EXPEDITEUR
$reqMailPriam = "SELECT mailPriam FROM mail";
$resMailPriam = mysql_query($reqMailPriam) or die("Erreur SQL reqMailPriam !\n" . $reqMailPriam . mysql_error());

while ($rowMailPriam = mysql_fetch_array($resMailPriam)){
$priamEmail= $rowMailPriam['mailPriam'];
}//Fin while reqMailPriam

// DETECTION DE L'ENTITE
$array = array(@$_POST['choixEnt']);
foreach( $array as $tite ){

//RECUPERATION DU MAIL DESTINATAIRE
$reqMailEntite = "SELECT DISTINCT EmailENTITE FROM ua
WHERE ENTITE = '$tite' ";
$resMailEntite = mysql_query($reqMailEntite) or die("Erreur dans l'extraction des informations reqMailEntite\n");

while ($rowMailEntite= mysql_fetch_array($resMailEntite)){
$emailEntite= $rowMailEntite['EmailENTITE'];

//RECUPERATION DES DONNEES UTILES AU MESSAGE DU MAIL
$reqDonnees = "SELECT ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='Hors Ligne'
AND notifications.DateUA='$today'
WHERE ENTITE='$tite'";
$resDonnees = mysql_query($reqDonnees) or die("Erreur SQL reqDonnees!\n" . $reqDonnees . mysql_error());


while ($row = mysql_fetch_array($resDonnees)){
$netbios[] = $row['NomNetbios'];
$source[] = $row['SourceMAJ'];
$ip[] = $row['AdresseIP'];
$date = $row['DateUA'];
$etat[] = $row['ETAT'];

// Modification de la date récupérée au format anglais pour la passer au format français
$dateFr = strftime("%d/%m/%Y", strtotime($row['DateUA']));

// BOUCLE EN FONCTION DE NETBIOS HORS LIGNE
for($i=0;$i<sizeof($netbios);$i++){

$messag = "\n
\n Update Agent N° ".($i+1)."
\nNOM DE L'UPDATE AGENT : $netbios[$i]
\nSOURCE : $source[$i]
\nADRESSE IP : $ip[$i]
\nDATE DE VERIFICATION : $dateFr
\nETAT : $etat[$i]
\n ";


}//fin while mailentite
}//fin while donnees
}//fin foreach entite
}//fin boucle for

//TEST SUR SELECTION PARTICULIERE POUR AFFICHER BOUTON
if( ($_SESSION['id'])and(@mysql_num_rows($result)>0)and(@$dat=="hlauj") ){

?>
// FORMULAIRE AVEC CHAMP CACHES
<form name="mail" method="post">
<table align="center">
<input type="hidden" name="form"/>

<input type="hidden" name="mailpriam" value="<?php echo $priamEmail; ?>"/>
<input type="hidden" name="eachentite" value="<?php echo $tite; ?>"/>
<input type="hidden" name="mess" value="<?php echo $messag; ?>"/>

//PROBLEME
<input type="hidden" name="netbio" value="<?php echo $netbios[$i]; ?>"/>



<input type="button" name="butt" value="Envoyer un mail à <?php echo $tite ?>" onClick="if (confirm('Etes-vous sûre de vouloir envoyer un mail à <?php echo $tite ?>')){document.mail.submit();}" />
</table>
</form>
<?php
}


if (isset($_POST['form'])) {
// and(isset($_POST['mailpriam']))and(isset($_POST['eachentite']))and(isset($_POST['mess'])) ){
echo $row['NomNetbios'];

$to = " ".$_POST['mailpriam']."\n";
$subject = "Update Agent hors ligne ".$_POST['eachentite']."\n";
$headers ="From: ".$_POST['mailpriam']."\n";


//PROBLEME POUR AFFICHER LE MESSAGE CELA N'AFFICHE QUE LE DERNIER HORS LIGNE DE LA LISTE
$message = $_POST['mess'];



if (mail($to,$subject,$message,$headers))
{
?>
<script type="text/javascript">alert('Mail envoyé avec succès à <?php echo $_POST['eachentite']; ?>')</script>
<?php
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}

}//fin if isset test


MERCI PAR AVANCE
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
30 juin 2010 à 08:29
UP ! SVP
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
Modifié par kij_82 le 30/06/2010 à 08:50
Bonjour,

Honnêtement, tu as un sérieux problème de codification.
Ca ne fonctionne pas pour la simple raison que tes fin de boucle, for, foreach, etc. ne correspondent pas à ce que tu as marqué dans ton code.
Enfin, cela ne gène pas puisque tu les ferme tous au même endroit.

Si ton affichage de plusieurs netbios ne fonctionne pas, peut-être te faut-il regarder pourquoi ? Par exemple (une piste), tu tente d'afficher un netbios par rapport à l'index $i. Mais $i fait référence à rien du tout puisque ta boucle for est déjà fermée lorsque tu arrive à ce niveau du code.

Bref, je te conseille fortement de regarder à nouveau des tutoriaux sur les bases de la programmation, sinon tes programmes ne feront pas les choses que tu souhaite.
Quand je dis bases, c'est gestion des boucles, balise ouvrantes / fermantes, etc.

A toi de corriger ton code après ça, bon courage.

ps: le prends pas mal hein, mais c'est toujours mieux de faire par soit même (surtout des erreurs aussi faciles et évidente que celle que tu as actuellement), ça permet de progresser plus vite plutôt qu'on te donne une solution toute faite.


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
30 juin 2010 à 09:16
Bonjour,

Merci , non je ne le prend pas mal du tout tu as entièrement raison je préfère aussi résoudre mes problèmes.
En ce qui concerne les accolade la oui je le sais elles ne sont pas fermées ou il faut mais je ne voyais pas ou les mettre .
Si j'ai posté c'est que après pleins de tests je ne vois vraiment pas.
Je continue à faire des modifs en espérant aboutir à quelque chose .

Merci encore
Bonne journée
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
30 juin 2010 à 11:29
Ce qu'il faut surtout c'est de ne pas faire des modifs dans l'espoir d'aboutir au résultat que tu souhaite.

Il faut que tu apprenne l'algorithmique je pense (cours d'algo), c'est primordiale en matière de conception / étude d'un programme. Et c'est ce qu'il semble finalement te manquer puisque tu le dis toi-même, tu sais pas où mettre quoi.
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
30 juin 2010 à 12:19
Je pense avoir fait les aménagements nécessaires en ce qui concerne les différentes boucles et fermetures d'accolades cependant en ce qui concerne le corps du message en fonction du nombre de netbios la je coince.

Merci pour tes conseils
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
30 juin 2010 à 14:07
post ton nouveau code je vais dire ce qu'il ne va pas
0
liadea Messages postés 127 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 30 juin 2010
30 juin 2010 à 14:20
$reqMailPriam = "SELECT mailPriam FROM mail";
$resMailPriam = mysql_query($reqMailPriam) or die("Erreur SQL reqMailPriam !\n" . $reqMailPriam . mysql_error());

while ($rowMailPriam = mysql_fetch_array($resMailPriam)){
$priamEmail= $rowMailPriam['mailPriam'];
}//Fin while reqMailPriam

$array = array(@$_POST['choixEnt']);
foreach( $array as $tite ){

$reqMailEntite = "SELECT DISTINCT EmailENTITE FROM ua
WHERE ENTITE = '$tite' ";
$resMailEntite = mysql_query($reqMailEntite) or die("Erreur dans l'extraction des informations reqMailEntite\n");


while ($rowMailEntite= mysql_fetch_array($resMailEntite)){
$emailEntite= $rowMailEntite['EmailENTITE'];

?>

<form name="mail" method="post">
<table align="center">
<input type="hidden" name="form"/>

<input type="hidden" name="mailpriam" value="<?php echo $priamEmail; ?>"/>
<input type="hidden" name="mailentite" value="<?php echo $emailEntite; ?>"/>
<input type="hidden" name="eachentite" value="<?php echo $tite; ?>"/>

<?php
}//fin while mailentite
}//fin foreach entite

if( ($_SESSION['id'])and(@mysql_num_rows($result)>0)and(@$dat=="hlauj") ){
?>
<input type="button" name="butt" value="Envoyer un mail à <?php echo $tite ?>" onClick="if (confirm('Etes-vous sûre de vouloir envoyer un mail à <?php echo $tite ?>')){document.mail.submit();}" />

<?php
}

$reqDonnees = "SELECT ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='Hors Ligne'
AND notifications.DateUA='$today'
WHERE ENTITE='$tite'";

$resDonnees = mysql_query($reqDonnees) or die("Erreur SQL reqDonnees!\n" . $reqDonnees . mysql_error());

while ($row = mysql_fetch_array($resDonnees)){
$netbios[] = $row['NomNetbios'];
$source[] = $row['SourceMAJ'];
$ip[] = $row['AdresseIP'];
$date = $row['DateUA'];
$etat[] = $row['ETAT'];

// Modification de la date récupérée au format anglais pour la passer au format français
$dateFr = strftime("%d/%m/%Y", strtotime($row['DateUA']));


for($i=0;$i<sizeof($netbios);$i++){

$messag = "\n\n\n
\n Update Agent N° ".($i+1)."
\nNOM DE L'UPDATE AGENT : $netbios[$i]
\nSOURCE : $source[$i]
\nADRESSE IP : $ip[$i]
\nDATE DE VERIFICATION : $dateFr
\nETAT : $etat[$i]
\n ";

?>

<input type="hidden" name="mess" value="<?php echo $messag; ?>"/>
<input type="hidden" name="netbio" value="<?php ($netbios[$i]); ?>"/>
</table>
</form>

<?php
}//fin boucle for
}//fin while donnees

if (isset($_POST['form'])) {

$to = " ".$_POST['mailentite']."\n";
$subject = "Update Agent hors ligne ".$_POST['eachentite']."\n";
$headers ="From: ".$_POST['mailpriam']."\n";

$message = " ".$_POST['mess']." ";

if (mail($to,$subject,$message,$headers))
{
?>
<script type="text/javascript">alert("Mail envoyé avec succès à <?php echo $_POST['eachentite']; ?>")</script>
<?php
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}

}//fin if isset form


je sais que j'ai besoin de la boucle for sur le netbios mais je ne vois pas comment l'appliquer pour le message.

Et si vraiment tu trouve que c'est du n'importe quoi je préfère que tu ne réponde pas plutôt que de m'en prendre plein la tête lol

Merci pour ton aide
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
30 juin 2010 à 14:49
ici:

<input type="hidden" name="mess" value="<?php echo $messag; ?>"/>
<input type="hidden" name="netbio" value="<?php ($netbios[$i]); ?>"/>
</table>
</form>

<?php
}//fin boucle for 


Tu ferme la table et le formulaire à l'intérieur de ta boucle -> pas bon.
Il faut que tu sorte de la boucle for ces instructions (mettre après fermeture donc)

En fait, il faut que tu ferme juste avant la fermeture du while suivant:

while ($rowMailEntite= mysql_fetch_array($resMailEntite)){ 


Puisque tu commence un formulaire à chaque itération de ce while.

Pour le reste je n'ai pas vraiment regardé, j'avoue que c'est un peu brouillon à mon gout :)
0