[RESOLU] chaine de caractère défini dans une variable

Eléphanteau du PHP | 13 Messages

18 mars 2013, 13:53

Bonjour,

Je voudrais arriver à écrire dans un fichier txt différent en fonction du contenu d'une variable $_POST qui est défini dans le formulaire par une liste déroulante

mon idée était la suivante:
<?php
if (isset ($_POST['nom']) AND ($_POST['dispo']) AND ($_POST['retour']) AND ($_POST['commentaire'])) //récupération des données
{
	$nom = $_POST['nom'];
	$verif = strpos($nom, 'Pierre');  

	if ($verif =='')
	{
	//on place le contenu dans une variable
	$contenu = '';
	$contenu .= $_POST['nom']."\r\n";
	$contenu .= $_POST['dispo']."\r\n";
	$contenu .= $_POST['retour']."\r\n";
	$contenu .= $_POST['commentaire'];
	//on ouvre le fichier et on écrit dedans
	$donnees = fopen("data1.txt", "w+");
	fwrite($donnees, $contenu);
	fclose($donnees);
	}
	else
	{
		echo "Faux";
	}
}
?>
mais ça marche pas car peu importe le nom sélectionner ça écrit dans le fichier ou alors je m'y prends mal

merci d'avance pour vos réponses

Eléphanteau du PHP | 20 Messages

18 mars 2013, 15:37

Hello,

...
$verif = strpos($nom, 'Pierre');

if ($verif =='')
...

$verif doit contenir une valeur booléenne, et non pas une valeur alpha comme ''.
(voir http://www.php.net/strpos)

ton test devrait être if($verif == true)
ou false, comme tu veux, mais pas ''.


affiche toi la valeur de $verif pour voir ce qu'elle contient.

A+
Quelques pages sur le php et mysql => http://blueguitarmaxime.blogspot.fr/

Eléphanteau du PHP | 13 Messages

18 mars 2013, 15:55

$verif affiche 0

en sachant cela, si je fais
if ($verif == 0)

ça devrait marcher, hors c'est pas le cas

tout comme si je mets True comme tu l'as suggérer
En faisant ça, il écrit automatiquement dans le fichier sans prendre compte le nom qui est différent

ViPHP
xTG
ViPHP | 7331 Messages

18 mars 2013, 18:54

Retourne la position numérique de l'occurrence relativement au début de la chaîne haystack (indépendamment de l'offset). Notez également que la position dans la chaîne commence à 0, et non pas à 1.

Retourne FALSE si l'occurrence n'a pas été trouvée.
if( $verif !== false){
  echo "l'occurence a été trouvée à la position $verif";
}

Eléphanteau du PHP | 13 Messages

19 mars 2013, 11:45

ok merci ça marche comme ça mais je m'oppose à un autre problème du coup

je pose donc une condition avec le if si la condition répond ça fait l'action jusque là je suis bon
viens ensuite le elseif où j'ai des soucis et ça marche pas
par contre si je met un simple else ça marche mais je sais pas mettre d'autre commande...comme mon discours ne semble pas clair, voici mon code
<?php
if (isset ($_POST['nom']) AND ($_POST['dispo']) AND ($_POST['retour']) AND ($_POST['commentaire'])) //récupération des données
{
	

		$nom = $_POST['nom'];
		$verif = strpos($nom, 'Pierre');   //on vérifie que le contenu de la variable contient ce qu'on veut

		if( $verif !== false)
		{
		//on place le contenu dans une variable
		$contenu = '';
		$contenu .= $_POST['nom']."\r\n";
		$contenu .= $_POST['dispo']."\r\n";
		$contenu .= $_POST['retour']."\r\n";
		$contenu .= $_POST['commentaire'];
		//on ouvre le fichier et on écrit dedans
		$donnees = fopen("data1.txt", "w+");
		fwrite($donnees, $contenu);
		fclose($donnees);
		}

		
		else if ($verif1= strpos($nom, 'Pascal')!== false)
		{
			//on place le contenu dans une variable
			$contenu = '';
			$contenu .= $_POST['nom']."\r\n";
			$contenu .= $_POST['dispo']."\r\n";
			$contenu .= $_POST['retour']."\r\n";
			$contenu .= $_POST['commentaire'];
			//on ouvre le fichier et on écrit dedans
			$donnees = fopen("data2.txt", "w+");
			fwrite($donnees, $contenu);
			fclose($donnees);
		}
}
?>

	

