8791 sujets

Développement web côté serveur, CMS

Hello,

Je n'arrive pas à penser la logique avec les nouvelles méthode de php5. Je veux me mettre à jour mais j'ai besoin d'un petit coup de pouce !

L'idée:
- se connecter au serveur
- sortire toutes les entrée
- pour chaque entrée, envoyer un mail avec les infos de la personne
- se déconnecter du serveur

Le code qui fonctionnait bien php4:

// connexion serveur
$db = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('table',$db);
$sql = "request";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// boucle pour sortir ligne par ligne les éléments	
while($data = mysql_fetch_assoc($req)){
   $id = $data['id'];
   $nom = strtoupper($data['nom']);
   $prenom = $data['prenom'];
   $email = $data['email'];
   ...
   
   // Dans cet exemple j'avais besoin d'envoyer un mail aux membres de mon groupe
   $destinataire = str_replace("\n", "", str_replace("\r", "", $email));
   $dequi = 'Admin du forum';
   $dequiemail = str_replace("\n", "", str_replace("\r", "", 'adresse email'));
   $sujet = "[Dernier délai pour confirmer sa place à la soirée]";	
   $message_mail = "Mon message";

   // on defini l'en-tete						
   $headers  = 'MIME-Version: 1.0' . "\n"; 
   $headers .= 'Content-type: text/html; charset=UTF-8' . "\n";	
   $headers .= 'From: '.$dequi.' '.'<'.$dequiemail.'>'." \r\n";

   // envoie du mail
   if (mail($destinataire,$sujet,$message_mail,$headers)){
      echo("ok");
   }else{
      echo("pas ok");
   }
}// fin while
	
// on ferme la connexion au serveur
mysql_close();


Par contre comment passer ça en php5... La je lag.

// Connexion au serveur
$db = mysqli_connect('localhost', 'user', 'pass', 'table');  
if(mysqli_connect_errno()){
   printf("Échec de la connexion: %s\n", mysqli_connect_error());
   exit();
}
// Requête
$sql = "requête";
if ($stmt = mysqli_prepare($db, $sql)) {
   // Exécution de la requête
   mysqli_stmt_execute($stmt);
	
   // la je lag je sais pas comment refaire ma boucle... 
   // Je suis sur que c'est d'une simplicité enfantine
   // mais je n'arrive pas a formuler selon la logique de ces nouvelles commandes
      
   // Fermeture de la commande
   mysqli_stmt_close($stmt);
}


Si vous avez la moindre questions, je tacherai d'être le plus présent possible pour vous répondre au plus vite !

Merci infiniment d'avance pour votre aide !
Longue vie à alsacreations !

Charly
Modifié par Chum (22 Aug 2012 - 11:35)
Tu n'es pas obligé de passer par le smtp et la préparation de requête ^^

Tu te connecte :
$db = mysqli_connect('localhost', 'user', 'pass', 'table');  
if(mysqli_connect_errno()){
   printf("Échec de la connexion: %s\n", mysqli_connect_error());


Tu fais ta requête :
$ressource=mysqli_query ( $db , $req);


Tu la parcours :
while(mysqli_fetch_assoc ($ressource))
{
 //tout ce que tu veux
}


Tu fermes
mysqli_close ( $db );



J'avoue ne pas être fan perso des préparations de requête et autres boîtes noires ^^ (mais c'est personnelle et pas forcément justifiable).


Au passage, ce n'est pas une question de PHP4 et de PHP5, l'extension mysql_ marche encore, au moins jusqu'à php 5.3 ^^
Ok merci beaucoup Lothindil !

Mais avec la préparation de requête c'est également possible de le faire ?
Ca serait quoi le gros avantage ?

Merci beaucoup pour ces informations !!!

Charly
C'est sans doute tout aussi possible de le faire, il me semble que l'avantage de préparer les requêtes, c'est que PHP protège alors tes données pour éviter des inclusions sql problématiques.

Après, je suis pas fan des boîtes noires donc j'évite d'y toucher.

sans doute voire du coté de la fonction mysqli_stmt::fetch :

http://www.php.net/manual/fr/mysqli-stmt.fetch.php
Lothindil a écrit :
Au passage, ce n'est pas une question de PHP4 et de PHP5, l'extension mysql_ marche encore, au moins jusqu'à php 5.3 ^^


Mais elle est dépréciée et n'a plus été mise à jour depuis PHP4. Donc c'est bien une différence PHP4 / PHP5.
jb_gfx a écrit :


Mais elle est dépréciée et n'a plus été mise à jour depuis PHP4. Donc c'est bien une différence PHP4 / PHP5.

merci pour cette précision, je pensais qu'il s'agissait d'un changement au sein du php5 ^^ (Ce qui ne fait que me confirmer que la grande majorité des tutoriels sur le web racontent n'importe quoi ^^)