Eléphanteau du PHP | 13 Messages

19 mars 2013, 12:26

en fait je me cassais la tête, il fallait faire un switch

mais bon ça marche quand même pas
mon code ne doit pas être bon
<?php
if (isset ($_POST['nom']) AND ($_POST['dispo']) AND ($_POST['retour']) AND ($_POST['commentaire'])) //récupération des données
{
		$nom = $_POST['nom'];
	switch ($nom)
	 {
	case "Pierre":
		//on place le contenu dans une variable
		$contenu = '';
		$contenu .= $_POST['nom']."\r\n";
		$contenu .= $_POST['dispo']."\r\n";
		$contenu .= $_POST['retour']."\r\n";
		$contenu .= $_POST['commentaire'];
		//on ouvre le fichier et on écrit dedans
		$donnees = fopen("data1.txt", "w+");
		fwrite($donnees, $contenu);
		fclose($donnees);
	break;

	
	case "Pascal":
			//on place le contenu dans une variable
			$contenu = '';
			$contenu .= $_POST['nom']."\r\n";
			$contenu .= $_POST['dispo']."\r\n";
			$contenu .= $_POST['retour']."\r\n";
			$contenu .= $_POST['commentaire'];
			//on ouvre le fichier et on écrit dedans
			$donnees = fopen("data2.txt", "w+");
			fwrite($donnees, $contenu);
			fclose($donnees);
	break;
				
	
	case "Paul":
				//on place le contenu dans une variable
				$contenu = '';
				$contenu .= $_POST['nom']."\r\n";
				$contenu .= $_POST['dispo']."\r\n";
				$contenu .= $_POST['retour']."\r\n";
				$contenu .= $_POST['commentaire'];
				//on ouvre le fichier et on écrit dedans
				$donnees = fopen("data3.txt", "w+");
				fwrite($donnees, $contenu);
				fclose($donnees);
	break;
	
		
	case "Jacques":
				//on place le contenu dans une variable
			$contenu = '';
			$contenu .= $_POST['nom']."\r\n";
			$contenu .= $_POST['dispo']."\r\n";
			$contenu .= $_POST['retour']."\r\n";
			$contenu .= $_POST['commentaire'];
			//on ouvre le fichier et on écrit dedans
			$donnees = fopen("data4.txt", "w+");
			fwrite($donnees, $contenu);
			fclose($donnees);
	break;
		
	case "Fred":
			//on place le contenu dans une variable
			$contenu = '';
			$contenu .= $_POST['nom']."\r\n";
			$contenu .= $_POST['dispo']."\r\n";
			$contenu .= $_POST['retour']."\r\n";
			$contenu .= $_POST['commentaire'];
			//on ouvre le fichier et on écrit dedans
			$donnees = fopen("data5.txt", "w+");
			fwrite($donnees, $contenu);
			fclose($donnees);
	break;
	}
	
}


?>
Si quelqu'un peut m'éclairer??

ViPHP
xTG
ViPHP | 7331 Messages

19 mars 2013, 14:29

Pourquoi répéter x fois le même traitement ?
if (isset ($_POST['nom']) AND ($_POST['dispo']) AND ($_POST['retour']) AND ($_POST['commentaire'])) //récupération des données
{
  $c_nom_fichier = array(
    'Pierre' => 'data1.txt',
    'Pascal' => 'data2.txt',
    'Paul' => 'data3.txt',
    'Jacques' => 'data4.txt',
    'Fred' => 'data5.txt'
  );

  // on vérifie que la personne existe
  if( array_key_exists($_POST['nom'], $c_nom_fichier) === true ){

    //on place le contenu dans une variable
    $contenu = '';
    $contenu .= $_POST['nom']."\r\n";
    $contenu .= $_POST['dispo']."\r\n";
    $contenu .= $_POST['retour']."\r\n";
    $contenu .= $_POST['commentaire'];
    //on ouvre le fichier et on écrit dedans
    $donnees = fopen($c_nom_fichier[$_POST['nom']], "w+");
    fwrite($donnees, $contenu);
    fclose($donnees);
  }else{
    echo 'Erreur : ce nom ne possède aucun fichier attribué.';
  }
}

Eléphanteau du PHP | 13 Messages

19 mars 2013, 15:05

merci je l'avais pas pensé comme ça

mais je débute hein :wink: